Switch در اندروید

منتشرشده توسط حامد قنبری در تاریخ

در اندروید، Switch یک عنصر رابط کاربری دو جانبه است که  بعد از

نسخه آندروید 4.0 (API سطح 14) معرفی شد  و اصولاً برای نشان دادن حالت های ONیا OFF  استفاده می شود . در حالت ظاهری Switch  به عنوان یک دکمه با  حالت کشویی است که کاربر با استفاده از انگشت شست خود آن را در حالت های خاموش یا روشن تنظیم می کند . عنصر Switch  از این جهت برای کاربران مفید است  که در سطوح انتخاب خود بین دو حالت می تواند آن را در حالت خاموش یا روشن تنظیم کند . سوئیچ  از زیر مجموعه  کلاس  CompoundButton محسوب می شود که غالبا دو حالت true یا falseرا برمی گرداند . از این ویو معمولاً در انتخاب روشن / خاموش کردن صدا، بلوتوث، فای و غیره استفاده می شود.

نحوه اضافه کردن Switch به پروژه:

بطور کلی دو روش کلی  برای ایجاد  Switch در برنامه اندروید وجود دارد. راه حل اول همانطور که پیشتر توضیح داده شد افزودن از طریق فایل XML  که به شکل زیر می باشد.

<Switch
    android:id="@+id/Switch1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    />

در این روش در فایل XML  همانند فایل activity_main.xml و در  داخل لایوت های اصلی یا فرعی ،  تگ شروع شونده Switch > را تایپ کرده و سپس سایر ویژگی های مربوط به آن مانند متن ویو ، رنگ متن ، اندازه متن و … را به آن  اضافه می کنیم و سپس با تگ پایانی /> آن را می بندیم. به منظور درک بیشتر موضوع به کدهای زیر دقت کنید:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
   >
    <Switch
        android:id="@+id/Switch1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Blutooth"
        android:layout_gravity="center"
        android:checked="true"
        android:textSize="20sp"
        android:textColor="#000"
        />
</LinearLayout>

همانطور که در کد هایXML فوق می بینید Switch در داخل لایوت اصلی ما یعنی   LinearLayout قرار دارد  و دارای ویژگی های متعددی است که در برنامه به هنگام اجرای آن بر روی آن اعمال می شود. دقت شود که همانند CheckBox  ارزش اولیه و پیشفرض Switch  را می توان در کد زیر تعیین نمود:

android:checked=”true”

یا

android:checked=”false”

 در گام نخست آنچه برای مهم و ضروری بنظر می رسد نحوه فراخوانی این عنصر ایجاد شده به منظور اعمال برخی عملیات ها در کلاس مرتبط با آن است. به همین منظور تمامی ویوهای موجود در فایل XML  را از طریق ایدی یا شناسه مرتبط با آن ویو در کلاس فراخوانی می کنیم. که در مثال ذکر شده ایدی Switch به شکل زیر تعریف شده است:

android:id=”@+id/Switch1″

برای فراخوانی Switch و سایر ویوها برای منظور برنامه نویسی در کلاس از متد

findViewById(R.id.yourid)

استفاده می کنیم.

به همین منظور لازم است در کلاس ها  اولاً فایل XML مرتبط با کلاس مشخص شود. یعنی ما باید مشخص کنیم که قصد فراخوانی چه چیزی را از کدام فایل XMl  داریم که در کد زیر در دستور مشخص شده با رنگ قرمز مشخص شده است و سپس  آن ویو یا عنصر مورد نظر در فایل مربوطه را بر اساس شناسه آن فراخوانی می کنیم  و آن در متغیری از نوع خود ذخیره می کنیم.

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.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Switch;

public class MainActivity extends AppCompatActivity {

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

        Switch mswitch = (Switch)findViewById(R.id.Switch1);
    }
}

تا اینجا ما توانستیم  Switch   مورد نظر خود را در فایل  Xml ایجاد کرده و آن را به کلاس موردنظر خودمان تعریف کنیم. اکنون لازم است تعیین کنیم که چگونه می توانیم مقدار ارزش Switch را استخراج کنیم.

به مثال زیر توجه کنید:

به منظور درک بهتر توضیحات فوق نظر شما را به مثالی ساده جلب می کنیم. در این مثال قرار است کاربر با تغییر حالت Switch  دکمه را کلیک کند و وضعیت و حالت Switch  را در یک پیام Toast مشاهده کند.

اگر در داخل برنامه اکلیپس یا اندروید استودیو قرار دارید پروژه جدیدی را  ایجاد کنید

اکلیپس :File ⇒ New Android ⇒ Application Project

اندروید استودیو :File ⇒ New  ⇒ New Project

اما اگر هنوز برنامه خود را باز نکرده اید یکی از برنامه های فوق را باز نموده و بعد از تعیین مشخصات(نامگذاری) ، تعیین حداقل sdk  و نوع اکتیویتی (blank  یا Empty) ، نام اکتیویتی ابتدایی و اصلی خود  را همان MainActivity قرار دهید.

در مسیر res ⇒layout لایه متناظر اکتیوتی اصلی یعنی activity_main را پیدا نمود و کدهای مندرج و پیش فرض آن را پاک کرده و کدهای xml  زیر را به آن اضافه کنید:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
   >
    <Switch
        android:id="@+id/Switch1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Blutooth"
        android:layout_gravity="center"
        android:checked="true"
        android:textSize="20sp"
        android:layout_marginTop="30sp"
        android:textColor="#000"
        />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/button1"
        android:text="Click Me"
        android:layout_gravity="center"
        android:layout_marginTop="40sp"/>
</LinearLayout>

سپس به سراغ کلاس اصلی خود یعنی MainActivity می رویم و کدهای مندرج در زیر را در آن قرار می دهیم.

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.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.Switch;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

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

        final Switch mswitch = (Switch)findViewById(R.id.Switch1);
        Button btn = (Button)findViewById(R.id.button1);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (mswitch.isChecked())
                    Toast.makeText(getApplication(), "Switch is On", Toast.LENGTH_LONG).show();
                else{
                    Toast.makeText(getApplication(), "Switch is Off", Toast.LENGTH_LONG).show(); 
            }
                
                
            }
        });
    }
}

حال می توانید برنامه را اجرا کرده و نتیجه کار خود را ببینید.

موفق و پیروز باشید.


0 دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

-- بارگیری کد امنیتی --