Exemplo de Botão de Alternância Android, Interruptor

Hoje vamos aprender sobre o Android Toggle Button e Switch em um aplicativo Android. Vamos discutir e implementar o widget Switch e o widget ToggleButton em nossa aplicação.

Android Toggle Button

O Android Toggle Button é usado para exibir o estado ligado e desligado em um botão. O Switch é outro tipo de botão de alternância que é predominantemente usado desde o Android 4.0. O Android Switch fornece um controle deslizante. Ambos ToggleButton e Switch são subclasses da classe CompoundButton. Os atributos XML usados para definir um ToggleButton são descritos abaixo.

  1. android:disabledAlpha: O alfa a ser aplicado ao indicador quando desativado
  2. android:textOff: O texto para o botão quando não está marcado
  3. android:textOn: O texto para o botão quando está marcado

Para modificar programaticamente o ToggleButton, os seguintes métodos são usados.

  1. CharSequence getTextOff(): Retorna o texto quando o botão não está no estado marcado
  2. CharSequence getTextOn(): Retorna o texto quando o botão está no estado marcado
  3. void setChecked(boolean checked): Altera o estado marcado deste botão

Interruptor Android

Interruptor Android ou widget SwitchCompat (parte da biblioteca AppCompat que fornece compatibilidade retroativa para versões mais baixas do Android até a API v7) é um controle deslizante personalizado de ligar/desligar comumente visto nas configurações do telefone. Vantagens do Widget Switch Android:

  1. É a melhor substituição para caixas de seleção e botões de rádio
  2. A implementação leva menos de um minuto
  3. Não é necessário usar muitos desenhos e outros recursos

O layout XML de um SwitchCompat é mostrado abaixo:

<android.support.v7.widget.SwitchCompat
        android:id="@+id/switchButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Switch example"
        />

android:text é usado para exibir um texto ao lado do botão deslizante.

Exemplo de Botão de Alternância e Switch Android

Neste aplicativo, exibiremos dois botões de alternância e um botão Switch. O estado dos botões de alternância será exibido em um Snackbar quando o FloatingActionButton for pressionado. O estado do botão Switch é alterado para verdadeiro sempre que o botão de ação do Snackbar for clicado. Ou o estado é exibido no Snackbar deslizando o interruptor.

Estrutura do Projeto do Botão de Alternância e Interruptor do Android

Código do Botão de Alternância do Android

O activity_main.xml permanece o mesmo. O content_main.xml contém dois Botões de Alternância e um Interruptor desativado por padrão, conforme mostrado no trecho de código abaixo:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:app="https://schemas.android.com/apk/res-auto"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.journaldev.switchandtoggle.MainActivity"
    tools:showIn="@layout/activity_main">

    <ToggleButton
        android:id="@+id/tb1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="ToggleButton 1"
        android:textOff="Off"
        android:textOn="On" />

    <ToggleButton
        android:id="@+id/tb2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/tb1"
        android:layout_alignBottom="@+id/tb1"
        android:layout_toRightOf="@+id/tb1"
        android:text="ToggleButton 2"
        android:textOff="Off"
        android:textOn="On" />

    <android.support.v7.widget.SwitchCompat
        android:id="@+id/switchButton"
        android:layout_width="wrap_content"
        android:layout_centerInParent="true"
        android:checked="false"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Switch example"
        />


</RelativeLayout>

O MainActivity.java é fornecido abaixo:

package com.journaldev.switchandtoggle;

import android.graphics.Color;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.SwitchCompat;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.CompoundButton;
import android.widget.ToggleButton;

public class MainActivity extends AppCompatActivity {

    ToggleButton tb1, tb2;
    SwitchCompat switchCompat;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                StringBuilder result = new StringBuilder();
                result.append("ToggleButton1 : ").append(tb1.getText());
                result.append("\nToggleButton2 : ").append(tb2.getText());

               Snackbar snackbar= Snackbar.make(view, result.toString(), Snackbar.LENGTH_LONG)
                        .setAction("SWITCH ENABLE", new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                switchCompat.setChecked(true);
                            }
                        });

                snackbar.setActionTextColor(Color.RED);
                snackbar.show();
            }
        });

        tb1= (ToggleButton)findViewById(R.id.tb1);
        tb2=(ToggleButton)findViewById(R.id.tb2);
        switchCompat=(SwitchCompat)findViewById(R.id.switchButton);

        switchCompat.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

                Snackbar.make(buttonView, "Switch state checked "+isChecked, Snackbar.LENGTH_LONG)
                        .setAction("ACTION",null).show();
            }
        });



    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflar o menu; isso adiciona itens à barra de ação se ela estiver presente.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Manipular cliques nos itens da barra de ação aqui. A barra de ação irá
        // manipular automaticamente cliques no botão Início/Para cima, desde que
        // você especifique uma atividade pai no AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

A String builder is used to get the current state of the toggle buttons and append them to display in the snackbar. Switch button being a subclass of Compound Button, an OnCheckChangeListener is implemented as shown in the code above. The output below is the app in action. This brings an end to android toggle button and switch in android tutorial. You can download the final Android SwitchAndToggle Project from the link below.

Projeto de Botão de Alternância e Interruptor do Android

Referência: Doc do Android ToggleButton

Source:
https://www.digitalocean.com/community/tutorials/android-toggle-button-switch-example