এন্ড্রয়েডঃ AppCompatActivity তে ActionBar বা App Bar নিয়ে কাজ করা

ম্যাটেরিয়াল ডিজাইন এন্ড্রয়েডে আনার পর ActionBar কে বলা হচ্ছে AppBar বা Tool Bar. আর আগের ActionBarActivity ও ডেপ্রিকেটেড। এখন সূচনা করা হয়েছে AppCompact Activity.

AppCompat সম্পর্কে একটু বিস্তারিত নিচের লেখা থেকে জানা যাবে।

এখন AppBar বা Tool Bar ব্যবহার করতে হলে অল্প কিছু পরিবর্তন করতে হবে আমাদের। আমরা নিচের মত একটা সিম্পল অ্যাপ তৈরি করবঃ

appbar

আমাদের activity_main.xml এ কিছু পরিবর্তন করতে হবে না অ্যাপ বার নিয়ে কাজ করতে হলে। activity_main.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity"
    tools:ignore="MergeRootFrame">


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        android:id="@+id/textView"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />
</RelativeLayout>

menu_main.xml এ ডিফল্ট একটা মেনু থাকে। Settings নামে। একটা ড্রপ ডাউনে ক্লিক করলে Settings দেখায়। ড্রপ ডাউনে অপশন গুলো না দেখিয়ে আমরা অ্যাপবারেওই দেখাবো। তাই একটু পরিবর্তন এনেছি। এবং নতুন আরেকটা আইটেম যুক্ত করেছি। যেন বুঝতে পারি কিভাবে অ্যাপ বারে আমরা মেনু যুক্ত করতে পারি।


<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto" >

    <item
        android:id="@+id/action_settings"
        android:orderInCategory="100"
        android:showAsAction="always"
        app:showAsAction="always"
        android:title="@string/action_settings"/>

    <item
        android:id="@+id/android_icon"
        android:icon="@mipmap/ic_launcher"
        android:showAsAction="always"
        app:showAsAction="always"
        android:title="thirdone"/>



</menu>

AndroidManifest.xml এ আমাদের AppCompact থিম যুক্ত করতে হবে। application ট্যাগের ভেতর android:theme=”@style/Theme.AppCompat.Light” বা অন্য কোন থিম যুক্ত করতে হবে।
সম্পুর্ণ AndroidManifest.xml:


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="us.studiojh.appbar" >

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Theme.AppCompat.Light" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

মূলত MainActivity.java ফাইলে আমাদের কিছু পরিবর্তন করতে হবে। extends ActionBarActivity বা অন্য কোন এক্টিভিটি থাকলে তা পরিবর্তন করে extends AppCompatActivity দিতে হবে। android.support.v7.app.AppCompatActivity; ইম্পোর্ট করতে হবে।

আর অ্যাপ বারের কোন আইটেমে ক্লিক করলে কি রেস্পন্স করবে, তার কোড লিখতে হবে। আপাতত আমরা শুধু একটা Toast দেখাচ্ছি। নিচে সম্পুর্ণ জাভা কোডঃ

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;


public class MainActivity extends AppCompatActivity {


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

    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        int id = item.getItemId();


        if (id == R.id.action_settings) {

            Toast.makeText(MainActivity.this, "Setting selected", Toast.LENGTH_LONG).show();


        } else if (id == R.id.android_icon) {

            Toast.makeText(MainActivity.this, "Android icon selected", Toast.LENGTH_LONG).show();


        }

        return super.onOptionsItemSelected(item);
    }
}


Leave a Reply

Your email address will not be published. Required fields are marked *