ড্রয়েবল রিসোর্স

ড্রয়েবল রিসোর্স হল গ্রাফিকের একটি সাধারণ ধারণা যা স্ক্রিনে আঁকা যায় এবং আপনি getDrawable(int)-এর মতো API-এর মাধ্যমে তা ফিরিয়ে আনতে পারেন অথবা android:drawable ও android:icon-এর মতো অ্যাট্রিবিউট সহ অন্য XML রিসোর্সে প্রয়োগ করতে পারেন। বিভিন্ন ধরনের ড্রয়েবল আছে:

বিটম্যাপ ফাইল
বিটম্যাপ গ্রাফিক ফাইল (PNG, WEBP, JPG বা GIF)। BitmapDrawable তৈরি করে।
নাইন-প্যাচ ফাইল
কন্টেন্টের (.9.png) উপর ভিত্তি করে ছবির সাইজ পরিবর্তন করার জন্য স্ট্রেচ করা যায় এমন অঞ্চল সহ PNG ফাইল। NinePatchDrawable তৈরি করে।
লেয়ারের তালিকা
একটি ড্রয়েবল যা অন্যান্য ড্রয়েবলের অ্যারে ম্যানেজ করে। এগুলি অ্যারে ক্রমে আঁকা হয়, তাই সবচেয়ে বড় ইন্ডেক্স সহ এলিমেন্টটি উপরে আঁকা হয়। LayerDrawable তৈরি করে।
রাজ্যের তালিকা
একটি XML ফাইল যা বিভিন্ন অবস্থার জন্য বিভিন্ন বিটম্যাপ গ্রাফিক্সকে রেফারেন্স করে— উদাহরণস্বরূপ, কোনও বোতাম ট্যাপ করা হলে একটি ভিন্ন ছবি ব্যবহার করা। StateListDrawable তৈরি করে।
লেভেলের তালিকা
একটি XML ফাইল যা একটি ড্রয়েবলকে সংজ্ঞায়িত করে যা একাধিক বিকল্প ড্রয়েবলকে ম্যানেজ করে, যার প্রত্যেকটিকে একটি সর্বাধিক সংখ্যাসূচক মান অ্যাসাইন করা হয়। LevelListDrawable তৈরি করে।
ট্রানজিশন ড্রয়েবল
একটি XML ফাইল যা এমন একটি ড্রয়েবলকে সংজ্ঞায়িত করে যা দুটি ড্রয়েবল রিসোর্সের মধ্যে ক্রস-ফেড করতে পারে। TransitionDrawable তৈরি করে।
ইনসেট ড্রয়েবল
একটি XML ফাইল যা একটি ড্রয়েবলকে সংজ্ঞায়িত করে যা নির্দিষ্ট দূরত্বে অন্য একটি ড্রয়েবলকে ইনসেট করে। কোনও ভিউয়ের জন্য ব্যাকগ্রাউন্ড ড্রয়েবল প্রয়োজন হলে এটি কাজে লাগে, যা ভিউয়ের আসল বাউন্ডের থেকে ছোট হয়।
ক্লিপ ড্রয়েবল
একটি XML ফাইল যা একটি ড্রয়েবলকে সংজ্ঞায়িত করে যা এই ড্রয়েবলের বর্তমান লেভেল ভ্যালুর উপর ভিত্তি করে অন্য একটি ড্রয়েবলকে ক্লিপ করে। ClipDrawable তৈরি করে।
স্কেল ড্রয়েবল
একটি XML ফাইল যা একটি ড্রয়েবলকে সংজ্ঞায়িত করে যা অন্য ড্রয়েবলের আকার পরিবর্তন করে তার বর্তমান লেভেল ভ্যালুর উপর ভিত্তি করে। ScaleDrawable
তৈরি করে
শেপ ড্রয়েবল।
একটি XML ফাইল যা রঙ এবং গ্রেডিয়েন্ট সহ একটি জ্যামিতিক আকৃতিকে সংজ্ঞায়িত করে। GradientDrawable তৈরি করে।

কীভাবে AnimationDrawable তৈরি করতে হয় সেই সম্পর্কে তথ্য পেতে, অ্যানিমেশন রিসোর্স ডকুমেন্ট দেখুন।

মনে রাখবেন: XML-এ ড্রয়েবল হিসেবেও কালার রিসোর্স ব্যবহার করা যেতে পারে। যেমন, স্টেট লিস্ট ড্রয়েবল তৈরি করার সময়, আপনি android:drawable অ্যাট্রিবিউটের (android:drawable="@color/green") জন্য কালার রিসোর্স রেফারেন্স করতে পারেন।

Bitmap

একটি বিটম্যাপ ছবি। Android-এ নিম্নলিখিত ফর্ম্যাটে বিটম্যাপ ফাইল ব্যবহার করা যায়: PNG (পছন্দসই), WEBP (পছন্দসই, API লেভেল ১৭ বা তার বেশি প্রয়োজন), JPG (গ্রহণযোগ্য), GIF (ব্যবহার না করার পরামর্শ দেওয়া হয়)।

রিসোর্স আইডি হিসেবে ফাইলের নাম ব্যবহার করে আপনি সরাসরি বিটম্যাপ ফাইল রেফারেন্স করতে পারেন অথবা XML-এ একটি এলিয়াস রিসোর্স আইডি তৈরি করতে পারেন।

মনে রাখবেন: বিল্ড প্রসেস চলাকালীন aapt টুলের মাধ্যমে বিটম্যাপ ফাইলগুলি লসলেস ইমেজ কম্প্রেশনের সাথে অটোমেটিক অপ্টিমাইজ করা হতে পারে। যেমন, একটি ট্রু-কালার PNG-তে ২৫৬টির বেশি রঙের প্রয়োজন না হলে, সেটি কালার প্যালেট সহ ৮-বিট PNG-তে কনভার্ট করা হতে পারে। এর ফলে একই কোয়ালিটির ছবি পাওয়া যায় যার জন্য কম মেমরি প্রয়োজন হয়।

তাই, মনে রাখবেন যে এই ডিরেক্টরিতে রাখা ইমেজ বাইনারি বিল্ডের সময় পরিবর্তন হতে পারে। আপনি যদি কোনও ছবিকে বিটম্যাপে কনভার্ট করার জন্য বিট স্ট্রিম হিসেবে পড়ার পরিকল্পনা করেন, তাহলে আপনার ছবিগুলি পরিবর্তে res/raw/ ফোল্ডারে রাখুন, যেখানে সেগুলি অপ্টিমাইজ করা হয় না।

বিটম্যাপ ফাইল

বিটম্যাপ ফাইল হল PNG, WEBP, JPG বা GIF ফাইল। আপনি res/drawable/ ডিরেক্টরিতে এইসব ফাইলের যেকোনও একটি সেভ করলে, Android একটি Drawable রিসোর্স তৈরি করে।

ফাইলের লোকেশন:
res/drawable/filename.png (.png, .webp, .jpg, অথবা .gif)
ফাইলের নাম হল রিসোর্স আইডি
কম্পাইল করা রিসোর্স ডেটাটাইপ:
রিসোর্স পয়েন্টার থেকে BitmapDrawable
রিসোর্স রেফারেন্স:
Java-তে: R.drawable.filename
XML-এ: @[package:]drawable/filename
উদাহরণ:
res/drawable/myimage.png-এ সেভ করা ছবির সাথে, এই লেআউট XML ছবিটিকে একটি ভিউতে প্রয়োগ করে:
<ImageView
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:src="@drawable/myimage" />

নিম্নলিখিত অ্যাপ্লিকেশন কোড Drawable হিসেবে ছবি ফিরিয়ে আনে:

Kotlin

val drawable: Drawable? = ResourcesCompat.getDrawable(resources, R.drawable.myimage, null)

জাভা

Resources res = getResources();
Drawable drawable = ResourcesCompat.getDrawable(res, R.drawable.myimage, null);
আরও দেখুন:

XML বিটম্যাপ

XML বিটম্যাপ হল XML-এ সংজ্ঞায়িত একটি রিসোর্স যা একটি বিটম্যাপ ফাইলকে নির্দেশ করে। এফেক্টটি হল একটি র বিটম্যাপ ফাইলের উপনাম। XML বিটম্যাপের জন্য অতিরিক্ত প্রপার্টি নির্দিষ্ট করতে পারে, যেমন ডিথারিং এবং টাইলিং।

মনে রাখবেন: আপনি <item> এলিমেন্টের চাইল্ড হিসেবে <bitmap> এলিমেন্ট ব্যবহার করতে পারবেন। যেমন, স্টেট লিস্ট বা লেয়ার লিস্ট তৈরি করার সময়, আপনি <item> এলিমেন্ট থেকে android:drawable অ্যাট্রিবিউট বাদ দিতে পারেন এবং এর মধ্যে <bitmap> নেস্ট করতে পারেন যা ড্রয়েবল আইটেমকে সংজ্ঞায়িত করে।

ফাইলের লোকেশন:
res/drawable/filename.xml
ফাইলের নাম হল রিসোর্স আইডি
কম্পাইল করা রিসোর্স ডেটাটাইপ:
রিসোর্স পয়েন্টার থেকে BitmapDrawable
রিসোর্স রেফারেন্স:
Java-তে: R.drawable.filename
XML-এ: @[package:]drawable/filename
সিনট্যাক্স:
<?xml version="1.0" encoding="utf-8"?>
<bitmap
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@[package:]drawable/drawable_resource"
    android:antialias=["true" | "false"]
    android:dither=["true" | "false"]
    android:filter=["true" | "false"]
    android:gravity=["top" | "bottom" | "left" | "right" | "center_vertical" |
                      "fill_vertical" | "center_horizontal" | "fill_horizontal" |
                      "center" | "fill" | "clip_vertical" | "clip_horizontal"]
    android:mipMap=["true" | "false"]
    android:tileMode=["disabled" | "clamp" | "repeat" | "mirror"] />
এলিমেন্ট:
<bitmap>
প্রয়োজনীয়। বিটম্যাপ সোর্স ও তার প্রপার্টি নির্ধারণ করে।

গুণাবলী:

xmlns:android
String. XML নেমস্পেস নির্ধারণ করে, যা অবশ্যই "http://schemas.android.com/apk/res/android" হতে হবে। <bitmap> রুট এলিমেন্ট হলে তবেই এটি প্রয়োজন। <bitmap>, <item>-এর মধ্যে নেস্ট করা থাকলে এটির প্রয়োজন হয় না।
android:src
ড্রয়েবল রিসোর্স। প্রয়োজনীয়। ড্রয়েবল রিসোর্সের রেফারেন্স।
android:antialias
বুলিয়ান। অ্যান্টিঅ্যালাইজিং চালু বা বন্ধ করে।
android:dither
বুলিয়ান। বিটম্যাপের পিক্সেল কনফিগারেশন স্ক্রিনের মতো না হলে, বিটম্যাপের ডিথারিং চালু বা বন্ধ করে, যেমন RGB 565 স্ক্রিনে ARGB 8888 বিটম্যাপ।
android:filter
বুলিয়ান। বিটম্যাপ ফিল্টারিং চালু বা বন্ধ করে। বিটম্যাপের চেহারা মসৃণ করার জন্য বিটম্যাপ সঙ্কুচিত বা প্রসারিত করা হলে ফিল্টারিং ব্যবহার করা হয়।
android:gravity
কীওয়ার্ড। বিটম্যাপের জন্য গ্র্যাভিটি সংজ্ঞায়িত করে। বিটম্যাপ কন্টেনারের থেকে ছোট হলে, কন্টেনারে ড্রয়েবল কোথায় পজিশন করতে হবে তা গ্র্যাভিটি নির্দেশ করে।

| দ্বারা আলাদা করা নিম্নলিখিত কনস্ট্যান্ট ভ্যালুর মধ্যে এক বা একাধিক হতে হবে:

মানবর্ণনা
top অবজেক্টটি তার কন্টেনারের উপরে রাখুন, এর সাইজ পরিবর্তন করবেন না।
bottom অবজেক্টটি তার কন্টেনারের নিচে রাখুন, এর সাইজ পরিবর্তন করবেন না।
left অবজেক্টটি তার কন্টেনারের বাঁদিকের প্রান্তে রাখুন, এর সাইজ পরিবর্তন করবেন না।
right অবজেক্টের সাইজ পরিবর্তন না করে, কন্টেনারের ডানদিকের প্রান্তে অবজেক্টটি রাখুন।
center_vertical অবজেক্টের সাইজ পরিবর্তন না করে, কন্টেনারের উল্লম্ব কেন্দ্রে অবজেক্টটি রাখুন।
fill_vertical প্রয়োজন হলে, অবজেক্টের উল্লম্ব সাইজ বাড়াও যাতে এটি কন্টেনার সম্পূর্ণভাবে পূরণ করে।
center_horizontal অবজেক্টের সাইজ পরিবর্তন না করে, কন্টেনারের অনুভূমিক কেন্দ্রে অবজেক্টটি রাখুন।
fill_horizontal প্রয়োজন হলে অবজেক্টের অনুভূমিক সাইজ বাড়ান যাতে এটি কন্টেনার সম্পূর্ণভাবে পূরণ করে।
center অবজেক্টের সাইজ পরিবর্তন না করে, সেটির কন্টেনারের কেন্দ্রে উল্লম্ব ও অনুভূমিক অক্ষ বরাবর অবজেক্টটি রাখুন।
fill প্রয়োজন হলে অবজেক্টের অনুভূমিক ও উল্লম্ব সাইজ বাড়ান যাতে এটি সম্পূর্ণভাবে কন্টেনারকে ভরে দেয়। এটি ডিফল্ট বিকল্প।
clip_vertical অতিরিক্ত বিকল্প যা চাইল্ডের উপরের এবং/অথবা নিচের প্রান্তগুলি এর কন্টেনারের সীমানায় ক্লিপ করার জন্য সেট করা যেতে পারে। ক্লিপটি উল্লম্ব গ্র্যাভিটির উপর ভিত্তি করে তৈরি: উপরের গ্র্যাভিটি নিচের প্রান্তকে ক্লিপ করে, নিচের গ্র্যাভিটি উপরের প্রান্তকে ক্লিপ করে এবং কোনওটিই দুটি প্রান্তকে ক্লিপ করে না।
clip_horizontal অতিরিক্ত বিকল্প যা চাইল্ডের বাঁদিকের এবং/অথবা ডানদিকের প্রান্তকে তার কন্টেনারের সীমানায় ক্লিপ করার জন্য সেট করা যেতে পারে। ক্লিপটি অনুভূমিক গ্র্যাভিটির উপর ভিত্তি করে তৈরি: বাঁদিকের গ্র্যাভিটি ডানদিকের প্রান্তকে ক্লিপ করে, ডানদিকের গ্র্যাভিটি বাঁদিকের প্রান্তকে ক্লিপ করে এবং কোনওটিই দুটি প্রান্তকে ক্লিপ করে না।
android:mipMap
বুলিয়ান। মিপম্যাপ ইঙ্গিত চালু বা বন্ধ করে। আরও তথ্যের জন্য setHasMipMap() দেখুন। ডিফল্ট ভ্যালু হল false।
android:tileMode
কীওয়ার্ড। টাইল মোড কেমন তা বোঝায়। টাইল মোড চালু করা থাকলে, বিটম্যাপ রিপিট করা হয়। টাইল মোড চালু থাকলে গ্র্যাভিটি উপেক্ষা করা হয়।

নিম্নলিখিত ধ্রুবক মানগুলির মধ্যে একটি হতে হবে:

মানবর্ণনা
disabled বিটম্যাপ টাইল করবেন না। এটি হল ডিফল্ট ভ্যালু।
clamp শেডার তার আসল সীমানার বাইরে আঁকলে, প্রান্তের রঙ রেপ্লিকেট করুন
repeat শেডারের ছবি অনুভূমিক ও উল্লম্বভাবে রিপিট করুন।
mirror শেডারের ছবি অনুভূমিক ও উল্লম্বভাবে রিপিট করুন, মিরর ছবি অল্টারনেট করুন যাতে পাশাপাশি ছবি সবসময় সিমলেস হয়।
উদাহরণ:
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/icon"
    android:tileMode="repeat" />
আরও দেখুন:

নাইন-প্যাচ

NinePatch হল একটি PNG ছবি যেখানে আপনি স্ট্রেচ করা যায় এমন অঞ্চল নির্ধারণ করতে পারেন যা Android স্কেল করে যখন ভিউয়ের মধ্যে থাকা কন্টেন্ট সাধারণ ছবির সীমা অতিক্রম করে। আপনি সাধারণত এই ধরনের ছবিকে এমন একটি ভিউয়ের ব্যাকগ্রাউন্ড হিসেবে অ্যাসাইন করেন যার অন্তত একটি ডাইমেনশন "wrap_content"-এ সেট করা থাকে।

কন্টেন্ট দেখানোর জন্য ভিউ বড় করা হলে, ভিউয়ের সাইজের সাথে ম্যাচ করার জন্য নাইন-প্যাচ ইমেজও স্কেল করা হয়। নাইন-প্যাচ ছবির ব্যবহারের একটি উদাহরণ হল Android-এর স্ট্যান্ডার্ড Button উইজেটের ব্যবহার করা ব্যাকগ্রাউন্ড, যা বোতামের মধ্যে টেক্সট (বা ছবি) অ্যাকোমোডেট করার জন্য অবশ্যই স্ট্রেচ করতে হবে।

সাধারণ বিটম্যাপ-এর মতো, আপনি সরাসরি বা XML দ্বারা সংজ্ঞায়িত রিসোর্স থেকে নাইন-প্যাচ ফাইল রেফারেন্স করতে পারেন।

স্ট্রেচ করা যায় এমন অঞ্চল সহ নাইন-প্যাচ ফাইল কীভাবে তৈরি করতে হয় সেই সম্পর্কে সম্পূর্ণ আলোচনা দেখতে, ছোট-বড় করা যায় এমন বিটম্যাপ (৯-প্যাচ ফাইল) তৈরি করুন দেখুন।

নাইন-প্যাচ ফাইল

ফাইলের লোকেশন:
res/drawable/filename.9.png
ফাইলের নাম হল রিসোর্স আইডি
কম্পাইল করা রিসোর্স ডেটাটাইপ:
রিসোর্স পয়েন্টার থেকে NinePatchDrawable
রিসোর্স রেফারেন্স:
Java-তে: R.drawable.filename
XML-এ: @[package:]drawable/filename
উদাহরণ:
res/drawable/myninepatch.9.png-এ সেভ করা ছবির সাথে, এই লেআউট XML একটি ভিউতে নাইন-প্যাচ প্রয়োগ করে:
<Button
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:background="@drawable/myninepatch" />
আরও দেখুন:

XML নাইন-প্যাচ

XML নাইন-প্যাচ হল XML-এ সংজ্ঞায়িত একটি রিসোর্স যা নাইন-প্যাচ ফাইলকে নির্দেশ করে। XML-এ ছবির জন্য ডিথারিং উল্লেখ করা যেতে পারে।

ফাইলের লোকেশন:
res/drawable/filename.xml
ফাইলের নাম হল রিসোর্স আইডি
কম্পাইল করা রিসোর্স ডেটাটাইপ:
রিসোর্স পয়েন্টার থেকে NinePatchDrawable
রিসোর্স রেফারেন্স:
Java-তে: R.drawable.filename
XML-এ: @[package:]drawable/filename
সিনট্যাক্স:
<?xml version="1.0" encoding="utf-8"?>
<nine-patch
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@[package:]drawable/drawable_resource"
    android:dither=["true" | "false"] />
এলিমেন্ট:
<nine-patch>
প্রয়োজনীয়। নাইন-প্যাচ সোর্স ও তার প্রপার্টি নির্ধারণ করে।

গুণাবলী:

xmlns:android
String. প্রয়োজনীয়। XML নেমস্পেস নির্ধারণ করে, যা অবশ্যই "http://schemas.android.com/apk/res/android" হতে হবে।
android:src
ড্রয়েবল রিসোর্স। প্রয়োজনীয়। নাইন-প্যাচ ফাইলের রেফারেন্স।
android:dither
বুলিয়ান। বিটম্যাপের পিক্সেল কনফিগারেশন স্ক্রিনের মতো না হলে, বিটম্যাপের ডিথারিং চালু বা বন্ধ করে, যেমন RGB 565 স্ক্রিনে ARGB 8888 বিটম্যাপ।
উদাহরণ:
<?xml version="1.0" encoding="utf-8"?>
<nine-patch xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/myninepatch"
    android:dither="false" />

লেয়ারের তালিকা

LayerDrawable হল একটি আঁকা যায় এমন অবজেক্ট যা অন্যান্য আঁকা যায় এমন অবজেক্টের একটি অ্যারে ম্যানেজ করে। তালিকার প্রতিটি ড্রয়েবল তালিকার ক্রম অনুযায়ী আঁকা হয়। তালিকায় থাকা শেষ ড্রয়েবলটি উপরে আঁকা হয়।

প্রতিটি ড্রয়েবল একটি <layer-list> এলিমেন্টের মধ্যে একটি <item> এলিমেন্ট দ্বারা উপস্থাপিত হয়।

ফাইলের লোকেশন:
res/drawable/filename.xml
ফাইলের নাম হল রিসোর্স আইডি
কম্পাইল করা রিসোর্স ডেটাটাইপ:
রিসোর্স পয়েন্টার থেকে LayerDrawable
রিসোর্স রেফারেন্স:
Java-তে: R.drawable.filename
XML-এ: @[package:]drawable/filename
সিনট্যাক্স:
<?xml version="1.0" encoding="utf-8"?>
<layer-list
    xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:drawable="@[package:]drawable/drawable_resource"
        android:id="@[+][package:]id/resource_name"
        android:top="dimension"
        android:right="dimension"
        android:bottom="dimension"
        android:left="dimension" />
</layer-list>
এলিমেন্ট:
<layer-list>
প্রয়োজনীয়। এটি অবশ্যই রুট এলিমেন্ট হতে হবে। এক বা একাধিক <item> এলিমেন্ট আছে।

গুণাবলী:

xmlns:android
String. প্রয়োজনীয়। XML নেমস্পেস নির্ধারণ করে, যা অবশ্যই "http://schemas.android.com/apk/res/android" হতে হবে।
<item>
লেয়ার ড্রয়েবলে ড্রয়েবল প্লেস করার জন্য এটি সংজ্ঞায়িত করে, এর অ্যাট্রিবিউট দ্বারা সংজ্ঞায়িত পজিশনে। <layer-list> এলিমেন্টের চাইল্ড হতে হবে। চাইল্ড <bitmap> এলিমেন্ট গ্রহণ করে।

গুণাবলী:

android:drawable
ড্রয়েবল রিসোর্স। প্রয়োজনীয়। ড্রয়েবল রিসোর্সের রেফারেন্স।
android:id
রিসোর্স আইডি। এই ড্রয়েবেলের জন্য একটি অনন্য রিসোর্স আইডি। এই আইটেমের জন্য নতুন রিসোর্স আইডি তৈরি করতে, ফর্মটি ব্যবহার করুন: "@+id/name". প্লাস চিহ্নটি ইঙ্গিত করে যে এটি একটি নতুন আইডি হিসাবে তৈরি করা হয়েছে। আপনি এই শনাক্তকারী ব্যবহার করে View.findViewById() বা Activity.findViewById()-এর মাধ্যমে ড্রয়েবল ফিরিয়ে আনতে ও পরিবর্তন করতে পারবেন।
android:top
ডাইমেনশন। ডাইমেনশন ভ্যালু বা ডাইমেনশন রিসোর্স হিসেবে টপ অফসেট।
android:right
ডাইমেনশন। ডাইমেনশন ভ্যালু বা ডাইমেনশন রিসোর্স হিসেবে ডানদিকের অফসেট।
android:bottom
ডাইমেনশন। ডাইমেনশন ভ্যালু বা ডাইমেনশন রিসোর্স হিসেবে নিচের অফসেট।
android:left
ডাইমেনশন। বাঁদিকের অফসেট, ডাইমেনশন ভ্যালু বা ডাইমেনশন রিসোর্স হিসেবে।

ডিফল্ট হিসেবে, সব আঁকা যায় এমন আইটেমকে কন্টেনিং ভিউয়ের সাইজে ফিট করার জন্য স্কেল করা হয়। তাই, আপনার ছবিগুলি বিভিন্ন পজিশনে লেয়ার লিস্টে রাখলে ভিউয়ের সাইজ বাড়তে পারে এবং কিছু ছবি উপযুক্তভাবে স্কেল করা হয়।

তালিকায় আইটেম স্কেল করা এড়াতে, <item> এলিমেন্টের মধ্যে <bitmap> এলিমেন্ট ব্যবহার করে ড্রয়েবল নির্দিষ্ট করুন এবং গ্র্যাভিটি এমন কিছুতে নির্ধারণ করুন যা স্কেল করে না, যেমন "center"। যেমন, নিম্নলিখিত <item> এমন একটি আইটেমকে সংজ্ঞায়িত করে যা তার কন্টেনার ভিউতে ফিট করার জন্য স্কেল করে:

<item android:drawable="@drawable/image" />

স্কেলিং এড়াতে, নিম্নলিখিত উদাহরণে কেন্দ্রিক গ্র্যাভিটি সহ একটি <bitmap> এলিমেন্ট ব্যবহার করা হয়েছে:

<item>
  <bitmap android:src="@drawable/image"
          android:gravity="center" />
</item>
উদাহরণ:
XML ফাইল res/drawable/layers.xml-এ সেভ করা হয়েছে:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
      <bitmap android:src="@drawable/android_red"
        android:gravity="center" />
    </item>
    <item android:top="10dp" android:left="10dp">
      <bitmap android:src="@drawable/android_green"
        android:gravity="center" />
    </item>
    <item android:top="20dp" android:left="20dp">
      <bitmap android:src="@drawable/android_blue"
        android:gravity="center" />
    </item>
</layer-list>

এই উদাহরণে "center" গ্র্যাভিটি সহ প্রতিটি আইটেমের জন্য ড্রয়েবল রিসোর্স সংজ্ঞায়িত করতে নেস্টেড <bitmap> এলিমেন্ট ব্যবহার করা হয়েছে। এটি নিশ্চিত করে যে অফসেট ছবির কারণে রিসাইজ করার জন্য কোনও ছবিই কন্টেনারের সাইজে ফিট করার জন্য স্কেল করা হয় না।

এই লেআউট XML, ভিউতে ড্রয়েবল প্রয়োগ করে:

<ImageView
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:src="@drawable/layers" />

এর ফলে ক্রমবর্ধমান অফসেট ছবির একটি স্ট্যাক তৈরি হয়:

আরও দেখুন:

রাজ্যের তালিকা

StateListDrawable হল XML-এ সংজ্ঞায়িত একটি আঁকা যায় এমন অবজেক্ট যা অবজেক্টের অবস্থার উপর নির্ভর করে একই গ্রাফিক দেখানোর জন্য একাধিক ছবি ব্যবহার করে। যেমন, Button উইজেটের স্ট্যাটাস ট্যাপ করা, ফোকাস করা বা এর কোনওটিই না করা হতে পারে; স্ট্যাটাস লিস্ট ড্রয়েবল ব্যবহার করে, আপনি প্রতিটি স্ট্যাটাসের জন্য আলাদা ব্যাকগ্রাউন্ড ছবি দিতে পারেন।

আপনি XML ফাইলে স্টেট লিস্টের বিবরণ দেন। প্রতিটি গ্রাফিক একটি <selector> এলিমেন্টের মধ্যে একটি <item> এলিমেন্ট দ্বারা উপস্থাপন করা হয়। প্রতিটি <item> বিভিন্ন অ্যাট্রিবিউট ব্যবহার করে সেই অবস্থা বর্ণনা করে যেখানে এটি ড্রয়েবলের জন্য গ্রাফিক হিসেবে ব্যবহৃত হয়।

প্রতিটি স্ট্যাটাস পরিবর্তনের সময়, স্ট্যাটাস তালিকাটি উপর থেকে নিচে পর্যন্ত দেখা হয় এবং বর্তমান স্ট্যাটাসের সাথে মেলে এমন প্রথম আইটেমটি ব্যবহার করা হয়। "সবচেয়ে ভাল মিল" হওয়ার ভিত্তিতে বেছে নেওয়া হয় না, বরং রাজ্যের ন্যূনতম মাপকাঠি পূরণ করে এমন প্রথম আইটেমটি বেছে নেওয়া হয়।

ফাইলের লোকেশন:
res/drawable/filename.xml
ফাইলের নাম হল রিসোর্স আইডি
কম্পাইল করা রিসোর্স ডেটাটাইপ:
রিসোর্স পয়েন্টার থেকে StateListDrawable
রিসোর্স রেফারেন্স:
Java-তে: R.drawable.filename
XML-এ: @[package:]drawable/filename
সিনট্যাক্স:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
    android:constantSize=["true" | "false"]
    android:dither=["true" | "false"]
    android:variablePadding=["true" | "false"] >
    <item
        android:drawable="@[package:]drawable/drawable_resource"
        android:state_pressed=["true" | "false"]
        android:state_focused=["true" | "false"]
        android:state_hovered=["true" | "false"]
        android:state_selected=["true" | "false"]
        android:state_checkable=["true" | "false"]
        android:state_checked=["true" | "false"]
        android:state_enabled=["true" | "false"]
        android:state_activated=["true" | "false"]
        android:state_window_focused=["true" | "false"] />
</selector>
এলিমেন্ট:
<selector>
প্রয়োজনীয়। এটি অবশ্যই রুট এলিমেন্ট হতে হবে। এক বা একাধিক <item> এলিমেন্ট আছে।

গুণাবলী:

xmlns:android
String. প্রয়োজনীয়। XML নেমস্পেস নির্ধারণ করে, যা অবশ্যই "http://schemas.android.com/apk/res/android" হতে হবে।
android:constantSize
বুলিয়ান। স্টেট পরিবর্তন হওয়ার পরেও ড্রয়েবেলের রিপোর্ট করা ইন্টার্নাল সাইজ একই থাকলে ট্রু (সাইজ হল সব স্টেটের মধ্যে সর্বাধিক); বর্তমান স্টেটের উপর ভিত্তি করে সাইজ পরিবর্তিত হলে ফলস। ডিফল্ট হল false।
android:dither
বুলিয়ান। বিটম্যাপের পিক্সেল কনফিগারেশন স্ক্রিনের মতো না হলে, বিটম্যাপের ডিথারিং চালু করতে True; যেমন RGB 565 স্ক্রিনে ARGB 8888 বিটম্যাপ; ডিথারিং বন্ধ করতে False। ডিফল্ট হল সত্য।
android:variablePadding
বুলিয়ান। ড্রয়েবলের প্যাডিং বর্তমান নির্বাচিত অবস্থার উপর ভিত্তি করে পরিবর্তিত হলে ট্রু হিসেবে বিবেচিত হয়; সব অবস্থার সর্বাধিক প্যাডিংয়ের উপর ভিত্তি করে প্যাডিং একই থাকলে ফলস হিসেবে বিবেচিত হয়। এই ফিচার চালু করার জন্য আপনাকে স্ট্যাটাস পরিবর্তন হলে লেআউট পারফর্ম করার বিষয়টি ম্যানেজ করতে হবে, যা প্রায়শই কাজ করে না। ডিফল্ট হল false।
<item>
নির্দিষ্ট স্ট্যাটাসে ব্যবহার করার জন্য একটি ড্রয়েবলকে সংজ্ঞায়িত করে, যেমনটি এর অ্যাট্রিবিউট দ্বারা বর্ণনা করা হয়েছে। অবশ্যই একটি <selector> এলিমেন্টের চাইল্ড হতে হবে।

গুণাবলী:

android:drawable
ড্রয়েবল রিসোর্স। প্রয়োজনীয়। ড্রয়েবল রিসোর্সের রেফারেন্স।
android:state_pressed
বুলিয়ান। অবজেক্ট ট্যাপ করা হলে এই আইটেম ব্যবহার করা হলে ট্রু, যেমন কোনও বোতাম স্পর্শ করা হলে; ডিফল্ট, ট্যাপ না করা অবস্থায় এই আইটেম ব্যবহার করা হলে ফল্‌স হিসেবে বিবেচিত হয়।
android:state_focused
বুলিয়ান। অবজেক্টে ইনপুট ফোকাস থাকলে এই আইটেম ব্যবহার করা হলে ট্রু, যেমন ব্যবহারকারী টেক্সট ইনপুট বেছে নিলে; ডিফল্ট, নন-ফোকাসড অবস্থায় এই আইটেম ব্যবহার করা হলে ফল্‌স।
android:state_hovered
বুলিয়ান। কার্সর অবজেক্টের উপর হোভার করলে এই আইটেম ব্যবহার করা হলে ট্রু; ডিফল্ট, নন-হোভার্ড অবস্থায় এই আইটেম ব্যবহার করা হলে ফল্‌স। প্রায়শই, এই drawable "ফোকাস করা" স্ট্যাটাসের জন্য ব্যবহার করা drawable-এর মতোই হতে পারে।

API লেভেল ১৪-এ চালু করা হয়েছে।

android:state_selected
বুলিয়ান। দিকনির্দেশক কন্ট্রোল ব্যবহার করে নেভিগেট করার সময়, যেমন ডি-প্যাড ব্যবহার করে তালিকার মধ্যে নেভিগেট করার সময়, অবজেক্টটি ব্যবহারকারীর বর্তমান পছন্দ হলে এই আইটেমটি ব্যবহার করা হয়, সেক্ষেত্রে এটি True; অবজেক্টটি বেছে না নেওয়া হলে এই আইটেমটি ব্যবহার করা হয়, সেক্ষেত্রে এটি False।

android:state_focused পর্যাপ্ত না হলে বেছে নেওয়া স্ট্যাটাস ব্যবহার করা হয়, যেমন, তালিকা ভিউতে ফোকাস থাকলে এবং এর মধ্যে থাকা কোনও আইটেম ডি-প্যাডের মাধ্যমে বেছে নেওয়া হলে।

android:state_checkable
বুলিয়ান। অবজেক্ট বেছে নেওয়া গেলে এই আইটেম ব্যবহার করা হলে ট্রু; অবজেক্ট বেছে নেওয়া না গেলে এই আইটেম ব্যবহার করা হলে ফল্‌স হিসেবে বিবেচিত হয়। অবজেক্টটি বেছে নেওয়া যায় এমন এবং বেছে নেওয়া যায় না এমন উইজেটের মধ্যে ট্রানজিশন করতে পারলে তবেই এটি কার্যকর হয়।
android:state_checked
বুলিয়ান। অবজেক্ট বেছে নেওয়ার সময় এই আইটেম ব্যবহার করা হলে ট্রু; অবজেক্ট বেছে না নেওয়ার সময় এই আইটেম ব্যবহার করা হলে ফল্‌স হিসেবে বিবেচিত হয়।
android:state_enabled
বুলিয়ান। অবজেক্ট চালু থাকলে এই আইটেম ব্যবহার করা হলে ফলাফল True হবে, অর্থাৎ টাচ বা ক্লিক ইভেন্ট গ্রহণ করতে সক্ষম; অবজেক্ট বন্ধ থাকলে এটি ব্যবহার করা হলে ফলাফল False হবে।
android:state_activated
বুলিয়ান। অবজেক্টটি পারসিস্টেন্ট সিলেকশন হিসেবে অ্যাক্টিভেট করা হলে এই আইটেমটি ব্যবহার করা হলে True, যেমন পারসিস্টেন্ট নেভিগেশন ভিউতে আগে থেকে বেছে নেওয়া তালিকা আইটেম "হাইলাইট" করা; অবজেক্টটি অ্যাক্টিভেট না করা হলে এটি ব্যবহার করা হলে False।

API লেভেল ১১-এ চালু করা হয়েছে।

android:state_window_focused
বুলিয়ান। অ্যাপ্লিকেশন উইন্ডো ফোকাসে থাকলে এই আইটেম ব্যবহার করা হলে ট্রু, অর্থাৎ অ্যাপ্লিকেশনটি ফোরগ্রাউন্ডে আছে; অ্যাপ্লিকেশন উইন্ডো ফোকাসে না থাকলে এই আইটেম ব্যবহার করা হলে ফল্‌স, যেমন, বিজ্ঞপ্তি শেড নিচে নামানো হলে বা কোনও ডায়ালগ দেখা গেলে।

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

উদাহরণ:
XML ফাইল res/drawable/button.xml-এ সেভ করা হয়েছে:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
          android:drawable="@drawable/button_pressed" /> <!-- pressed -->
    <item android:state_focused="true"
          android:drawable="@drawable/button_focused" /> <!-- focused -->
    <item android:state_hovered="true"
          android:drawable="@drawable/button_focused" /> <!-- hovered -->
    <item android:drawable="@drawable/button_normal" /> <!-- default -->
</selector>

এই লেআউট XML, বোতামে স্টেট লিস্ট ড্রয়েবল প্রয়োগ করে:

<Button
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:background="@drawable/button" />
আরও দেখুন:

লেভেলের তালিকা

একটি ড্রয়েবল যা একাধিক বিকল্প ড্রয়েবল ম্যানেজ করে, যার প্রত্যেকটিতে একটি সর্বাধিক সংখ্যাসূচক মান অ্যাসাইন করা থাকে। setLevel()-এর মাধ্যমে ড্রয়েবলের লেভেল ভ্যালু সেট করলে, লেভেল লিস্টে ড্রয়েবল রিসোর্স লোড হয়, যার android:maxLevel ভ্যালু, পদ্ধতিতে পাস করা ভ্যালুর চেয়ে বেশি বা সমান হয়।

ফাইলের লোকেশন:
res/drawable/filename.xml
ফাইলের নাম হল রিসোর্স আইডি
কম্পাইল করা রিসোর্স ডেটাটাইপ:
রিসোর্স পয়েন্টার থেকে LevelListDrawable
রিসোর্স রেফারেন্স:
Java-তে: R.drawable.filename
XML-এ: @[package:]drawable/filename
সিনট্যাক্স:
<?xml version="1.0" encoding="utf-8"?>
<level-list
    xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:drawable="@drawable/drawable_resource"
        android:maxLevel="integer"
        android:minLevel="integer" />
</level-list>
এলিমেন্ট:
<level-list>
প্রয়োজনীয়। এটি অবশ্যই রুট এলিমেন্ট হতে হবে। এক বা একাধিক <item> এলিমেন্ট আছে।

গুণাবলী:

xmlns:android
String. প্রয়োজনীয়। XML নেমস্পেস নির্ধারণ করে, যা অবশ্যই "http://schemas.android.com/apk/res/android" হতে হবে।
<item>
নির্দিষ্ট লেভেলে ব্যবহার করার জন্য ড্রয়েবল নির্ধারণ করে।

গুণাবলী:

android:drawable
ড্রয়েবল রিসোর্স। প্রয়োজনীয়। ইনসেট করার জন্য ড্রয়েবল রিসোর্সের রেফারেন্স।
android:maxLevel
পূর্ণসংখ্যা। এই আইটেমের জন্য অনুমোদিত সর্বোচ্চ লেভেল।
android:minLevel
পূর্ণসংখ্যা। এই আইটেমের জন্য অনুমোদিত ন্যূনতম লেভেল।
উদাহরণ:
<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:drawable="@drawable/status_off"
        android:maxLevel="0" />
    <item
        android:drawable="@drawable/status_on"
        android:maxLevel="1" />
</level-list>

এটি View-এ প্রয়োগ করা হলে, setLevel() বা setImageLevel()-এর মাধ্যমে লেভেল পরিবর্তন করা যাবে।

আরও দেখুন:

ট্রানজিশন ড্রয়েবেল

TransitionDrawable হল একটি ড্রয়েবল অবজেক্ট যা অন্য দুটি ড্রয়েবল রিসোর্সের মধ্যে ক্রস-ফেড করতে পারে।

প্রতিটি ড্রয়েবল একটি <transition> এলিমেন্টের মধ্যে একটি <item> এলিমেন্ট দ্বারা উপস্থাপিত হয়। দুটির বেশি আইটেম ব্যবহার করা যাবে না। ট্রানজিশন এগিয়ে নিয়ে যেতে, startTransition()-এ কল করুন। আগের অবস্থায় ফিরে যেতে, reverseTransition()-কে কল করুন।

ফাইলের লোকেশন:
res/drawable/filename.xml
ফাইলের নাম হল রিসোর্স আইডি
কম্পাইল করা রিসোর্স ডেটাটাইপ:
রিসোর্স পয়েন্টার থেকে TransitionDrawable
রিসোর্স রেফারেন্স:
Java-তে: R.drawable.filename
XML-এ: @[package:]drawable/filename
সিনট্যাক্স:
<?xml version="1.0" encoding="utf-8"?>
<transition
xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:drawable="@[package:]drawable/drawable_resource"
        android:id="@[+][package:]id/resource_name"
        android:top="dimension"
        android:right="dimension"
        android:bottom="dimension"
        android:left="dimension" />
</transition>
এলিমেন্ট:
<transition>
প্রয়োজনীয়। এটি অবশ্যই রুট এলিমেন্ট হতে হবে। এক বা একাধিক <item> এলিমেন্ট আছে।

গুণাবলী:

xmlns:android
String. প্রয়োজনীয়। XML নেমস্পেস নির্ধারণ করে, যা অবশ্যই "http://schemas.android.com/apk/res/android" হতে হবে।
<item>
ড্রয়েবল ট্রানজিশনের অংশ হিসেবে ব্যবহার করার জন্য ড্রয়েবলকে সংজ্ঞায়িত করে। <transition> এলিমেন্টের চাইল্ড হতে হবে। চাইল্ড <bitmap> এলিমেন্ট গ্রহণ করে।

গুণাবলী:

android:drawable
ড্রয়েবল রিসোর্স। প্রয়োজনীয়। ড্রয়েবল রিসোর্সের রেফারেন্স।
android:id
রিসোর্স আইডি। এই ড্রয়েবলের জন্য একটি অনন্য রিসোর্স আইডি। এই আইটেমের জন্য নতুন রিসোর্স আইডি তৈরি করতে, ফর্মটি ব্যবহার করুন: "@+id/name". প্লাস চিহ্নটি ইঙ্গিত করে যে এটি একটি নতুন আইডি হিসাবে তৈরি করা হয়েছে। আপনি এই শনাক্তকারী ব্যবহার করে View.findViewById() বা Activity.findViewById()-এর মাধ্যমে ড্রয়েবল ফিরিয়ে আনতে ও পরিবর্তন করতে পারবেন।
android:top
পূর্ণসংখ্যা। পিক্সেলে উপরের অফসেট।
android:right
পূর্ণসংখ্যা। পিক্সেলে ডানদিকের অফসেট।
android:bottom
পূর্ণসংখ্যা। পিক্সেলে নিচের অফসেট।
android:left
পূর্ণসংখ্যা। পিক্সেলে বাঁদিকের অফসেট।
উদাহরণ:
XML ফাইল res/drawable/transition.xml-এ সেভ করা হয়েছে:
<?xml version="1.0" encoding="utf-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/on" />
    <item android:drawable="@drawable/off" />
</transition>

এই লেআউট XML, ভিউতে ড্রয়েবল প্রয়োগ করে:

<ImageButton
    android:id="@+id/button"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:src="@drawable/transition" />

এবং নিম্নলিখিত কোডটি প্রথম আইটেম থেকে দ্বিতীয় আইটেমে ৫০০ মিলি সেকেন্ডের ট্রানজিশন করে:

Kotlin

val button: ImageButton = findViewById(R.id.button)
val drawable: Drawable = button.drawable
if (drawable is TransitionDrawable) {
    drawable.startTransition(500)
}

জাভা

ImageButton button = (ImageButton) findViewById(R.id.button);
Drawable drawable = button.getDrawable();
if (drawable instanceof TransitionDrawable) {
    ((TransitionDrawable) drawable).startTransition(500);
}
আরও দেখুন:

ইনসেট ড্রয়েবেল

XML-এ সংজ্ঞায়িত একটি ড্রয়েবল যা নির্দিষ্ট দূরত্বে অন্য একটি ড্রয়েবল ইনসেট করে। এটি তখন কাজে লাগে যখন কোনও ভিউয়ের জন্য এমন ব্যাকগ্রাউন্ডের প্রয়োজন হয় যা ভিউয়ের আসল সীমার থেকে ছোট।

ফাইলের লোকেশন:
res/drawable/filename.xml
ফাইলের নাম হল রিসোর্স আইডি
কম্পাইল করা রিসোর্স ডেটাটাইপ:
রিসোর্স পয়েন্টার থেকে InsetDrawable
রিসোর্স রেফারেন্স:
Java-তে: R.drawable.filename
XML-এ: @[package:]drawable/filename
সিনট্যাক্স:
<?xml version="1.0" encoding="utf-8"?>
<inset
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/drawable_resource"
    android:insetTop="dimension"
    android:insetRight="dimension"
    android:insetBottom="dimension"
    android:insetLeft="dimension" />
এলিমেন্ট:
<inset>
প্রয়োজনীয়। ইনসেট ড্রয়েবল সংজ্ঞায়িত করে। এটি অবশ্যই রুট এলিমেন্ট হতে হবে।

গুণাবলী:

xmlns:android
String. প্রয়োজনীয়। XML নেমস্পেস নির্ধারণ করে, যা অবশ্যই "http://schemas.android.com/apk/res/android" হতে হবে।
android:drawable
ড্রয়েবল রিসোর্স। প্রয়োজনীয়। ইনসেট করার জন্য ড্রয়েবল রিসোর্সের রেফারেন্স।
android:insetTop
ডাইমেনশন। ডাইমেনশন ভ্যালু বা ডাইমেনশন রিসোর্স হিসেবে উপরের ইনসেট।
android:insetRight
ডাইমেনশন। ডানদিকের ইনসেট, ডাইমেনশন ভ্যালু বা ডাইমেনশন রিসোর্স হিসেবে।
android:insetBottom
ডাইমেনশন। ডাইমেনশন ভ্যালু বা ডাইমেনশন রিসোর্স হিসেবে নিচের ইনসেট।
android:insetLeft
ডাইমেনশন। বাঁদিকের ইনসেট, ডাইমেনশন ভ্যালু বা ডাইমেনশন রিসোর্স হিসেবে।
উদাহরণ:
<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/background"
    android:insetTop="10dp"
    android:insetLeft="10dp" />
আরও দেখুন:

ক্লিপ ড্রয়েবেল

XML-এ সংজ্ঞায়িত একটি ড্রয়েবল যা এই ড্রয়েবলের বর্তমান লেভেলের উপর ভিত্তি করে অন্য একটি ড্রয়েবল ক্লিপ করে। লেভেলের উপর ভিত্তি করে চাইল্ড ড্রয়েবল কতটা প্রস্থ ও উচ্চতায় ক্লিপ করা হবে তা আপনি নিয়ন্ত্রণ করতে পারবেন, সেইসাথে এটি সামগ্রিক কন্টেনারে কোথায় রাখা হবে তা নিয়ন্ত্রণ করার জন্য গ্র্যাভিটিও নিয়ন্ত্রণ করতে পারবেন। প্রোগ্রেস বারের মতো জিনিস প্রয়োগ করার জন্য বেশিরভাগ সময় ব্যবহার করা হয়।

ফাইলের লোকেশন:
res/drawable/filename.xml
ফাইলের নাম হল রিসোর্স আইডি
কম্পাইল করা রিসোর্স ডেটাটাইপ:
রিসোর্স পয়েন্টার থেকে ClipDrawable
রিসোর্স রেফারেন্স:
Java-তে: R.drawable.filename
XML-এ: @[package:]drawable/filename
সিনট্যাক্স:
<?xml version="1.0" encoding="utf-8"?>
<clip
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/drawable_resource"
    android:clipOrientation=["horizontal" | "vertical"]
    android:gravity=["top" | "bottom" | "left" | "right" | "center_vertical" |
                     "fill_vertical" | "center_horizontal" | "fill_horizontal" |
                     "center" | "fill" | "clip_vertical" | "clip_horizontal"] />
এলিমেন্ট:
<clip>
প্রয়োজনীয়। ক্লিপ ড্রয়েবলকে সংজ্ঞায়িত করে। এটি অবশ্যই রুট এলিমেন্ট হতে হবে।

গুণাবলী:

xmlns:android
String. প্রয়োজনীয়। XML নেমস্পেস নির্ধারণ করে, যা অবশ্যই "http://schemas.android.com/apk/res/android" হতে হবে।
android:drawable
ড্রয়েবল রিসোর্স। প্রয়োজনীয়। ক্লিপ করার জন্য ড্রয়েবল রিসোর্সের রেফারেন্স।
android:clipOrientation
কীওয়ার্ড। ক্লিপের ওরিয়েন্টেশন।

নিম্নলিখিত ধ্রুবক মানগুলির মধ্যে একটি হতে হবে:

মানবর্ণনা
horizontal অনুভূমিকভাবে আঁকার যোগ্য ক্লিপ করুন।
vertical ড্রয়েবল উল্লম্বভাবে ক্লিপ করুন।
android:gravity
কীওয়ার্ড। ড্রয়েবলের মধ্যে কোথায় ক্লিপ করতে হবে তা নির্দিষ্ট করে।

| দ্বারা আলাদা করা নিম্নলিখিত কনস্ট্যান্ট ভ্যালুর মধ্যে এক বা একাধিক হতে হবে:

মানবর্ণনা
top অবজেক্টটি তার কন্টেনারের উপরে রাখুন, এর সাইজ পরিবর্তন করবেন না। clipOrientation, "vertical" হলে, ড্রয়েবলের নিচে ক্লিপিং হয়।
bottom অবজেক্টটি তার কন্টেনারের নিচে রাখুন, এর সাইজ পরিবর্তন করবেন না। clipOrientation-এর মান "vertical" হলে, ড্রয়েবলের উপরের দিকে ক্লিপিং হয়।
left অবজেক্টটি তার কন্টেনারের বাঁদিকের প্রান্তে রাখুন, এর সাইজ পরিবর্তন করবেন না। এটি ডিফল্ট বিকল্প। clipOrientation, "horizontal" হলে, ড্রয়েবলের ডানদিকে ক্লিপিং হয়।
right অবজেক্টটি তার কন্টেনারের ডান প্রান্তে রাখুন, এর সাইজ পরিবর্তন করবেন না। clipOrientation-এর মান "horizontal" হলে, ড্রয়েবলের বাঁদিকে ক্লিপিং হয়।
center_vertical অবজেক্টের সাইজ পরিবর্তন না করে, কন্টেনারের উল্লম্ব কেন্দ্রে অবজেক্টটি রাখুন। ক্লিপিংয়ের আচরণ গ্র্যাভিটি "center" হলে যেমন হয়, তেমনই হয়।
fill_vertical প্রয়োজন হলে, অবজেক্টের উল্লম্ব সাইজ বাড়াও যাতে এটি কন্টেনার সম্পূর্ণভাবে পূরণ করে। clipOrientation, "vertical" হলে, কোনও ক্লিপিং হয় না কারণ ড্রয়েবল উল্লম্ব স্পেস পূরণ করে (ড্রয়েবল লেভেল ০ না হলে, যেক্ষেত্রে এটি দৃশ্যমান হয় না)।
center_horizontal অবজেক্টটি তার কন্টেনারের অনুভূমিক কেন্দ্রে রাখুন, এর আকার পরিবর্তন করবেন না। গ্র্যাভিটি "center" হলে ক্লিপিং যেভাবে কাজ করে, এটিও সেভাবেই কাজ করে।
fill_horizontal প্রয়োজন হলে অবজেক্টের অনুভূমিক সাইজ বাড়ান যাতে এটি কন্টেনার সম্পূর্ণভাবে পূরণ করে। যখন clipOrientation হল "horizontal", কোনও ক্লিপিং হয় না কারণ ড্রয়েবল অনুভূমিক স্পেস পূরণ করে (ড্রয়েবল লেভেল 0 না হলে, যেক্ষেত্রে এটি দেখা যায় না)।
center অবজেক্টের সাইজ পরিবর্তন না করে, সেটির কন্টেনারের কেন্দ্রে উল্লম্ব ও অনুভূমিক অক্ষ বরাবর অবজেক্টটি রাখুন। clipOrientation, "horizontal" হলে, বাঁদিকে ও ডানদিকে ক্লিপিং হয়। clipOrientation-এর মান "vertical" হলে, উপরে ও নিচে ক্লিপিং হয়।
fill প্রয়োজন হলে অবজেক্টের অনুভূমিক ও উল্লম্ব সাইজ বাড়ান যাতে এটি সম্পূর্ণভাবে কন্টেনারকে ভরে দেয়। কোনও ক্লিপিং হয় না কারণ ড্রয়েবল অনুভূমিক ও উল্লম্ব স্পেস পূরণ করে (ড্রয়েবল লেভেল ০ না হলে, যেক্ষেত্রে এটি দেখা যায় না)।
clip_vertical অতিরিক্ত বিকল্প যা চাইল্ডের উপরের এবং/অথবা নিচের প্রান্তগুলি এর কন্টেনারের সীমানায় ক্লিপ করার জন্য সেট করা যেতে পারে। ক্লিপটি উল্লম্ব গ্র্যাভিটির উপর ভিত্তি করে তৈরি: উপরের গ্র্যাভিটি নিচের প্রান্তকে ক্লিপ করে, নিচের গ্র্যাভিটি উপরের প্রান্তকে ক্লিপ করে এবং কোনওটিই দুটি প্রান্তকে ক্লিপ করে না।
clip_horizontal অতিরিক্ত বিকল্প যা চাইল্ডের বাঁদিকের এবং/অথবা ডানদিকের প্রান্তগুলি তার কন্টেনারের সীমানায় ক্লিপ করার জন্য সেট করা যেতে পারে। ক্লিপটি অনুভূমিক গ্র্যাভিটির উপর ভিত্তি করে তৈরি: বাঁদিকের গ্র্যাভিটি ডানদিকের প্রান্তকে ক্লিপ করে, ডানদিকের গ্র্যাভিটি বাঁদিকের প্রান্তকে ক্লিপ করে এবং কোনওটিই দুটি প্রান্তকে ক্লিপ করে না।
উদাহরণ:
XML ফাইল res/drawable/clip.xml-এ সেভ করা হয়েছে:
<?xml version="1.0" encoding="utf-8"?>
<clip xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/android"
    android:clipOrientation="horizontal"
    android:gravity="left" />

নিম্নলিখিত লেআউট XML, ভিউতে ক্লিপ ড্রয়েবল প্রয়োগ করে:

<ImageView
    android:id="@+id/image"
    android:src="@drawable/clip"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content" />

নিম্নলিখিত কোডটি ড্রয়েবল পায় এবং ছবিটিকে ধীরে ধীরে প্রকাশ করার জন্য ক্লিপিংয়ের পরিমাণ বাড়ায়:

Kotlin

val imageview: ImageView = findViewById(R.id.image)
val drawable: Drawable = imageview.background
if (drawable is ClipDrawable) {
    drawable.level = drawable.level + 1000
}

জাভা

ImageView imageview = (ImageView) findViewById(R.id.image);
Drawable drawable = imageview.getBackground();
if (drawable instanceof ClipDrawable) {
    ((ClipDrawable)drawable).setLevel(drawable.getLevel() + 1000);
}

লেভেল বাড়ালে ক্লিপিংয়ের পরিমাণ কমে এবং ধীরে ধীরে ছবি দেখা যায়। এখানে এটি ৭০০০ লেভেলে আছে:

মনে রাখবেন: ডিফল্ট লেভেল হল ০, যা সম্পূর্ণ ক্লিপ করা থাকে, তাই ছবি দেখা যায় না। লেভেল ১০,০০০ হলে, ছবি ক্লিপ করা হয় না এবং সম্পূর্ণ দেখা যায়।

আরও দেখুন:

স্কেল ড্রয়েবেল

XML-এ সংজ্ঞায়িত একটি ড্রয়েবল যা অন্য ড্রয়েবলের বর্তমান লেভেলের উপর ভিত্তি করে তার সাইজ পরিবর্তন করে।

ফাইলের লোকেশন:
res/drawable/filename.xml
ফাইলের নাম হল রিসোর্স আইডি
কম্পাইল করা রিসোর্স ডেটাটাইপ:
রিসোর্স পয়েন্টার থেকে ScaleDrawable
রিসোর্স রেফারেন্স:
Java-তে: R.drawable.filename
XML-এ: @[package:]drawable/filename
সিনট্যাক্স:
<?xml version="1.0" encoding="utf-8"?>
<scale
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/drawable_resource"
    android:scaleGravity=["top" | "bottom" | "left" | "right" | "center_vertical" |
                          "fill_vertical" | "center_horizontal" | "fill_horizontal" |
                          "center" | "fill" | "clip_vertical" | "clip_horizontal"]
    android:scaleHeight="percentage"
    android:scaleWidth="percentage" />
এলিমেন্ট:
<scale>
প্রয়োজনীয়। স্কেল ড্রয়েবলকে সংজ্ঞায়িত করে। এটি অবশ্যই রুট এলিমেন্ট হতে হবে।

গুণাবলী:

xmlns:android
String. প্রয়োজনীয়। XML নেমস্পেস নির্ধারণ করে, যা অবশ্যই "http://schemas.android.com/apk/res/android" হতে হবে।
android:drawable
ড্রয়েবল রিসোর্স। প্রয়োজনীয়। ড্রয়েবল রিসোর্সের রেফারেন্স।
android:scaleGravity
কীওয়ার্ড। স্কেলিংয়ের পরে গ্র্যাভিটি পজিশন নির্দিষ্ট করে।

| দ্বারা আলাদা করা নিম্নলিখিত কনস্ট্যান্ট ভ্যালুর মধ্যে এক বা একাধিক হতে হবে:

মানবর্ণনা
top অবজেক্টটি তার কন্টেনারের উপরে রাখুন, এর সাইজ পরিবর্তন করবেন না।
bottom অবজেক্টটি তার কন্টেনারের নিচে রাখুন, এর সাইজ পরিবর্তন করবেন না।
left অবজেক্টটি তার কন্টেনারের বাঁদিকের প্রান্তে রাখুন, এর সাইজ পরিবর্তন করবেন না। এটি ডিফল্ট বিকল্প।
right অবজেক্টটি তার কন্টেনারের ডান প্রান্তে রাখুন, এর সাইজ পরিবর্তন করবেন না।
center_vertical অবজেক্টের সাইজ পরিবর্তন না করে, কন্টেনারের উল্লম্ব কেন্দ্রে অবজেক্টটি রাখুন।
fill_vertical প্রয়োজন হলে, অবজেক্টের উল্লম্ব সাইজ বাড়াও যাতে এটি কন্টেনার সম্পূর্ণভাবে পূরণ করে।
center_horizontal অবজেক্টটি তার কন্টেনারের অনুভূমিক কেন্দ্রে রাখুন, এর আকার পরিবর্তন করবেন না।
fill_horizontal প্রয়োজন হলে অবজেক্টের অনুভূমিক সাইজ বাড়ান যাতে এটি কন্টেনার সম্পূর্ণভাবে পূরণ করে।
center অবজেক্টের সাইজ পরিবর্তন না করে, সেটির কন্টেনারের কেন্দ্রে উল্লম্ব ও অনুভূমিক অক্ষ বরাবর অবজেক্টটি রাখুন।
fill প্রয়োজন হলে অবজেক্টের অনুভূমিক ও উল্লম্ব সাইজ বাড়ান যাতে এটি সম্পূর্ণভাবে কন্টেনারকে ভরে দেয়।
clip_vertical অতিরিক্ত বিকল্প যা চাইল্ডের উপরের এবং/অথবা নিচের প্রান্তগুলি এর কন্টেনারের সীমানায় ক্লিপ করার জন্য সেট করা যেতে পারে। ক্লিপটি উল্লম্ব গ্র্যাভিটির উপর ভিত্তি করে তৈরি: একটি টপ গ্র্যাভিটি নিচের প্রান্তটি ক্লিপ করে, একটি বটম গ্র্যাভিটি উপরের প্রান্তটি ক্লিপ করে এবং কোনওটিই দুটি প্রান্ত ক্লিপ করে না।
clip_horizontal অতিরিক্ত বিকল্প যা চাইল্ডের বাঁদিকের এবং/অথবা ডানদিকের প্রান্তকে তার কন্টেনারের সীমানায় ক্লিপ করার জন্য সেট করা যেতে পারে। ক্লিপটি অনুভূমিক গ্র্যাভিটির উপর ভিত্তি করে তৈরি: বাঁদিকের গ্র্যাভিটি ডানদিকের প্রান্তকে ক্লিপ করে, ডানদিকের গ্র্যাভিটি বাঁদিকের প্রান্তকে ক্লিপ করে এবং কোনওটিই দুটি প্রান্তকে ক্লিপ করে না।
android:scaleHeight
শতাংশ। স্কেলের উচ্চতা, ড্রয়েবলের সীমার শতাংশ হিসেবে প্রকাশ করা হয়। ভ্যালুর ফর্ম্যাট হল XX%, যেমন ১০০% বা ১২.৫%।
android:scaleWidth
শতাংশ। স্কেলের প্রস্থ, ড্রয়েবলের বাউন্ডের শতাংশ হিসেবে প্রকাশ করা হয়। ভ্যালুর ফর্ম্যাট হল XX%, যেমন ১০০% বা ১২.৫%।
উদাহরণ:
<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/logo"
    android:scaleGravity="center_vertical|center_horizontal"
    android:scaleHeight="80%"
    android:scaleWidth="80%" />
আরও দেখুন:

শেপ ড্রয়েবেল

এটি XML-এ সংজ্ঞায়িত একটি জেনেরিক আকার।

ফাইলের লোকেশন:
res/drawable/filename.xml
ফাইলের নাম হল রিসোর্স আইডি
কম্পাইল করা রিসোর্স ডেটাটাইপ:
রিসোর্স পয়েন্টার থেকে GradientDrawable
রিসোর্স রেফারেন্স:
Java-তে: R.drawable.filename
XML-এ: @[package:]drawable/filename
সিনট্যাক্স:
<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape=["rectangle" | "oval" | "line" | "ring"] >
    <corners
        android:radius="integer"
        android:topLeftRadius="integer"
        android:topRightRadius="integer"
        android:bottomLeftRadius="integer"
        android:bottomRightRadius="integer" />
    <gradient
        android:angle="integer"
        android:centerX="float"
        android:centerY="float"
        android:centerColor="integer"
        android:endColor="color"
        android:gradientRadius="integer"
        android:startColor="color"
        android:type=["linear" | "radial" | "sweep"]
        android:useLevel=["true" | "false"] />
    <padding
        android:left="integer"
        android:top="integer"
        android:right="integer"
        android:bottom="integer" />
    <size
        android:width="integer"
        android:height="integer" />
    <solid
        android:color="color" />
    <stroke
        android:width="integer"
        android:color="color"
        android:dashWidth="integer"
        android:dashGap="integer" />
</shape>
এলিমেন্ট:
<shape>
প্রয়োজনীয়। আঁকা যায় এমন আকার। এটি অবশ্যই রুট এলিমেন্ট হতে হবে।

গুণাবলী:

xmlns:android
String. প্রয়োজনীয়। XML নেমস্পেস নির্ধারণ করে, যা অবশ্যই "http://schemas.android.com/apk/res/android" হতে হবে।
android:shape
কীওয়ার্ড। আকারের ধরন নির্ধারণ করে। সঠিক ভ্যালু হল:
মানবর্ণনা
"rectangle" একটি আয়তক্ষেত্র যা কন্টেনিং ভিউকে পূরণ করে। এটি ডিফল্ট আকার।
"oval" একটি ডিম্বাকৃতি আকৃতি যা ধারণকারী ভিউয়ের মাত্রার সাথে মানানসই।
"line" একটি অনুভূমিক রেখা যা ভিউয়ের প্রস্থ জুড়ে থাকে। এই আকারের জন্য লাইনের প্রস্থ নির্ধারণ করতে <stroke> এলিমেন্ট প্রয়োজন।
"ring" আংটির মতো আকার।

নিম্নলিখিত অ্যাট্রিবিউটগুলি শুধুমাত্র তখনই ব্যবহার করা হয় যখন android:shape="ring":

android:innerRadius
ডাইমেনশন। রিংয়ের ভিতরের অংশের (মাঝের গর্ত) ব্যাসার্ধ, ডাইমেনশন ভ্যালু বা ডাইমেনশন রিসোর্স হিসেবে।
android:innerRadiusRatio
ফ্লোট। রিংয়ের ভিতরের অংশের ব্যাসার্ধ, রিংয়ের প্রস্থের অনুপাত হিসেবে প্রকাশ করা হয়। যেমন, android:innerRadiusRatio="5" হলে, ভিতরের ব্যাসার্ধ রিংয়ের প্রস্থের ৫ ভাগের ১ ভাগ হবে। এই ভ্যালু android:innerRadius ওভাররাইড করেছে। ডিফল্ট ভ্যালু হল ৯।
android:thickness
ডাইমেনশন। রিংয়ের ঘনত্ব, ডাইমেনশন ভ্যালু বা ডাইমেনশন রিসোর্স হিসেবে।
android:thicknessRatio
ফ্লোট। রিংয়ের প্রস্থের অনুপাত হিসেবে রিংয়ের ঘনত্ব প্রকাশ করা হয়। যেমন, android:thicknessRatio="2" হলে, রিংয়ের প্রস্থকে ২ দিয়ে ভাগ করলে যা হয়, সেটিই হল পুরুত্ব। এই ভ্যালু android:innerRadius-এর মাধ্যমে ওভাররাইড করা হয়েছে। ডিফল্ট ভ্যালু হল ৩।
android:useLevel
বুলিয়ান। এটি LevelListDrawable হিসেবে ব্যবহার করা হলে ট্রু হিসেবে বিবেচিত হয়। এটি সাধারণত মিথ্যা হয়, অথবা আপনার আকৃতি দেখা নাও যেতে পারে।
<corners>
আকৃতির জন্য গোলাকার কোণ তৈরি করে। শুধুমাত্র আকারটি আয়তক্ষেত্র হলে প্রযোজ্য হয়।

গুণাবলী:

android:radius
ডাইমেনশন। ডাইমেনশন ভ্যালু বা ডাইমেনশন রিসোর্স হিসেবে সব কোণের ব্যাসার্ধ। এটি প্রতিটি কোণের জন্য নিম্নলিখিত অ্যাট্রিবিউট দ্বারা ওভাররাইড করা হয়।
android:topLeftRadius
ডাইমেনশন। উপরের বাঁদিকের কোণের ব্যাসার্ধ, ডাইমেনশন ভ্যালু বা ডাইমেনশন রিসোর্স হিসেবে।
android:topRightRadius
ডাইমেনশন। ডাইমেনশন ভ্যালু বা ডাইমেনশন রিসোর্স হিসেবে, উপরের ডানদিকের কোণের ব্যাসার্ধ।
android:bottomLeftRadius
ডাইমেনশন। নিচে-বাঁদিকের কোণের ব্যাসার্ধ, ডাইমেনশন ভ্যালু বা ডাইমেনশন রিসোর্স হিসেবে।
android:bottomRightRadius
ডাইমেনশন। ডাইমেনশন ভ্যালু বা ডাইমেনশন রিসোর্স হিসেবে, নিচের-ডানদিকের কোণের ব্যাসার্ধ।

মনে রাখবেন: প্রতিটি কোণকে প্রাথমিকভাবে ১-এর বেশি কোণ ব্যাসার্ধ প্রদান করতে হবে, অন্যথায় কোনও কোণ বৃত্তাকার হবে না। আপনি যদি নির্দিষ্ট কোণ না রাউন্ড করতে চান, তাহলে একটি সমাধান হল android:radius ব্যবহার করে ১-এর বেশি ডিফল্ট কোণ রেডিয়াস সেট করা এবং তারপরে প্রতিটি কোণকে আপনার পছন্দের মান দিয়ে ওভাররাইড করা, যেখানে আপনি রাউন্ডেড কোণ চান না সেখানে ০ ("0dp") প্রদান করা।

<gradient>
শেপের জন্য গ্রেডিয়েন্ট রঙ নির্দিষ্ট করে।

গুণাবলী:

android:angle
পূর্ণসংখ্যা। গ্রেডিয়েন্টের কোণ, ডিগ্রিতে। ০ হল বাঁদিক থেকে ডানদিকে, ৯০ হল নিচ থেকে উপরে। এটি ৪৫-এর গুণিতক হতে হবে। ডিফল্ট হল ০।
android:centerX
ফ্লোট। গ্রেডিয়েন্টের কেন্দ্রের জন্য আপেক্ষিক X-পজিশন (০ - ১.০)।
android:centerY
ফ্লোট। গ্রেডিয়েন্টের কেন্দ্রের জন্য আপেক্ষিক Y-পজিশন (০ - ১.০)।
android:centerColor
রঙ। ঐচ্ছিক রঙ যা শুরু এবং শেষের রঙের মধ্যে আসে, হেক্সাডেসিমেল মান বা রঙের রিসোর্স হিসেবে।
android:endColor
রঙ। শেষের রঙ, হেক্সাডেসিমেল ভ্যালু বা কালার রিসোর্স হিসেবে।
android:gradientRadius
ফ্লোট। গ্রেডিয়েন্টের ব্যাসার্ধ। android:type="radial" হলে তবেই প্রযোজ্য।
android:startColor
রঙ। শুরুর রঙ, হেক্সাডেসিমেল ভ্যালু বা কালার রিসোর্স হিসেবে।
android:type
কীওয়ার্ড। যে ধরনের গ্রেডিয়েন্ট প্যাটার্ন প্রয়োগ করতে হবে। সঠিক ভ্যালু হল:
মানবর্ণনা
"linear" একটি লিনিয়ার গ্রেডিয়েন্ট। এটি ডিফল্ট বিকল্প।
"radial" একটি রেডিয়াল গ্রেডিয়েন্ট। শুরুর রঙ হল কেন্দ্রের রঙ।
"sweep" একটি সুইপিং লাইন গ্রেডিয়েন্ট।
android:useLevel
বুলিয়ান। এটি LevelListDrawable হিসেবে ব্যবহার করা হলে ট্রু হিসেবে বিবেচিত হয়।
<padding>
প্যাডিং যা কন্টেনিং ভিউ এলিমেন্টে প্রয়োগ করতে হবে। এটি ভিউ কন্টেন্টের পজিশন প্যাড করে, আকার নয়।

গুণাবলী:

android:left
ডাইমেনশন। বাঁদিকের প্যাডিং, ডাইমেনশন ভ্যালু বা ডাইমেনশন রিসোর্স হিসেবে।
android:top
ডাইমেনশন। ডাইমেনশন ভ্যালু বা ডাইমেনশন রিসোর্স হিসেবে উপরের প্যাডিং।
android:right
ডাইমেনশন। ডানদিকের প্যাডিং, ডাইমেনশন ভ্যালু বা ডাইমেনশন রিসোর্স হিসেবে।
android:bottom
ডাইমেনশন। ডাইমেনশন ভ্যালু বা ডাইমেনশন রিসোর্স হিসেবে নিচের প্যাডিং।
<size>
আকৃতির সাইজ।

গুণাবলী:

android:height
ডাইমেনশন। আকৃতির উচ্চতা, ডাইমেনশন ভ্যালু বা ডাইমেনশন রিসোর্স হিসেবে।
android:width
ডাইমেনশন। আকৃতির প্রস্থ, ডাইমেনশন ভ্যালু বা ডাইমেনশন রিসোর্স হিসেবে।

মনে রাখবেন: ডিফল্ট হিসেবে, এখানে উল্লেখ করা ডাইমেনশন অনুযায়ী কন্টেনার ভিউয়ের সাইজ অনুযায়ী শেপের স্কেল সেট করা হয়। আপনি ImageView-এ আকার ব্যবহার করার সময়, android:scaleType-কে "center"-এ সেট করে স্কেলিং সীমাবদ্ধ করতে পারবেন।

<solid>
আকারটি পূরণ করার জন্য একটি সলিড রঙ।

গুণাবলী:

android:color
রঙ। আকারে প্রয়োগ করার জন্য রঙ, হেক্সাডেসিমেল ভ্যালু বা কালার রিসোর্স হিসেবে।
<stroke>
শেপের জন্য স্ট্রোক লাইন।

গুণাবলী:

android:width
ডাইমেনশন। লাইনের ঘনত্ব, ডাইমেনশন ভ্যালু বা ডাইমেনশন রিসোর্স হিসেবে।
android:color
রঙ। লাইনের রঙ, হেক্সাডেসিমাল ভ্যালু বা কালার রিসোর্স হিসেবে।
android:dashGap
ডাইমেনশন। লাইন ড্যাশের মধ্যে দূরত্ব, ডাইমেনশন ভ্যালু বা ডাইমেনশন রিসোর্স হিসেবে। android:dashWidth সেট করা থাকলে তবেই এটি বৈধ।
android:dashWidth
ডাইমেনশন। প্রতিটি ড্যাশ লাইনের সাইজ, ডাইমেনশন ভ্যালু বা ডাইমেনশন রিসোর্স হিসেবে। android:dashGap সেট করা থাকলে তবেই এটি বৈধ।
উদাহরণ:
XML ফাইল res/drawable/gradient_box.xml-এ সেভ করা হয়েছে:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:startColor="#FFFF0000"
        android:endColor="#80FF00FF"
        android:angle="45"/>
    <padding android:left="7dp"
        android:top="7dp"
        android:right="7dp"
        android:bottom="7dp" />
    <corners android:radius="8dp" />
</shape>

এই লেআউট XML, ভিউতে শেপ ড্রয়েবল প্রয়োগ করে:

<TextView
    android:background="@drawable/gradient_box"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content" />

এই অ্যাপ্লিকেশন কোড শেপ ড্রয়েবল পায় এবং এটি একটি ভিউতে প্রয়োগ করে:

Kotlin

val shape: Drawable? = getDrawable(resources, R.drawable.gradient_box, getTheme())

val tv: TextView = findViewById(R.id.textview)
tv.background = shape

জাভা

Resources res = getResources();
Drawable shape = ResourcesCompat.getDrawable(res, R.drawable.gradient_box, getTheme());

TextView tv = (TextView)findViewById(R.id.textview);
tv.setBackground(shape);
আরও দেখুন: