Oggi impareremo sul pulsante di commutazione Android e Switch nell’applicazione Android. Discuteremo e implementeremo il widget pulsante di commutazione e il widget ToggleButton
nella nostra applicazione.
Pulsante di commutazione Android
Il pulsante di commutazione Android viene utilizzato per visualizzare lo stato attivo e disattivo su un pulsante. Switch è un altro tipo di pulsante di commutazione che viene utilizzato principalmente da Android 4.0. Android Switch fornisce un controllo di scorrimento. Sia ToggleButton che Switch sono sottoclassi della classe CompoundButton
. Gli attributi XML utilizzati per definire un ToggleButton sono descritti di seguito.
android:disabledAlpha
: L’opacità da applicare all’indicatore quando è disabilitatoandroid:textOff
: Il testo del pulsante quando non è selezionatoandroid:textOn
: Il testo del pulsante quando è selezionato
Per modificare il ToggleButton programmatticamente, vengono utilizzati i seguenti metodi.
CharSequence getTextOff()
: Restituisce il testo quando il pulsante non è selezionatoCharSequence getTextOn()
: Restituisce il testo quando il pulsante è selezionatovoid setChecked(boolean checked)
: Modifica lo stato selezionato di questo pulsante
Interruttore Android
L’interruttore Android o widget SwitchCompat (parte della libreria AppCompat che fornisce compatibilità retroattiva per versioni più basse di Android fino a Android API v7) è uno slider personalizzato On-Off comunemente utilizzato nelle impostazioni del telefono. Vantaggi del widget Android Switch:
- È il miglior sostituto delle caselle di controllo e dei RadioButtons
- L’implementazione richiede meno di un minuto
- Non c’è bisogno di utilizzare molte risorse disegnabili e altre risorse
Il layout xml di un SwitchCompat è riportato di seguito:
<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
viene utilizzato per visualizzare un testo accanto al pulsante dello slider switch.
Esempio di pulsante di attivazione e interruttore Android
In questa applicazione visualizzeremo due ToggleButton e un pulsante Switch. Lo stato dei pulsanti di attivazione sarà visualizzato in una Snackbar quando viene premuto il FloatingActionButton
. Lo stato del pulsante Switch viene impostato su true ogni volta che viene cliccato il pulsante di azione della snackbar. Oppure lo stato viene visualizzato nella snackbar scorrendo l’interruttore.
Struttura del progetto del pulsante di commutazione e dello switch di Android
Codice del pulsante di commutazione di Android
Il activity_main.xml
rimane lo stesso. Il content_main.xml
contiene due pulsanti di commutazione e uno switch controllato su false per impostazione predefinita come mostrato nel frammento di codice sottostante:
<?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>
Il MainActivity.java
è fornito di seguito:
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 il menu; questo aggiunge voci alla barra delle azioni se presente.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Gestisci clic sugli elementi della barra delle azioni qui. La barra delle azioni
// gestirà automaticamente i clic sul pulsante Home/Up, finché
// specifica un'attività genitore in 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.
Scarica il progetto del pulsante di commutazione e dello switch di Android
Riferimento: Documentazione sul pulsante di commutazione di Android
Source:
https://www.digitalocean.com/community/tutorials/android-toggle-button-switch-example