Sunday, December 2, 2018

Android Toggle Button , Android Checkbox & Android Custom Checkbox (Part -8)

                                                                  Android ToggleButton Example
                                                                  ----------------------------------------



Android Toggle Button সাধারণত  কোনো button এর state এর  (On/Off) অবস্থা বুঝাতে ব্যবহার হয় !!

এটা সাধারণত  On/Off Sound, Wifi, Bluetooth ইত্যাদিতে ব্যবহার করা হয় !!

কিন্তু  Android 4.0 থেকে আরেক ধরনের  toggle button ব্যবহার হয় যার নাম  switch যেটা  slider control ইউজ করে ,state এর  (On/Off) এর কাজ চালায়   !!

Android ToggleButton and Switch দুটোই CompoundButton class এর  subclasses ।


                                    XML Attributes of ToggleButton class

android:disabledAlpha              The alpha to apply to the indicator when disabled.
android:textOff                                                 বাটন  যখন , টগল (অফ) হবে তখন বাটন এর টেক্সট চেইঞ্জ হয়ে  কি হবে ? সেটা এটার উপর ডিপেন্ড হবে !!
android:textOn                                                 বাটন  যখন , টগল (অন) হবে তখন বাটন এর টেক্সট চেইঞ্জ হয়ে  কি হবে ? সেটা এটার উপর ডিপেন্ড হবে !!

এগুলো ব্যবহার করলে বিষয়টা ারো ক্লিয়ার হয়ে যাবে !


ToggleButton class এর যেসব মেথোড সবচেয়ে বেশী  ইউজ হয় --------


CharSequence getTextOff()          বাটন  যখন , টগল (অফ) হবে তখন বাটন এর টেক্সট Return করবে !!
CharSequence getTextOn()          বাটন  যখন , টগল (অন) হবে তখন বাটন এর টেক্সট  Return করবে !!
void setChecked(boolean checked)   বাটন এর স্টেইট চেইঞ্জ করে এই মেথোড !!


যাই হোক , আমরা এখন একটা অ্যাপ্লিকেশন বানাবো দুইটা টগল বাটন আর একটা নরমাল বাটন ইউজ করে  , যেটা আমাদের টোস্ট মেসেজ করে দেখাবে আমাদের কোনটা অফ আর অন আছে , তবে আমরা এই ক্ষেত্রে  XML ফাইলের থেকেই   android:textOff ও  android:textOn এর টেক্সট এর সাহ্যযে দেখবো , স্টেইট অফ নাকি অন আছে ? আমরা আমাদের  void setChecked(boolean checked) মেথোড ব্যবহার করবো না !!  চলো এবার জাভা আর লেয়াউট ফাইল দেখে আসি ----------

File: activity_main.xml

    <?xml version="1.0" encoding="utf-8"?> 
    <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 
        xmlns:app="http://schemas.android.com/apk/res-auto" 
        xmlns:tools="http://schemas.android.com/tools" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        tools:context="example.javatpoint.com.togglebutton.MainActivity"> 
     
        <ToggleButton 
            android:id="@+id/toggleButton" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:layout_marginLeft="8dp" 
            android:layout_marginTop="80dp" 
            android:text="ToggleButton" 
            android:textOff="Off" 
            android:textOn="On" 
            app:layout_constraintEnd_toStartOf="@+id/toggleButton2" 
            app:layout_constraintStart_toStartOf="parent" 
            app:layout_constraintTop_toTopOf="parent" /> 
     
        <ToggleButton 
            android:id="@+id/toggleButton2" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:layout_marginRight="60dp" 
            android:layout_marginTop="80dp" 
            android:text="ToggleButton" 
            android:textOff="Off" 
            android:textOn="On" 
            app:layout_constraintEnd_toEndOf="parent" 
            app:layout_constraintTop_toTopOf="parent" /> 
     
        <Button 
            android:id="@+id/button" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:layout_marginBottom="144dp" 
            android:layout_marginLeft="148dp" 
            android:text="Submit" 
            app:layout_constraintBottom_toBottomOf="parent" 
            app:layout_constraintStart_toStartOf="parent" /> 
    </android.support.constraint.ConstraintLayout> 

এখন জাভা ফাইল ,

    package example.javatpoint.com.togglebutton; 
     
    import android.support.v7.app.AppCompatActivity; 
    import android.os.Bundle; 
    import android.view.View; 
    import android.widget.Button; 
    import android.widget.Toast; 
    import android.widget.ToggleButton; 
     
    public class MainActivity extends AppCompatActivity { 
        private ToggleButton toggleButton1, toggleButton2; 
        private Button buttonSubmit; 
        @Override 
        protected void onCreate(Bundle savedInstanceState) { 
            super.onCreate(savedInstanceState); 
            setContentView(R.layout.activity_main); 
     
            addListenerOnButtonClick(); 
        } 
     
        public void addListenerOnButtonClick(){ 
            //Getting the ToggleButton and Button instance from the layout xml file 
            toggleButton1=(ToggleButton)findViewById(R.id.toggleButton); 
            toggleButton2=(ToggleButton)findViewById(R.id.toggleButton2); 
            buttonSubmit=(Button)findViewById(R.id.button); 
     
            //Performing action on button click 
            buttonSubmit.setOnClickListener(new View.OnClickListener(){ 
     
                @Override 
                public void onClick(View view) { 
                    StringBuilder result = new StringBuilder(); 
                    result.append("ToggleButton1 : ").append(toggleButton1.getText()); 
                    result.append("\nToggleButton2 : ").append(toggleButton2.getText()); 
                    //Displaying the message in toast 
                    Toast.makeText(getApplicationContext(), result.toString(),Toast.LENGTH_LONG).show(); 
                } 
     
            }); 
     
        } 
    } 

আমরা স্ট্রিং সবাই চিনি , বাট স্ট্রিংবিল্ডার খুব একটা চিনি না অনেকেই , আমরা এখানে স্ট্রিংবিল্ডার ইউজ করেছি , তারপর সেটা result.toString() এর মাধ্যমে , স্ট্রিং এ কনভার্ট করে সেটা Toast হিসেবে শো করাই !! স্ট্রিং বিল্ডার নিয়ে যারা জানো না তারা গুগল করে একটু জেনে নাও !!  এখন এটা রান করালেই ,  সব সমস্যা পরিষ্কার হয়ে যাবে !! তাহলে আমরা টগল বাটন নিয়ে জেনে গেলাম , কিভাবে চেক করাতে হয় , কোনটা ? অফ আছে আর অন আছে !!


                                                                    Android CheckBox Example
                                                                  -----------------------------------



  যখন তোমাইয় অনেকগুলো জিনিস দিয়ে , তোমার ইচ্ছেমতো চুজ করতে বলা হয় তাদের ভেতর থেকে , তখন এইক্ষেত্রে  আমরা  CheckBox ব্যবহার করবো ।  Android CheckBox class হলো  , CompoundButton class এরই এক ধরনের সাবক্লাস  .
 android.widget.CheckBox এর মাধ্যমে আমরা চেকবক্স ইউজ করতে পারবো ।

মাদের বেশীরভাগ যেসব মেথোড ব্যবহার করতে হয় , তা নীচে দেয়া হলো ------------------

public boolean isChecked()                                             যদি এই চেকবক্স চেকড হয়েই থাকে , তাহলে এই মেথোড   Return  করবে  true ।
public void setChecked(boolean status)                       এই মেথোড চেকবক্স এর স্টেইট চেইঞ্জ করার জন্য ব্যবহার হয় !!!


চলো , এবার আমরা তিনটি চেকবক্স আর একটা বাটন বযবহার করে একটা অ্যাপ্লিকেশন বানিয়ে ফেলি ------------

activity_main.xml

File: activity_main.xml

    <?xml version="1.0" encoding="utf-8"?> 
    <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 
        xmlns:app="http://schemas.android.com/apk/res-auto" 
        xmlns:tools="http://schemas.android.com/tools" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        tools:context="example.javatpoint.com.checkbox.MainActivity"> 
     
     
        <CheckBox 
            android:id="@+id/checkBox" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:layout_marginLeft="144dp" 
            android:layout_marginTop="68dp" 
            android:text="Pizza" 
            app:layout_constraintStart_toStartOf="parent" 
            app:layout_constraintTop_toTopOf="parent" /> 
     
        <CheckBox 
            android:id="@+id/checkBox2" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:layout_marginLeft="144dp" 
            android:layout_marginTop="28dp" 
            android:text="Coffee" 
            app:layout_constraintStart_toStartOf="parent" 
            app:layout_constraintTop_toBottomOf="@+id/checkBox" /> 
     
        <CheckBox 
            android:id="@+id/checkBox3" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:layout_marginLeft="144dp" 
            android:layout_marginTop="28dp" 
            android:text="Burger" 
            app:layout_constraintStart_toStartOf="parent" 
            app:layout_constraintTop_toBottomOf="@+id/checkBox2" /> 
     
        <Button 
            android:id="@+id/button" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:layout_marginLeft="144dp" 
            android:layout_marginTop="184dp" 
            android:text="Order" 
            app:layout_constraintStart_toStartOf="parent" 
            app:layout_constraintTop_toBottomOf="@+id/checkBox3" /> 
     
    </android.support.constraint.ConstraintLayout> 



এবার আমদের এক্টিভিটি  এর জাভা ফাইল ---------------


File: MainActivity.java

    package example.javatpoint.com.checkbox; 
     
    import android.support.v7.app.AppCompatActivity; 
    import android.os.Bundle; 
    import android.view.View; 
    import android.widget.Button; 
    import android.widget.CheckBox; 
    import android.widget.Toast; 
     
    public class MainActivity extends AppCompatActivity { 
        CheckBox pizza,coffe,burger; 
        Button buttonOrder; 
        @Override 
        protected void onCreate(Bundle savedInstanceState) { 
            super.onCreate(savedInstanceState); 
            setContentView(R.layout.activity_main); 
            addListenerOnButtonClick(); 
        } 
        public void addListenerOnButtonClick(){ 
            //Getting instance of CheckBoxes and Button from the activty_main.xml file 
            pizza=(CheckBox)findViewById(R.id.checkBox); 
            coffe=(CheckBox)findViewById(R.id.checkBox2); 
            burger=(CheckBox)findViewById(R.id.checkBox3); 
            buttonOrder=(Button)findViewById(R.id.button); 
     
            //Applying the Listener on the Button click 
            buttonOrder.setOnClickListener(new View.OnClickListener(){ 
     
                @Override 
                public void onClick(View view) { 
                    int totalamount=0; 
                    StringBuilder result=new StringBuilder(); 
                    result.append("Selected Items:"); 
                    if(pizza.isChecked()){ 
                        result.append("\nPizza 100Rs"); 
                        totalamount+=100; 
                    } 
                    if(coffe.isChecked()){ 
                        result.append("\nCoffe 50Rs"); 
                        totalamount+=50; 
                    } 
                    if(burger.isChecked()){ 
                        result.append("\nBurger 120Rs"); 
                        totalamount+=120; 
                    } 
                    result.append("\nTotal: "+totalamount+"Rs"); 
                    //Displaying the message on the toast 
                    Toast.makeText(getApplicationContext(), result.toString(), Toast.LENGTH_LONG).show(); 
                } 
     
            }); 
        } 
    } 



তাহলে এখন আমরা রান করিয়ে দেখতে পারি , আমরা কিছুটা ছোটোখাট একটা রেস্টুরেন্ট এর মেনুকারড বানিয়ে ফেলেছি , এখানে আমরা মাত্র তিনটি ইলিমেন্ট বঅ্যাবহার করেছি , তুমি চাইলে আরো তোমার ইচ্ছেমতো , ইলিমেন্ট বসাতে পারো চেকবক্স হিসেবে !!!
তাহলে , আমাদের চেকবক্স আজকে এইটুকুই থাক !!


                                                               Android Custom CheckBox
                                                                --------------------------------


এবার আমরা , নিজেরাই আমাদের মতো করে চেকবক্স বানাতে পারবো , ডিফল্ট ইউজ না করে ,চলো দেখে নেই কিভাবে কি করতে হবে ?আমরা এখন কাস্টম আর ডিফল্ট দুইটা একসাহেই রাখবো , দেখা যাক কেমন হয় ??
আমাদের লেয়াউট ফাইল দেখে নেই ---
এখন আমি চেকবক্স এর জায়গায় ছবি দিতে চাই , তাহলে আমরা যে যে ছবি দেবো সেগুলো , কপি করে  drawable ফোল্ডারে পেস্ট করে নিজের মতো করে নাম দিবো । এখানে , আমি ইমেজ এর নাম দেবো  run , tun |

activity_main.xml

File: activity_main.xml

    <?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
        xmlns:app="http://schemas.android.com/apk/res-auto" 
        xmlns:tools="http://schemas.android.com/tools" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        tools:context="example.javatpoint.com.customcheckbox.MainActivity"> 
     
     
        <TextView 
            android:id="@+id/textView1" 
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content" 
            android:gravity="center_horizontal" 
            android:textSize="25dp" 
            android:text="Default Check Box" 
            android:layout_alignParentTop="true" 
            android:layout_alignParentLeft="true" 
            android:layout_alignParentStart="true" /> 
     
        <CheckBox 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:text="New CheckBox" 
            android:id="@+id/checkBox" 
            android:layout_below="@+id/textView1" 
            android:layout_centerHorizontal="true" 
            android:layout_marginTop="46dp" /> 
     
        <CheckBox 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:text="New CheckBox" 
            android:id="@+id/checkBox2" 
            android:layout_below="@+id/checkBox" 
            android:layout_alignLeft="@+id/checkBox" 
            android:layout_alignStart="@+id/checkBox" /> 
     
        <View 
            android:layout_width="fill_parent" 
            android:layout_height="1dp" 
            android:layout_marginTop="200dp" 
            android:background="#B8B894" 
            android:id="@+id/viewStub" /> 
     
        <CheckBox 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:text="CheckBox 1" 
            android:id="@+id/checkBox3" 
            android:button="@drawable/tun" 
            android:layout_below="@+id/viewStub" 
            android:layout_centerHorizontal="true" 
            android:layout_marginTop="58dp" /> 
     
        <CheckBox 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:text="CheckBox 2" 
            android:id="@+id/checkBox4" 
            android:button="@drawable/run" 
            android:layout_below="@+id/checkBox3" 
            android:layout_alignLeft="@+id/checkBox3" 
            android:layout_alignStart="@+id/checkBox3" /> 
     
        <TextView 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:textAppearance="?android:attr/textAppearanceSmall" 
            android:textSize="25dp" 
            android:text="Custom Check Box" 
            android:id="@+id/textView" 
            android:layout_alignTop="@+id/viewStub" 
            android:layout_centerHorizontal="true" /> 
     
        <Button 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:text="Show Checked" 
            android:id="@+id/button" 
            android:layout_alignParentBottom="true" 
            android:layout_centerHorizontal="true" /> 
     
    </RelativeLayout> 


এখন জাভা ফাইল দেখে আসি চলো ;----

File: MainActivity.java

    package example.javatpoint.com.customcheckbox; 
     
    import android.support.v7.app.AppCompatActivity; 
    import android.os.Bundle; 
    import android.view.View; 
    import android.widget.Button; 
    import android.widget.CheckBox; 
    import android.widget.Toast; 
     
    public class MainActivity extends AppCompatActivity { 
        CheckBox cb1,cb2; 
        Button button; 
        @Override 
        protected void onCreate(Bundle savedInstanceState) { 
            super.onCreate(savedInstanceState); 
            setContentView(R.layout.activity_main); 
            cb1=(CheckBox)findViewById(R.id.checkBox3); 
            cb2=(CheckBox)findViewById(R.id.checkBox4); 
            button=(Button)findViewById(R.id.button); 
     
            button.setOnClickListener(new View.OnClickListener() { 
                @Override 
                public void onClick(View v) { 
                    StringBuilder sb=new StringBuilder(""); 
     
                    if(cb1.isChecked()){ 
                        String s1=cb1.getText().toString(); 
                        sb.append(s1); 
                    } 
     
                    if(cb2.isChecked()){ 
                        String s2=cb2.getText().toString(); 
                        sb.append("\n"+s2); 
     
                    } 
                    if(sb!=null && !sb.toString().equals("")){ 
                        Toast.makeText(getApplicationContext(), sb, Toast.LENGTH_LONG).show(); 
     
                    } 
                    else{ 
                        Toast.makeText(getApplicationContext(),"Nothing Selected", Toast.LENGTH_LONG).show(); 
                    } 
     
                } 
     
            }); 
        } 
    } 

এখানে আমি দুই ধরনের চেকবক্সই রাখলাম যাতে , তোমাদের সুবিধে হয় , কি পারথক্য ? ডিফল্ট আর কাস্টম এর ভেতরে ?  সেটা বুঝতে !! আশা করি কিছুক্ষন এটা নিয়ে ভাবলে আরো পরিষ্কার হয়ে যাবে , বিষয়গুলি !! এভাবে , আমরা অনেক বাটনের পরিবর্তে ইমেজ দিতে পারি , চেকবক্স হিসেব !! আজ এইটুকুই !!

No comments:

Post a Comment