বাংলায় অ্যান্ড্রয়েড সহায়িকা - Bangla Android Guide

ওরিয়েন্টেশন কোয়ালিফায়ার ব্যবহার করা

কিছু লেআউট ল্যান্ডস্কেপ এবং পোট্রেইট উভয় ক্ষেত্রেই ভালোভাবে কাজ করে, কিন্তু তাদের অধিকাংশই অ্যাডজাস্টমেন্ট থেকে সুবিধাপ্রপ্ত হয়। নিউজ রিডার নমুনা অ্যাপের মধ্যে, এখানে আছে কীভাবে লেআউট প্রতিটা স্ক্রিন সাইজ এবং ওরিয়েন্টেশনে আচরণ করে:

  • small screen, portrait: single pane, with logo

  • small screen, landscape: single pane, with logo

  • 7" tablet, portrait: single pane, with action bar

  • 7" tablet, landscape: dual pane, wide, with action bar

  • 10" tablet, portrait: dual pane, narrow, with action bar

  • 10" tablet, landscape: dual pane, wide, with action bar

  • TV, landscape: dual pane, wide, with action bar

সুতরাং এই লেআউটগুলোর প্রতিটা res/layout/ ডিরেক্টরির মধ্যে একটি XML ফাইলে নির্ধারিত। এখন ভিন্ন স্ক্রিন কনফিগারেশনে প্রতিটা লেআউট নির্দিষ্ট করতে, অ্যাপ প্রতিটা কনফিগারেশনে তাদেও ম্যাচ করাতে লেআউট এলিয়াস (উপনাম) ব্যবহার করে:

res/layout/onepane.xml:

-

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <fragment android:id="@+id/headlines"
              android:layout_height="fill_parent"
              android:name="com.example.android.newsreader.HeadlinesFragment"
              android:layout_width="match_parent" />
</LinearLayout>

-

res/layout/onepane_with_bar.xml:

-

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout android:layout_width="match_parent"
                  android:id="@+id/linearLayout1"
                  android:gravity="center"
                  android:layout_height="50dp">
        <ImageView android:id="@+id/imageView1"
                   android:layout_height="wrap_content"
                   android:layout_width="wrap_content"
                   android:src="@drawable/logo"
                   android:paddingRight="30dp"
                   android:layout_gravity="left"
                   android:layout_weight="0" />
        <View android:layout_height="wrap_content"
              android:id="@+id/view1"
              android:layout_width="wrap_content"
              android:layout_weight="1" />
        <Button android:id="@+id/categorybutton"
                android:background="@drawable/button_bg"
                android:layout_height="match_parent"
                android:layout_weight="0"
                android:layout_width="120dp"
                style="@style/CategoryButtonStyle"/>
    </LinearLayout>

    <fragment android:id="@+id/headlines"
              android:layout_height="fill_parent"
              android:name="com.example.android.newsreader.HeadlinesFragment"
              android:layout_width="match_parent" />
</LinearLayout>

-

res/layout/twopanes.xml:

-

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal">
    <fragment android:id="@+id/headlines"
              android:layout_height="fill_parent"
              android:name="com.example.android.newsreader.HeadlinesFragment"
              android:layout_width="400dp"
              android:layout_marginRight="10dp"/>
    <fragment android:id="@+id/article"
              android:layout_height="fill_parent"
              android:name="com.example.android.newsreader.ArticleFragment"
              android:layout_width="fill_parent" />
</LinearLayout>

-

res/layout/twopanes_narrow.xml:

-

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal">
    <fragment android:id="@+id/headlines"
              android:layout_height="fill_parent"
              android:name="com.example.android.newsreader.HeadlinesFragment"
              android:layout_width="200dp"
              android:layout_marginRight="10dp"/>
    <fragment android:id="@+id/article"
              android:layout_height="fill_parent"
              android:name="com.example.android.newsreader.ArticleFragment"
              android:layout_width="fill_parent" />
</LinearLayout>

উল্লেখ্য যে সকল সম্ভাব্য লেআউট নির্ধারিত, এটা এখন শুধু কনফিগারেশন কোয়ালিফায়ার ব্যবহার করে প্রতিটা কনফিগারেশনে সঠিক লেআউট ম্যাপ করার বিষয়। এখন আপনি এটা লেআউট এলিয়াস কৌশল ব্যবহার করে করতে পারেন:

res/values/layouts.xml:

-

<resources>
    <item name="main_layout" type="layout">@layout/onepane_with_bar</item>
    <bool name="has_two_panes">false</bool>
</resources>

-

res/values-sw600dp-land/layouts.xml:

-

<resources>
    <item name="main_layout" type="layout">@layout/twopanes</item>
    <bool name="has_two_panes">true</bool>
</resources>

-

res/values-sw600dp-port/layouts.xml:

-

<resources>
    <item name="main_layout" type="layout">@layout/onepane</item>
    <bool name="has_two_panes">false</bool>
</resources>

-

res/values-large-land/layouts.xml:

-

<resources>
    <item name="main_layout" type="layout">@layout/twopanes</item>
    <bool name="has_two_panes">true</bool>
</resources>

-

res/values-large-port/layouts.xml:

-

<resources>
    <item name="main_layout" type="layout">@layout/twopanes_narrow</item>
    <bool name="has_two_panes">true</bool>
</resources>