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

Hoje vamos aprender sobre o botão de alternância e o interruptor Android no aplicativo Android. Vamos discutir e implementar o widget de botão de alternância e o widget ToggleButton em nosso aplicativo.

Botão de Alternância Android

O botão de alternância Android é usado para exibir o estado ligado e desligado em um botão. Switch é outro tipo de botão de alternância que é predominantemente usado desde o Android 4.0. O Switch Android 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 alpha a ser aplicado ao indicador quando desativado
  2. android:textOff: O texto para o botão quando não estiver marcado
  3. android:textOn: O texto para o botão quando estiver marcado

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

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

Interruptor Android

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

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

O layout xml de um SwitchCompat é apresentado 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 de alternar deslizante.

Exemplo de Botão de Alternância (Toggle Button) e Interruptor (Switch) Android

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

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

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

O activity_main.xml permanece o mesmo. O content_main.xml contém dois Botões de Alternância e um Interruptor marcado como falso por padrão, como 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 está apresentado 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) {
        // Infla o menu; isso adiciona itens à barra de ação se estiver presente.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Lidar com cliques nos itens da barra de ação aqui. A barra de ação
        // manipulará automaticamente cliques no botão Home/Up, contanto
        // 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.

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

Referência: Documentação do Botão de Alternância Android

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