Android Tutorial V: Dwustanowe kontrolki

Interupteur-M-A-300pxWitaj w V wpisie dzisiaj zajmiemy się podstawowym dwustanowymi kontrolkami w Androidzie: ToggleButton, CheckBox, Switch.

Dwustanowe kontrolki mają na celu określić czy coś mamy włączone lub wyłączone that’s all:) u nas gdy będziemy włączać lub wyłączać daną kontrolkę będziemy zmieniać tekst naszego TextView na odpowiedni komunikat.

Zaczynamy Dwustanowe kontrolki.

Tworzymy sobie layout z 3 kontrolkami tego typu

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://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"
    tools:context="info.easymenu.MainActivity">

    <ToggleButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="toogle"
        android:id="@+id/toggleButton"
        android:layout_marginTop="44dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:checked="false" />

    <Switch
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="switch"
        android:id="@+id/switch1"
        android:layout_below="@+id/toggleButton"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="42dp"
        android:checked="false" />

    <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Check"
        android:id="@+id/checkBox"
        android:layout_below="@+id/switch1"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="60dp"
        android:checked="false" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:id="@+id/textView"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="63dp" />

</RelativeLayout>

Gdy layout mamy gotowy przechodzimy do implementacji:

  • na początek deklarujemy cztery prywatne pola z naszymi kontrolkami,
  • następnie tworzymy metody na których będziemy działać,
  • initVariable() inicjalizujemy tutaj nasze pola,
  • następna metoda to sCheckedToogleButton() odpowiada za naszą kontrolkę ToggleButton, wywołujemy listenera na naszym obiekcie który czeka nasz nasz ruch:), w metodzie OnClick(View v) tworzymy warunek jeżeli toggleButton jest zaznaczony to ustaw tekst w naszym TextView i  ustaw toogleButton na zaznaczony,  inaczej również zmień tekst w naszym TextView na inny komunikat który wyexportowaliśmy do stringów:) bo tak trzeba robić i ustawiamy toggleButton na nie zanzaczony.
  • następne metody isCheckedBox() oraz isCheckedSwitch są analogiczne do wyżej opisanej.
package info.easymenu;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.Switch;
import android.widget.TextView;
import android.widget.ToggleButton;

public class MainActivity extends Activity {

    private ToggleButton toggleButton;
    private CheckBox checkBox;
    private Switch aSwitch;
    private TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initVariables();
        isCheckedCheckBox();
        isCheckedSwich();
        isCheckedToogleButton();


    }

    private void initVariables() {

        toggleButton = (ToggleButton) findViewById(R.id.toggleButton);
        checkBox = (CheckBox) findViewById(R.id.checkBox);
        aSwitch = (Switch) findViewById(R.id.switch1);
        textView = (TextView) findViewById(R.id.textView);

    }

    private void isCheckedToogleButton() {

            toggleButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    if (toggleButton.isChecked()) {

                        textView.setText(R.string.toggleButtonIsChecked);

                        toggleButton.setChecked(true);
                    } else {

                        textView.setText(R.string.toggleButtonIsNotChecked);

                        toggleButton.setChecked(false);

                    }
                }
            });


    }

    private void isCheckedCheckBox() {

        checkBox.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if (checkBox.isChecked()) {

                    textView.setText(R.string.checkBoxIsChecked);

                    checkBox.setChecked(true);

                } else {

                    textView.setText(R.string.checkBoxIsNotChecked);

                    checkBox.setChecked(false);
                }

            }
        });



    }


    private void isCheckedSwich() {

        aSwitch.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if (aSwitch.isChecked()) {

                    textView.setText(R.string.switchIsChecked);

                    aSwitch.setChecked(true);

                } else {

                    textView.setText(R.string.switchIsNotChecked);

                    aSwitch.setChecked(false);

                }

            }
        });



    }


}

Jak widzisz te trzy kontrolki są bardzo podobne w obsłudze:)

Cześć.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *