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.
android:disabledAlpha
: O alpha a ser aplicado ao indicador quando desativadoandroid:textOff
: O texto para o botão quando não estiver marcadoandroid:textOn
: O texto para o botão quando estiver marcado
Para modificar o ToggleButton programaticamente, os seguintes métodos são usados.
CharSequence getTextOff()
: Ele retorna o texto quando o botão não está no estado marcadoCharSequence getTextOn()
: Ele retorna o texto quando o botão está no estado marcadovoid 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:
- É a melhor substituição para caixas de seleção (checkboxes) e botões de rádio (RadioButtons)
- A implementação leva menos de um minuto
- 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