referências para os dois EditText, através do método findViewById.
public class BoaViagemActivity extends Activity {
private EditText usuario;
private EditText senha;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
61
3.1. LinearLayout
Casa do Código
usuario = (EditText) findViewById(R.id.usuario);
senha = (EditText) findViewById(R.id.senha);
}
}
Note que foi passado para o
findViewById
uma referência para
R.id.usuario e em seguida para R.id.senha. Essas são referências para
os EditText que criamos anteriormente na tela e demos o nome de usuario e
senha.
Com esses componentes recuperados, agora podemos descobrir qual é o texto
que está neles quando o método entrarOnClick for invocado:
public void entrarOnClick(View v) {
String usuarioInformado = usuario.getText().toString();
String senhaInformada = senha.getText().toString();
if("leitor".equals(usuarioInformado) &&
"123".equals(senhaInformada)) {
// vai para outra activity
} else{
// mostra uma mensagem de erro
}
}
}
No caso de falha na autenticação, deve-se exibir uma mensagem para o usuário, através do widget Toast, que serve para apresentar uma notificação rápida para o usuário, informando o resultado de alguma operação. É possível definir por quanto tempo a mensagem ficará visível, através de uma duração Toast.LENGTH_SHORT
ou Toast.LENGTH_LONG.
if("leitor".equals(usuarioInformado) &&
"123".equals(senhaInformada)) {
// vai para outra activity
}
else {
String mensagemErro = getString(R.string.erro_autenticao);
Toast toast = Toast.makeText(this, mensagemErro,
Toast.LENGTH_SHORT);
toast.show();
}
62
Casa do Código
Capítulo 3. Domine os principais elementos de Interface Gráfica
Repare que recuperamos a mensagem de erro em um arquivo strings.xml,
através de R.string.erro_autenticacao, ou seja, temos nesse arquivo uma
mensagem cujo nome é erro_autenticacao:
1 <?xml version="1.0" encoding="utf-8"?>
2 <resources>
3
<!-- mensagens padrão -->
4
5
<string name="erro_autenticacao">Usuário ou senha inválidos</string> 6 </resources>
A única coisa que falta agora é redirecionar o usuário para outra acti-
vity caso a autenticação seja feita corretamente.
Para isso, criaremos uma
DashboardActivity que vamos implementar nas próximas seções e falar que, ao
autenticar, essa activity será iniciada:
if("leitor".equals(usuarioInformado)
&&
"123".equals(senhaInformada)){
startActivity(new Intent(this,DashboardActivity.class));
} else {
String mensagemErro = getString(R.string.erro_autenticao);
Toast toast = Toast.makeText(this, mensagemErro,
Toast.LENGTH_SHORT);
toast.show();
}
3.2
RelativeLayout
O próximo passo é criar o layout e a atividade para exibir a tela de opções da nossa aplicação, o dashboard. Para esta tela, utilizaremos uma combinação do
LinearLayout, que acabamos de ver, com o RelativeLayout. É bastante co-
mum, e muitas vezes necessário, aninhar diversos tipos de layout.
O RelativeLayout, um dos mais poderosos e versáteis disponíveis na plata-
forma Android, permite posicionar um elemento em um local relativo a outro componente. É possível, por exemplo, posicionar uma imagem abaixo de um botão, que fica à esquerda de um TextView. Vamos criar um novo arquivo XML de layout chamado dashboard.xml. O objetivo é que tenhamos, além da tela de login, uma
nova tela com as ações que podemos fazer na aplicação, como na imagem 3.3.
63
3.2. RelativeLayout
Casa do Código
Figura 3.3: Tela de login e dashboard da aplicação
Para construirmos essa nova tela, vamos adicionar o RelativeLayout que
deve ocupar todo o espaço restante deixado pelo LinearLayout:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#333333"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/app_name"
android:textAppearance="?android:attr/textAppearanceLarge" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#015488">
64
Casa do Código
Capítulo 3. Domine os principais elementos de Interface Gráfica
<!-- Vamos adicionar elementos aqui -->
</RelativeLayout>
</LinearLayout>
Para representar cada opção da dashboard, vamos utilizar TextViews que serão
alinhados de forma relativa aos demais elementos na tela. Para posicionar o primeiro elemento da dashboard no canto superior esquerdo, incluiremos um TextView que define um tamanho de margem esquerda ( layout_marginLeft) e para o topo
(layout_marginTop).
Este elemento não possui nenhuma informação específica de layout relativo,
apenas de margens, mas servirá de referência para o próximo TextView. Este,
por sua vez, ficará no canto superior direito. Então, iremos colocá-lo ao lado direito do seu componente-pai (o próximo RelativeLayout), utilizando o atributo layout_alignParentRight=true. Também é preciso alinhar o seu topo com