Пример переключателя и кнопки Android

Сегодня мы узнаем о переключателе Android и переключателе в приложении Android. Мы обсудим и реализуем виджет переключателя и виджет ToggleButton в нашем приложении.

Переключатель Android

Переключатель Android используется для отображения состояния включения и выключения на кнопке. Switch – это еще один тип переключателя, который в основном используется с Android 4.0. Переключатель Android предоставляет элемент управления ползунком. Как ToggleButton, так и Switch являются подклассами класса CompoundButton. Описанные ниже атрибуты XML используются для определения ToggleButton.

  1. android:disabledAlpha: Альфа, применяемая к индикатору при отключении
  2. android:textOff: Текст для кнопки, когда она не отмечена
  3. android:textOn: Текст для кнопки, когда она отмечена

Для программного изменения ToggleButton используются следующие методы.

  1. CharSequence getTextOff(): Возвращает текст, когда кнопка не отмечена
  2. CharSequence getTextOn(): Возвращает текст, когда кнопка отмечена
  3. void setChecked(boolean checked): Изменяет состояние отметки этой кнопки

Переключатель Android

Переключатель Android или виджет SwitchCompat (часть библиотеки AppCompat, которая обеспечивает обратную совместимость для более низких версий Android до API v7) – это настраиваемый переключатель On-Off, который часто встречается в настройках телефона. Преимущества виджета Android Switch:

  1. Это лучшая замена флажкам и кнопкам-переключателям
  2. Реализация занимает менее минуты
  3. Не нужно использовать много ресурсов и других ресурсов

Макет XML SwitchCompat приведен ниже:

<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 используется для отображения текста рядом с переключателем.

Пример переключателя и кнопки Android Toggle

В этом приложении мы отображаем две кнопки-переключателя и одну переключатель. Состояние кнопок-переключателей отображается в SnackBar при нажатии FloatingActionButton. Состояние переключателя изменяется на true, когда нажимается действующая кнопка SnackBar. Или состояние отображается в SnackBar при перемещении переключателя.

Структура проекта кнопки переключения и переключателя Android

Код кнопки переключения Android

activity_main.xml остается тем же. content_main.xml содержит две кнопки переключения и переключатель, по умолчанию установленный в положение false, как показано в следующем фрагменте кода:

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

MainActivity.java представлен ниже:

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) {
        // Надуть меню; это добавляет элементы в панель действий, если она присутствует.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Обработайте щелчки на элементах панели действий здесь. Панель действий будет
        // автоматически обрабатывать щелчки на кнопке Home/Up, если
        // вы укажете родительскую активность в 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.

Скачать проект с кнопкой переключения и кнопкой переключения Android

Ссылка: Документация по кнопке переключения Android

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