Android Schakelknop, Schakelvoorbeeld

Vandaag zullen we leren over de Android Toggle Button en Schakelaar in de Android-app. We zullen de Schakelaar widget bespreken en implementeren en de ToggleButton-widget in onze applicatie.

Android Toggle Button

De Android Toggle Button wordt gebruikt om de aan en uit staat weer te geven op een knop. Schakelaar is een ander type schakelknop dat voornamelijk wordt gebruikt sinds Android 4.0. Android Switch biedt een schuifregelaar. Zowel ToggleButton als Switch zijn subklassen van de CompoundButton klasse. XML-attributen die worden gebruikt om een ToggleButton te definiëren, worden hieronder beschreven.

  1. android:disabledAlpha: De alpha om toe te passen op de indicator wanneer uitgeschakeld
  2. android:textOff: De tekst voor de knop wanneer deze niet is aangevinkt
  3. android:textOn: De tekst voor de knop wanneer deze is aangevinkt

Om de ToggleButton programmatisch aan te passen worden de volgende methoden gebruikt.

  1. CharSequence getTextOff(): Het retourneert de tekst wanneer de knop niet in de aangevinkte staat is
  2. CharSequence getTextOn(): Het retourneert de tekst voor wanneer de knop in de aangevinkte staat is
  3. void setChecked(boolean checked): Het verandert de aangevinkte staat van deze knop

Android-schakelaar

De Android-schakelaar of SwitchCompat-widget (een onderdeel van de AppCompat-bibliotheek die achterwaartse compatibiliteit biedt voor oudere Android-versies tot en met Android API v7) is een aangepaste aan/uit-schuifregelaar die vaak te zien is in telefooninstellingen. Voordelen van de Android-schakelaar-widget:

  1. Het is de beste vervanging voor selectievakjes en radioknoppen
  2. Implementatie duurt minder dan een minuut
  3. Er is geen grote hoeveelheid tekeningen en andere bronnen nodig

De XML-indeling van een SwitchCompat wordt hieronder gegeven:

<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 wordt gebruikt om een tekst naast de schuifknop weer te geven.

Voorbeeld van Android-toggleschakelaar en -schakelaar

In deze toepassing tonen we twee ToggleButtons en één schakelaarknop. De toestand van de ToggleButtons wordt weergegeven in een SnackBar wanneer de FloatingActionButton wordt ingedrukt. De toestand van de schakelaarknop wordt gewijzigd in waar wanneer de actieknop van de snackbar wordt aangeklikt. Of de toestand wordt weergegeven in de snackbar door de schakelaar te verschuiven.

Projectstructuur van Android Toggle-knop en schakelaar

Code voor Android Toggle-knop

De activity_main.xml blijft hetzelfde. De content_main.xml bevat standaard twee Toggle-knoppen en een schakelaar die standaard op false staat, zoals te zien is in onderstaande codefragment:

<?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>

De MainActivity.java is hieronder gegeven:

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) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity 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.

Download het Android Switch- en Toggle-knop-project

Referentie: ToggleButton Android Doc

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