O SDK Android fornece outras views interessantes para construção de telas. Neste tópico serão abordados: ProgressBar, que trata-se de uma barra de progresso para operações em andamento; Spinner para apresentar dados na direção top-down e RadioGroup que permite criar um grupo mutualmente exclusivo de opções.
Exemplos práticos
-
colors.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="black">#FF000000</color> <color name="white">#FFFFFFFF</color> <color name="red">#DE4B4B</color> <color name="green">#86D52C</color> </resources>
-
strings.xml
<resources> <string name="app_name">ExemploOutrasViews01</string> <string-array name="idades_array"> <item>20</item> <item>30</item> <item>40</item> <item>50</item> <item>60</item> <item>70</item> <item>80</item> <item>90</item> <item>100</item> </string-array> </resources>
-
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Digite seu nome" android:id="@+id/editTextNome" android:padding="10dp"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Situação no curso:" android:padding="10dp" android:textAppearance="@style/TextAppearance.AppCompat.Medium"/> <RadioGroup android:layout_width="wrap_content" android:padding="10dp" android:id="@+id/radioGroupSituacao" android:layout_height="wrap_content"> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Regular" android:textAppearance="@style/TextAppearance.AppCompat.Medium" android:id="@+id/radioButtonR"/> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="@style/TextAppearance.AppCompat.Medium" android:text="Irregular" android:id="@+id/radioButtonI"/> </RadioGroup> <Spinner android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="10dp" android:background="@color/green" android:id="@+id/spinner"/> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="CLIQUE" android:onClick="clicar" android:backgroundTint="@color/red" android:textAppearance="@style/TextAppearance.AppCompat.Large" android:id="@+id/button"/> <ProgressBar android:id="@+id/progressBar" style="@style/Widget.AppCompat.ProgressBar.Horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:indeterminate="false" android:max="100" android:padding="10dp" android:progress="0" android:visibility="invisible" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="10dp" android:id="@+id/textViewResultado" android:text=""/> </LinearLayout>
-
MainActivity.java
import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.ProgressBar; import android.widget.RadioButton; import android.widget.Spinner; import android.widget.TextView; public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener { private EditText editTextNome; private RadioButton radioButtonR, radioButtonI; private Button button; private Spinner spinner; private ProgressBar progressBar; private TextView textViewResultado; private Estudante estudante; private int progress = 0; // Variável para controle de progresso private int idadeSelecionada; // Variável para armazenar a idade selecionada @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editTextNome = findViewById(R.id.editTextNome); radioButtonR = findViewById(R.id.radioButtonR); radioButtonI = findViewById(R.id.radioButtonI); button = findViewById(R.id.button); spinner = findViewById(R.id.spinner); progressBar = findViewById(R.id.progressBar); textViewResultado = findViewById(R.id.textViewResultado); ArrayAdapter<CharSequence> adapter = ArrayAdapter .createFromResource( this, R.array.idades_array, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter); spinner.setOnItemSelectedListener(this); } private void executarProgressBar() { progress = 0; progressBar.setProgress(progress); progressBar.setVisibility(View.VISIBLE); textViewResultado.setText(""); Handler handler = new Handler(Looper.getMainLooper()); new Thread(new Runnable() { @Override public void run() { while (progress < 100) { progress += 10; handler.post(new Runnable() { @Override public void run() { progressBar.setProgress(progress); if (progress >= 100) { textViewResultado.setText(estudante.toString()); } } }); try { Thread.sleep(1000); // Atraso para simular o progresso } catch (InterruptedException e) { e.printStackTrace(); } } } }).start(); } private String obterSituacao() { if (radioButtonR.isChecked()) { return "regular"; } else if (radioButtonI.isChecked()) { return "irregular"; } return ""; } public void clicar(View v) { String nome = editTextNome.getText().toString(); String situacao = obterSituacao(); if (nome.isEmpty()) { textViewResultado.setText("Por favor, insira o nome."); return; } if (situacao.isEmpty()) { textViewResultado.setText("Por favor, selecione a situação."); return; } estudante = new Estudante(nome, situacao, idadeSelecionada); executarProgressBar(); } @Override public void onItemSelected(AdapterView<?> parentView, View view, int position, long id) { // Obter a idade selecionada no Spinner try { idadeSelecionada = Integer.parseInt(parentView .getItemAtPosition(position).toString()); } catch (NumberFormatException e) { e.printStackTrace(); } } @Override public void onNothingSelected(AdapterView<?> parentView) { // Este método pode ser usado para lidar com a remoção de seleção } }
-
Estudante.java
public class Estudante { private String nome,situacao; private int idade; public Estudante() { } public Estudante(String nome, String situacao, int idade) { this.nome = nome; this.situacao = situacao; this.idade = idade; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String getSituacao() { return situacao; } public void setSituacao(String situacao) { this.situacao = situacao; } public int getIdade() { return idade; } public void setIdade(int idade) { this.idade = idade; } @Override public String toString() { return "Estudante{" + "nome='" + nome + '\'' + ", situacao='" + situacao + '\'' + ", idade=" + idade + '}'; } }