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 +
                    '}';
        }
    }