Cada vez mais, a programação de aplicações Android está em voga. Para que os leitores possam aprender e criaraplicações, iremos mostrar numa primeira fase o básico, os widgets. Para isso, terá que ter instalado o Android Studio, pois o curso irá ser todo realizado com ajuda dessa ferramenta. Após a instalação do mesmo, deverá ser criado um projeto novo e realizar os seguintes passos:
- Start a new Android Project -> Next
- Application Name: MyFirstApplication ->Next
- Choose API 15: Android 4.0.3 (IceCreamSandwich) ->Next
- Empty Activity -> Next
- Finish
O projeto android é criado imediatamente com muito material, como se pode ver na imagem anterior. As pastas essenciais para o tutorial de hoje são:
- pasta Java – é a pasta onde todo o código Java é guardado
- layout – irá guardar todos os ecrãs que poderemos utilizar no formato .xml
Para saber mais acerca da distribuição de pastas, leia o tutorial anterior aqui.
Programar Widgets
Existe uma grande variedade de widgets que podemos utilizar, tais como, “Button”, “TextView”, “ImageView”, entre outros. Para que possa aceder ao conteúdo e realizar operações sobre eles, devemos sempre instanciar um objecto do tipo deles e utilizar a função findViewById, como no exemplo a seguir:
// Para ir buscar o meu botão Button btn = (Button )findViewById(R.id.BUTTON_ID); // Para ir buscar a minha text view TextView tv = (TextView) findViewById(R.id.TEXT_VIEW_ID);
Layout com widgets:
Para que possa prosseguir com sucesso durante o tutorial, deverá ser utilizado no layout “activity_main.xml” o seguinte código (colocar dentro das tags “RelativeLayout”):
<LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:text="Nome:" android:id="@+id/textView" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/editName_txt" android:layout_alignParentTop="true" android:layout_toRightOf="@+id/textView" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Submeter Dados" android:id="@+id/btnSubmit" android:layout_below="@+id/editIdade_txt" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_marginTop="45dp"/> </LinearLayout>
Widgets e eventos:
Com o layout criado, devemos reparar que cada widget tem um ID. Para prosseguir no tutorial é importante esclarecer o seguinte:
- findViewById(int id) – Esta função vai buscar um tipo Object com o ID que lhe passarmos.
- Toast – Mostra uma mensagem no ecrã
Podemos ver o id que damos ao widget na linha do id:
<TextView (...) android:id="@+id/editName_txt" />
O nosso próximo objetivo é programar o comportamento do nosso botão quando clicamos nele. Existem duas formas de o programar. A primeira, é no ficheiro .xml dizer ao botão que no evento onClick ele terá de chamar a função submeterDados:
<Button (...) android:onClick="submeterDados"/>
De seguida, na MainActivity.java, devemos tratar essa função da seguinte forma:
public void submeterDados(View view) { // Vou submeter os dados mas, e se os dados estiverem vazios? // Como vou buscar o conteúdo da editText? EditText nome = (EditText)findViewById(R.id.editName_txt); if(nome.getText().toString() == "") return; Toast.makeText(getApplicationContext(), nome.getText().toString(), Toast.LENGTH_LONG); }
Uma segunda forma é programar o comportamento do botão dinamicamente. Para isso vamos acrescentar um segundo botão ao nosso layout:
(...) <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Botão Dinamico" android:id="@+id/btnDinamico"/> </LinearLayout>
Para terminar, no método onCreate da MainActivity.java acrescentar o seguinte:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button dinamico = (Button) findViewById(R.id.btnDinamico); dinamico.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { submeterDados(v); } }); }
Pode verificar que o comportamente de ambos os botões é exatamente o mesmo mas ambos foram codificados de formas completamente distintas.
Próximo tutorial: Utilização de Intents para passar de um ecrã para outro.