ड्रॉ करने लायक संसाधन

ड्रॉ करने लायक संसाधन, एक ऐसे ग्राफ़िक का सामान्य सिद्धांत है जिसे स्क्रीन पर बनाया जा सकता है आप getDrawable(int) जैसे एपीआई की मदद से वापस पा सकते हैं या लागू कर सकते हैं को android:drawable और android:icon जैसे एट्रिब्यूट के साथ किसी दूसरे एक्सएमएल रिसॉर्स में जोड़ना होगा. ड्रॉबल के कई तरीके होते हैं:

बिटमैप फ़ाइल
बिट मैप ग्राफ़िक फ़ाइल (PNG, WebP, JPG या GIF). यह BitmapDrawable बनाता है.
नाइन-पैच फ़ाइल
ऐसी PNG फ़ाइल जिसमें कॉन्टेंट के हिसाब से साइज़ बदलने की सुविधा हो और इमेज का साइज़ बदला जा सके (.9.png). NinePatchDrawable बनाता है.
लेयर सूची
ड्रॉ करने लायक ऐसा डिवाइस जो दूसरे ड्रॉ करने लायक आइटम के कलेक्शन को मैनेज करता है. इन्हें अरे के क्रम में बनाया जाता है, इसलिए सबसे बड़े इंडेक्स वाले एलिमेंट को सबसे ऊपर दिखाया जाता है. यह LayerDrawable बनाता है.
राज्यों की सूची
ऐसी एक्सएमएल फ़ाइल जो अलग-अलग बिटमैप ग्राफ़िक का रेफ़रंस देती है अलग-अलग स्थितियों के लिए—उदाहरण के लिए, किसी बटन पर टैप किए जाने पर किसी दूसरी इमेज का इस्तेमाल करना. यह StateListDrawable बनाता है.
लेवल की सूची
ड्रॉइंग फ़ाइल के बारे में बताने वाली एक्सएमएल फ़ाइल, जो कई वैकल्पिक ड्रॉबल को मैनेज करती है. हर फ़ाइल में असाइन की गई ज़्यादा से ज़्यादा संख्या वाली वैल्यू डाली गई है. यह LevelListDrawable बनाता है.
ड्रॉइंग ड्रॉ करने की सुविधा
ऐसी एक्सएमएल फ़ाइल जो ड्रॉ करने लायक के बारे में बताती है, जो ड्रॉ करने लायक दो रिसॉर्स के बीच क्रॉस-फ़ेड हो सकती है. यह TransitionDrawable बनाता है.
इनसेट ड्रॉ करने लायक
ड्रॉ करने लायक ऐसी एक्सएमएल फ़ाइल जिसमें तय की गई दूरी से, ड्रॉ किए जा सकने वाले किसी अन्य एलिमेंट को इनसेट में शामिल किया जाता है. यह तब काम आता है, जब किसी व्यू के लिए ड्रॉ करने लायक बैकग्राउंड की ज़रूरत हो और वह व्यू के असल बैकग्राउंड से छोटा हो सीमाओं.
क्लिप ड्रॉ करने लायक
ऐसी एक्सएमएल फ़ाइल जो ड्रॉएबल के बारे में जानकारी देती है. यह फ़ाइल, इस ड्रॉएबल के मौजूदा लेवल की वैल्यू. यह ClipDrawable बनाता है.
ड्रॉ करने लायक स्केल
ऐसी एक्सएमएल फ़ाइल जो ड्रॉएबल के बारे में बताती है. यह फ़ाइल, ड्रॉ करने लायक किसी अन्य एलिमेंट के साइज़ को उसके मौजूदा लेवल की वैल्यू. इससे ScaleDrawable बनता है
ड्रॉ करने लायक आकार.
ऐसी एक्सएमएल फ़ाइल जो ज्यामितीय आकार को परिभाषित करती है. इसमें रंग और ग्रेडिएंट भी शामिल होते हैं. यह GradientDrawable बनाता है.

यह जानने के लिए कि AnimationDrawable बनाएं, ऐनिमेशन संसाधन दस्तावेज़ देखें.

ध्यान दें: रंग का रिसॉर्स एक्सएमएल में ड्रॉ करने लायक के तौर पर इस्तेमाल किया जाता है. उदाहरण के लिए, राज्यों की सूची बनाते समय ड्रॉ करने लायक है, तो आप android:drawable एट्रिब्यूट (android:drawable="@color/green") के लिए रंग से जुड़े संसाधन का संदर्भ ले सकते हैं.

बिट मैप

बिट मैप इमेज. Android पर इन फ़ॉर्मैट में बिटमैप फ़ाइलें काम करती हैं: PNG (पसंदीदा), WebP (पसंदीदा, एपीआई लेवल 17 या उसके बाद के लेवल की ज़रूरत है), JPG (स्वीकार करने लायक), GIF (अस्वीकार किया गया).

आप संसाधन आईडी के रूप में फ़ाइल नाम का उपयोग करके, किसी बिटमैप फ़ाइल का सीधे संदर्भ दे सकते हैं, या कोई एक्सएमएल में, उपनाम का संसाधन आईडी.

ध्यान दें: बिटमैप फ़ाइलें लॉसलेस के साथ अपने-आप ऑप्टिमाइज़ हो सकती हैं बिल्ड प्रोसेस के दौरान aapt टूल की मदद से इमेज को कंप्रेस करने की सुविधा. इसके लिए उदाहरण के लिए, किसी असली रंग की PNG फ़ाइल को 8-बिट में बदला जा सकता है, जिसमें 256 से ज़्यादा रंगों की ज़रूरत न हो रंग पटल के साथ PNG फ़ॉर्मैट. इससे एक जैसी क्वालिटी की इमेज मिलती है, जिसे कम मेमोरी.

इसलिए, ध्यान रखें कि इस डायरेक्ट्री में मौजूद इमेज बाइनरी, बिल्ड के दौरान बदल सकती हैं. अगर आपने किसी इमेज को बिट स्ट्रीम के रूप में पढ़ने की योजना है, ताकि उसे बिट मैप में बदला जा सके, अपनी इमेज को res/raw/ फ़ोल्डर का इस्तेमाल करना चाहिए, जहां उन्हें ऑप्टिमाइज़ नहीं किया जाता है.

बिटमैप फ़ाइल

बिट मैप फ़ाइल PNG, WebP, JPG या GIF फ़ाइल होती है. Android, Drawable बनाता है इनमें से किसी भी फ़ाइल के लिए संसाधन तब लागू होगा, जब आप उन्हें res/drawable/ डायरेक्ट्री में सेव करेंगे.

फ़ाइल की जगह:
res/drawable/filename.png (.png, .webp, .jpg या .gif)
फ़ाइल का नाम, संसाधन आईडी है
कंपाइल किए गए संसाधन डेटा टाइप:
BitmapDrawable के लिए रिसॉर्स पॉइंटर
संसाधन का रेफ़रंस:
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है Java में: R.drawable.filename
एक्सएमएल में: @[package:]drawable/filename
उदाहरण:
res/drawable/myimage.png पर सेव की गई इमेज के साथ, यह लेआउट एक्सएमएल लागू होता है किसी व्यू पर इमेज जोड़ने के लिए:
<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)

Java

Resources res = getResources();
Drawable drawable = ResourcesCompat.getDrawable(res, R.drawable.myimage, null);
यह भी देखें:

एक्सएमएल बिटमैप

एक्सएमएल बिटमैप, एक्सएमएल में तय किया गया एक ऐसा संसाधन है जो किसी बिटमैप फ़ाइल पर ले जाता है. यह प्रभाव रॉ बिटमैप फ़ाइल. XML बिटमैप के लिए अतिरिक्त गुण बता सकता है, जैसे कि डिदरिंग और टाइलिंग.

ध्यान दें: <bitmap> एलिमेंट का इस्तेमाल इनके चाइल्ड के तौर पर किया जा सकता है एक <item> एलिमेंट. इसके लिए उदाहरण के लिए, राज्यों की सूची या लेयर सूची बनाते समय, आप android:drawable को निकाल सकते हैं <item> एलिमेंट से एट्रिब्यूट जोड़ें और उसके अंदर <bitmap> को नेस्ट करें जो ड्रॉ किए जा सकने वाले आइटम के बारे में बताता है.

फ़ाइल की जगह:
res/drawable/filename.xml
फ़ाइल का नाम, रिसॉर्स आईडी है
कंपाइल किए गए संसाधन डेटा टाइप:
BitmapDrawable के लिए रिसॉर्स पॉइंटर
संसाधन का रेफ़रंस:
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है Java में: R.drawable.filename
एक्सएमएल में: @[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
स्ट्रिंग. एक्सएमएल नेमस्पेस तय करता है, जिसे "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() पर जाएं. डिफ़ॉल्ट मान असत्य है.
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" तक.

कॉन्टेंट के हिसाब से व्यू बढ़ने पर, 9-पैच वाली इमेज को भी व्यू के साइज़ से मैच करने के लिए स्केल किया जाता है. नौ पैच वाली इमेज के इस्तेमाल का उदाहरण बैकग्राउंड का इस्तेमाल, Android के स्टैंडर्ड Button विजेट के लिए किया जाता है. यह विजेट, टेक्स्ट (या चित्र) को बटन के अंदर समायोजित कर सकता है.

किसी सामान्य बिटमैप की तरह, आप नौ-पैच फ़ाइल का सीधे रेफ़रंस दे सकते हैं या एक्सएमएल के ज़रिए तय किए गए किसी संसाधन से.

स्ट्रैच किए जा सकने वाले इलाकों वाली नाइन-पैच फ़ाइल बनाने के बारे में पूरी जानकारी पाने के लिए, साइज़ बदलने लायक बिटमैप (9-पैच फ़ाइलें) बनाना देखें.

नाइन-पैच फ़ाइल

फ़ाइल की जगह:
res/drawable/filename.9.png
फ़ाइल का नाम, रिसॉर्स आईडी है
कंपाइल किए गए संसाधन डेटा टाइप:
NinePatchDrawable के लिए रिसॉर्स पॉइंटर
संसाधन का रेफ़रंस:
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है Java में: R.drawable.filename
एक्सएमएल में: @[package:]drawable/filename
उदाहरण:
res/drawable/myninepatch.9.png पर सेव की गई इमेज के साथ, यह लेआउट एक्सएमएल किसी व्यू पर नौ पैच लागू करता है:
<Button
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:background="@drawable/myninepatch" />
यह भी देखें:

एक्सएमएल नाइन-पैच

एक्सएमएल में नाइन-पैच एक ऐसा संसाधन है जो नौ पैच वाली फ़ाइल पर ले जाता है. एक्सएमएल यह कर सकती है चित्र के लिए डायदरिंग तय करें.

फ़ाइल की जगह:
res/drawable/filename.xml
फ़ाइल का नाम, रिसॉर्स आईडी है
कंपाइल किए गए संसाधन डेटा टाइप:
NinePatchDrawable के लिए रिसॉर्स पॉइंटर
संसाधन का रेफ़रंस:
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है Java में: R.drawable.filename
एक्सएमएल में: @[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
स्ट्रिंग. ज़रूरी है. एक्सएमएल नेमस्पेस तय करता है, जिसे "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
एक्सएमएल में: @[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
स्ट्रिंग. ज़रूरी है. एक्सएमएल नेमस्पेस तय करता है, जिसे "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>
उदाहरण:
एक्सएमएल फ़ाइल 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>

इस उदाहरण में, ड्रॉ करने लायक एट्रिब्यूट के बारे में बताने के लिए, नेस्ट किए गए <bitmap> एलिमेंट का इस्तेमाल किया गया है "center" ग्रैविटी वाले हर आइटम के लिए संसाधन. इससे पक्का होता है कि कोई भी इमेज, कंटेनर के साइज़ को फ़िट कर सकते हैं, क्योंकि ऑफ़सेट इमेज की वजह से साइज़ बदलना है.

यह लेआउट एक्सएमएल किसी व्यू पर ड्रॉएबल लागू करता है:

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

इसकी वजह से, मुझे ऑफ़सेट वाली इमेज का एक स्टैक मिल गया है:

यह भी देखें:

राज्य की सूची

StateListDrawable, ड्रॉ करने लायक ऑब्जेक्ट है. इसके बारे में एक्सएमएल में बताया गया है जिसमें एक ही ग्राफ़िक को दिखाने के लिए कई इमेज का इस्तेमाल किया गया है. यह सुविधा, ऑब्जेक्ट को हाइलाइट करने की सुविधा मिलती है. उदाहरण के लिए, Button के विजेट की स्थिति पर टैप करके, फ़ोकस किया जा सकता है, या कोई नहीं; ड्रॉ करने लायक राज्य की सूची का इस्तेमाल करके, हर एक फ़ाइल के लिए अलग-अलग बैकग्राउंड इमेज दी जा सकती है राज्य.

एक्सएमएल फ़ाइल में, राज्यों की सूची के बारे में बताया गया हो. हर ग्राफ़िक को <selector> एलिमेंट में मौजूद <item> एलिमेंट से दिखाया जाता है. हर <item> उस स्थिति के बारे में बताने के लिए अलग-अलग एट्रिब्यूट का इस्तेमाल करता है जिसमें इसे ग्राफ़िक के तौर पर इस्तेमाल किया जाता है ड्रॉ करने लायक है.

हर स्थिति में बदलाव के दौरान, राज्य की सूची ऊपर से नीचे दिखाई जाती है. साथ ही, सूची में पहला आइटम जो का इस्तेमाल किया गया है. यह चुनाव "सबसे अच्छे" के आधार पर नहीं है मैच करता है," बल्कि पहला आइटम जो राज्य के तय की गई शर्तों को पूरा करता हो.

फ़ाइल की जगह:
res/drawable/filename.xml
फ़ाइल का नाम, रिसॉर्स आईडी है
कंपाइल किए गए संसाधन डेटा टाइप:
StateListDrawable के लिए रिसॉर्स पॉइंटर
संसाधन का रेफ़रंस:
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है Java में: R.drawable.filename
एक्सएमएल में: @[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
स्ट्रिंग. ज़रूरी है. एक्सएमएल नेमस्पेस तय करता है, जिसे "http://schemas.android.com/apk/res/android".
android:constantSize
बूलियन. अगर ड्रॉएबल के रिपोर्ट किए गए अंदरूनी साइज़ की स्थिति में बदलाव नहीं होता है, तो सही है बदलाव (सभी राज्यों में साइज़ ज़्यादा से ज़्यादा नहीं होना चाहिए); अगर इवेंट साइज़ के हिसाब से साइज़ अलग-अलग है, तो गलत मौजूदा स्थिति. डिफ़ॉल्ट रूप से, यह वैल्यू 'गलत' पर सेट होती है.
android:dither
बूलियन. अगर बिट मैप में वही पिक्सेल नहीं है, तो बिट मैप में डायदरिंग सक्षम करने के लिए सही स्क्रीन जैसा कॉन्फ़िगरेशन, जैसे कि RGB 565 स्क्रीन पर ARGB 8888 बिटमैप; गलत डीदरिंग बंद करें. डिफ़ॉल्ट रूप से, 'सही' होता है.
android:variablePadding
बूलियन. अगर ड्रॉएबल की पैडिंग, मौजूदा ट्रैफ़िक के हिसाब से बदलती है, तो वैल्यू 'सही' होगी चुना गया राज्य; अगर पैडिंग अधिकतम सीमा पर आधारित है, तो सभी राज्यों की पैडिंग (जगह) शामिल है. इस सुविधा को चालू करने के लिए ज़रूरी है कि आप स्थिति बदलने पर लेआउट करता है, जो अक्सर काम नहीं करता. डिफ़ॉल्ट रूप से, यह वैल्यू 'गलत' पर सेट होती है.
<item>
यह तय करता है कि कुछ राज्यों में, ड्रॉ किए जा सकने वाले एलिमेंट का इस्तेमाल किया जा सकेगा. इसके बारे में एट्रिब्यूट के बारे में बताया गया है. <selector> एलिमेंट का चाइल्ड.

विशेषताएं:

android:drawable
ड्रॉ करने लायक संसाधन. ज़रूरी है. ड्रॉ करने लायक संसाधन का रेफ़रंस.
android:state_pressed
बूलियन. अगर इस आइटम का इस्तेमाल, ऑब्जेक्ट पर टैप किए जाने पर किया जाता है, तो वैल्यू 'सही' होगी. जैसे, जब किसी बटन पर टैप किया गया हो छुआ जाता है; अगर इस आइटम का इस्तेमाल डिफ़ॉल्ट और बिना टैप किए हुए तरीके में किया जाता है, तो यह गलत है.
android:state_focused
बूलियन. अगर ऑब्जेक्ट में इनपुट फ़ोकस मौजूद होने पर इस आइटम का इस्तेमाल किया जाता है, तो वैल्यू 'सही' होगी, जैसे, जब उपयोगकर्ता कोई टेक्स्ट इनपुट चुनता है; गलत है, अगर इस आइटम का डिफ़ॉल्ट रूप से इस्तेमाल किया जाता है, फ़ोकस नहीं किया जा सकता.
android:state_hovered
बूलियन. सही है, अगर इस आइटम का इस्तेमाल तब किया जाता है, जब कर्सर को ऑब्जेक्ट पर घुमाया जाता है; अगर इस आइटम का इस्तेमाल डिफ़ॉल्ट, बिना कर्सर वाले स्थिति में किया जाता है, तो यह गलत है. अक्सर, यह ड्रॉएबल उसी ड्रॉएबल का इस्तेमाल किया जा सकता है जिसका इस्तेमाल "फ़ोकस किया गया" राज्य.

एपीआई लेवल 14 में पेश किया गया.

android:state_selected
बूलियन. अगर इस आइटम का इस्तेमाल तब किया जाता है, जब ऑब्जेक्ट मौजूदा है डायरेक्शनल कंट्रोल के साथ नेविगेट करते समय, उपयोगकर्ता को चुनना. जैसे, सूची में नेविगेट करते समय डी-पैड के साथ; अगर इस आइटम का इस्तेमाल तब किया जाता है, जब ऑब्जेक्ट को नहीं चुना जाता, तो यह गलत होती है.

चुनी गई स्थिति का इस्तेमाल तब किया जाता है, जब android:state_focused काफ़ी न हो. जैसे, जब सूची के व्यू में फ़ोकस हो और इसके अंदर मौजूद किसी आइटम को डी-पैड से चुना गया हो.

android:state_checkable
बूलियन. अगर इस आइटम का इस्तेमाल तब किया जाता है, जब ऑब्जेक्ट को चुना जा सकता है, तो 'सही'; गलत है, अगर यह आइटम का इस्तेमाल तब किया जाता है, जब ऑब्जेक्ट चुनने लायक न हो. यह सिर्फ़ तब काम आता है, जब ऑब्जेक्ट यह कर सके चुनने और न चुनने लायक विजेट के बीच ट्रांज़िशन.
android:state_checked
बूलियन. अगर इस आइटम का इस्तेमाल, ऑब्जेक्ट के चुने जाने पर किया जाता है, तो 'सही'; गलत है, अगर यह का इस्तेमाल तब किया जाता है, जब ऑब्जेक्ट से चुना हुआ का निशान हटा दिया जाता है.
android:state_enabled
बूलियन. अगर इस आइटम का इस्तेमाल ऑब्जेक्ट के चालू होने पर किया जाता है, तो सही है, जिसका मतलब है टच या क्लिक इवेंट पाने की सुविधा; गलत है अगर इसका इस्तेमाल तब किया जाता है जब ऑब्जेक्ट बंद किया गया.
android:state_activated
बूलियन. सही है, अगर इस आइटम का इस्तेमाल तब किया जाता है, जब ऑब्जेक्ट को इस तौर पर चालू किया जाता है स्थायी चुनाव, जैसे कि "हाइलाइट" स्थायी सूची में पहले से चुना गया सूची आइटम नेविगेशन व्यू; अगर ऑब्जेक्ट के चालू न होने पर इसका इस्तेमाल किया जाता है, तो यह वैल्यू गलत होती है.

एपीआई लेवल 11 में पेश किया गया.

android:state_window_focused
बूलियन. 'सही है' अगर इस आइटम का इस्तेमाल तब किया जाता है जब ऐप्लिकेशन विंडो पर फ़ोकस हो, यानी ऐप्लिकेशन को फ़ोरग्राउंड में दिखाया गया हो; गलत है, अगर ऐप्लिकेशन में इस आइटम का इस्तेमाल किया जाता है विंडो पर फ़ोकस नहीं होता, उदाहरण के लिए, अगर नोटिफ़िकेशन शेड नीचे खींचा गया हो या कोई डायलॉग दिखता हो.

ध्यान दें: Android, इन स्थितियों की सूची में पहला आइटम लागू करता है ऑब्जेक्ट की मौजूदा स्थिति से मेल खाता है. इसलिए, अगर सूची के पहले आइटम में कोई भी पिछली राज्य विशेषता नहीं है, तो यह हर बार लागू होता है. इसलिए, आपको अपने डिफ़ॉल्ट वैल्यू को हमेशा आखिरी के तौर पर सेट करें, जैसा कि इस उदाहरण में दिखाया गया है.

उदाहरण:
एक्सएमएल फ़ाइल 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>

यह लेआउट एक्सएमएल, बटन पर क्लिक की जा सकने वाली स्थिति की सूची को लागू करता है:

<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
एक्सएमएल में: @[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
स्ट्रिंग. ज़रूरी है. एक्सएमएल नेमस्पेस तय करता है, जिसे "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
एक्सएमएल में: @[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
स्ट्रिंग. ज़रूरी है. एक्सएमएल नेमस्पेस तय करता है, जिसे "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
पूरी संख्या. पिक्सल में बायां ऑफ़सेट.
उदाहरण:
एक्सएमएल फ़ाइल 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>

यह लेआउट एक्सएमएल किसी व्यू पर ड्रॉएबल लागू करता है:

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

और नीचे दिया गया कोड पहले आइटम से दूसरे आइटम में 500 मि॰से॰ का ट्रांज़िशन करता है:

Kotlin

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

Java

ImageButton button = (ImageButton) findViewById(R.id.button);
Drawable drawable = button.getDrawable();
if (drawable instanceof TransitionDrawable) {
    ((TransitionDrawable) drawable).startTransition(500);
}
यह भी देखें:

इनसेट ड्रॉएबल

एक्सएमएल में तय किया गया ड्रॉबल, जिसमें तय की गई दूरी से ड्रॉ करने लायक कोई दूसरा एलिमेंट शामिल होता है. यह काम का है जब किसी व्यू के लिए ऐसा बैकग्राउंड चाहिए जो व्यू की असल सीमाओं से कम हो.

फ़ाइल की जगह:
res/drawable/filename.xml
फ़ाइल का नाम, रिसॉर्स आईडी है
कंपाइल किए गए संसाधन डेटा टाइप:
InsetDrawable के लिए रिसॉर्स पॉइंटर
संसाधन का रेफ़रंस:
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है Java में: R.drawable.filename
एक्सएमएल में: @[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
स्ट्रिंग. ज़रूरी है. एक्सएमएल नेमस्पेस तय करता है, जिसे "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" />
यह भी देखें:

ड्रॉ करने लायक क्लिप

एक्सएमएल में एक ऐसा ड्रॉबल तय किया गया है जो इस ड्रॉएबल के मौजूदा लेवल के आधार पर, किसी दूसरे ड्रॉबल को क्लिप करता है. आपने लोगों तक पहुंचाया मुफ़्त में यह कंट्रोल किया जा सकता है कि लेवल के हिसाब से, ड्रॉ करने लायक चाइल्ड कार्ड की चौड़ाई और ऊंचाई कितनी होगी इसे अपने कंटेनर में कहां रखा जाए, इसे कंट्रोल करने के लिए गुरुत्वाकर्षण के रूप में इस्तेमाल किया जाता है. अक्सर लागू करने के लिए इस्तेमाल किए जाते हैं जैसे कि प्रोग्रेस बार.

फ़ाइल की जगह:
res/drawable/filename.xml
फ़ाइल का नाम, रिसॉर्स आईडी है
कंपाइल किए गए संसाधन डेटा टाइप:
ClipDrawable के लिए रिसॉर्स पॉइंटर
संसाधन का रेफ़रंस:
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है Java में: R.drawable.filename
एक्सएमएल में: @[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
स्ट्रिंग. ज़रूरी है. एक्सएमएल नेमस्पेस तय करता है, जिसे "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" होता है, तो कोई क्लिपिंग नहीं होती, क्योंकि ड्रॉ करने योग्य वर्टिकल स्पेस (जब तक ड्रॉ करने लायक लेवल 0 न हो, इस स्थिति में यह नहीं दिखेगा).
center_horizontal ऑब्जेक्ट को उसके साइज़ में बदलाव किए बिना, उसके कंटेनर के हॉरिज़ॉन्टल सेंटर में रखें. क्लिपिंग भी उसी तरह काम करती है जैसे गुरुत्वाकर्षण "center" होने पर किया जाता है.
fill_horizontal अगर ज़रूरत हो, तो ऑब्जेक्ट का हॉरिज़ॉन्टल साइज़ बढ़ाएं, ताकि यह अपने कंटेनर को पूरी तरह से भर सके. टास्क कब शुरू होगा clipOrientation "horizontal" है, कोई क्लिपिंग नहीं होती, क्योंकि ड्रॉ करने योग्य हॉरिज़ॉन्टल स्पेस (जब तक ड्रॉ करने लायक लेवल 0 न हो, इस स्थिति में यह नहीं दिखेगा).
center ऑब्जेक्ट को उसके कंटेनर के बीच में वर्टिकल और हॉरिज़ॉन्टल, दोनों ऐक्सिस में रखें, न कि उसका आकार बदल रहा है. जब clipOrientation "horizontal" होता है, तो क्लिपिंग बाईं और दाईं ओर होती है. जब clipOrientation "vertical" होता है, तो ऊपर और नीचे क्लिपिंग होती है.
fill अगर ज़रूरत हो, तो ऑब्जेक्ट का हॉरिज़ॉन्टल और वर्टिकल साइज़ बड़ा करें, ताकि यह ऑब्जेक्ट को पूरी तरह से भर सके कंटेनर. कोई क्लिपिंग नहीं होती क्योंकि ड्रॉ करने योग्य हॉरिज़ॉन्टल और वर्टिकल स्पेस (अगर ड्रॉ करने लायक लेवल 0 न हो, इस मामले में यह दिखाई देता है).
clip_vertical बच्चे के ऊपरी और/या निचले किनारों को क्लिप करने के लिए सेट किया जा सकने वाला अन्य विकल्प उसके कंटेनर की सीमाएं शामिल होती हैं. यह क्लिप लंबवत गुरुत्वाकर्षण पर आधारित है: शीर्ष गुरुत्वाकर्षण क्लिप निचला किनारा, निचला गुरुत्वाकर्षण ऊपरी किनारे को क्लिप करता है, और कोई भी दोनों किनारों को क्लिप नहीं करता है.
clip_horizontal दूसरा विकल्प, जिसे इस तरह सेट किया जा सकता है कि बच्चे के बाएं और/या दाएं किनारे क्लिप किए जाएं उसके कंटेनर की सीमाएं शामिल होती हैं. यह क्लिप हॉरिज़ॉन्टल गुरुत्वाकर्षण पर आधारित है: बायां गुरुत्वाकर्षण क्लिप दाईं ओर से, दाईं ओर का गुरुत्वाकर्षण, बाएं किनारे को क्लिप करता है, और कोई भी दोनों किनारों को क्लिप नहीं करता है.
उदाहरण:
एक्सएमएल फ़ाइल 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" />

व्यू में बनाई गई क्लिप को इस लेआउट एक्सएमएल में लागू किया जाता है:

<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
}

Java

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

लेवल बढ़ाने से क्लिपिंग कम हो जाती है और इमेज धीरे-धीरे दिखती है. यह रहा 7,000 के लेवल पर:

ध्यान दें: डिफ़ॉल्ट लेवल 0 है, जो पूरी तरह से क्लिप किया गया है, ताकि इमेज नहीं दिखता. जब लेवल 10,000 का होता है, तब इमेज क्लिप नहीं होती और पूरी तरह से दिखती है.

यह भी देखें:

ड्रॉ करने लायक स्केल

एक्सएमएल में तय किया गया ड्रॉबल, जो किसी दूसरे ड्रॉएबल का साइज़ उसके मौजूदा साइज़ के आधार पर बदलता है लेवल.

फ़ाइल की जगह:
res/drawable/filename.xml
फ़ाइल का नाम, रिसॉर्स आईडी है
कंपाइल किए गए संसाधन डेटा टाइप:
ScaleDrawable के लिए रिसॉर्स पॉइंटर
संसाधन का रेफ़रंस:
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है Java में: R.drawable.filename
एक्सएमएल में: @[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
स्ट्रिंग. ज़रूरी है. एक्सएमएल नेमस्पेस तय करता है, जिसे "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% है, जैसे कि 100% या 12.5%.
android:scaleWidth
प्रतिशत. स्केल की चौड़ाई, जिसे ड्रॉएबल के प्रतिशत के तौर पर दिखाया जाता है सीमित. वैल्यू का फ़ॉर्मैट XX% है, जैसे कि 100% या 12.5%.
उदाहरण:
<?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%" />
यह भी देखें:

आकार ड्रॉ करने योग्य

यह एक सामान्य आकार है, जिसके बारे में एक्सएमएल में बताया गया है.

फ़ाइल की जगह:
res/drawable/filename.xml
फ़ाइल का नाम, रिसॉर्स आईडी है
कंपाइल किए गए संसाधन डेटा टाइप:
GradientDrawable के लिए रिसॉर्स पॉइंटर
संसाधन का रेफ़रंस:
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है Java में: R.drawable.filename
एक्सएमएल में: @[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
स्ट्रिंग. ज़रूरी है. एक्सएमएल नेमस्पेस तय करता है, जिसे "http://schemas.android.com/apk/res/android".
android:shape
कीवर्ड. आकार का टाइप बताता है. मान्य मान हैं:
वैल्यूब्यौरा
"rectangle" एक रेक्टैंगल, जो मौजूदा व्यू को भर देता है. यह डिफ़ॉल्ट आकार है.
"oval" एक अंडाकार आकार, जो शामिल व्यू के डाइमेंशन के मुताबिक होता है.
"line" एक हॉरिज़ॉन्टल लाइन, जो कंटेनमेंट व्यू की चौड़ाई में फैली होती है. यह आकार की चौड़ाई को परिभाषित करने के लिए <stroke> एलिमेंट की ज़रूरत होती है लाइन.
"ring" रिंग का आकार.

इन एट्रिब्यूट का इस्तेमाल सिर्फ़ तब किया जाता है, जब android:shape="ring":

android:innerRadius
डाइमेंशन. रिंग के अंदरूनी हिस्से (बीच में छेद) को डाइमेंशन वैल्यू या डाइमेंशन रिसॉर्स के तौर पर.
android:innerRadiusRatio
फ़्लोट. अंदर का रेडियस रिंग का एक हिस्सा है, जिसे रिंग की चौड़ाई के अनुपात में दिखाया जाता है. उदाहरण के लिए, अगर android:innerRadiusRatio="5" है, तो अंदरूनी रेडियस रिंग की चौड़ाई को 5 से भाग देने पर मिली वैल्यू के बराबर होगा. यह मान को android:innerRadius से बदल दिया गया है. डिफ़ॉल्ट वैल्यू 9 है.
android:thickness
डाइमेंशन. इसकी मोटाई रिंग, डाइमेंशन मान या डाइमेंशन संसाधन के तौर पर.
android:thicknessRatio
फ़्लोट. रिंग की मोटाई रिंग की चौड़ाई के अनुपात के तौर पर दिखाया जाता है. उदाहरण के लिए, अगर android:thicknessRatio="2", तो मोटाई, रिंग की चौड़ाई को 2 से भाग देने पर मिलती है. इस वैल्यू को android:innerRadius से बदल दिया गया है. डिफ़ॉल्ट वैल्यू तीन है.
android:useLevel
बूलियन. सही है, अगर इसका इस्तेमाल इस तौर पर किया जाता है LevelListDrawable. आम तौर पर, यह जानकारी गलत होती है, या फिर हो सकता है कि आपका आकार न दिखे.
<corners>
आकार के लिए गोल कोने बनाता है. यह सिर्फ़ तब लागू होता है, जब आकार कोई रेक्टैंगल होता है.

विशेषताएं:

android:radius
डाइमेंशन. सभी कोनों का दायरा, डाइमेंशन वैल्यू या डाइमेंशन संसाधन के तौर पर. यह हर एक के लिए बदल जाता है को फ़ॉलो करें.
android:topLeftRadius
डाइमेंशन. सबसे ऊपर बाएं कोने का रेडियस, डाइमेंशन वैल्यू या डाइमेंशन रिसॉर्स के तौर पर.
android:topRightRadius
डाइमेंशन. सबसे ऊपर दाएं कोने का दायरा, डाइमेंशन वैल्यू या डाइमेंशन संसाधन के तौर पर.
android:bottomLeftRadius
डाइमेंशन. सबसे नीचे बाएं कोने का दायरा, डाइमेंशन वैल्यू या डाइमेंशन संसाधन के तौर पर.
android:bottomRightRadius
डाइमेंशन. सबसे नीचे दाएं कोने का दायरा, डाइमेंशन वैल्यू या डाइमेंशन संसाधन के तौर पर.

ध्यान दें: शुरुआत में हर कोने के लिए एक कोने की जानकारी दी जानी चाहिए रेडियस 1 से ज़्यादा है, तो कोई भी कोने गोल नहीं होंगे. अगर आपको कुछ खास कोने चाहिए को राउंड नहीं किया जाना चाहिए, तो इसका मतलब है कि डिफ़ॉल्ट कोने को सेट करने के लिए android:radius का इस्तेमाल करें रेडियस 1 से ज़्यादा है और फिर हर कोने को खास मानों से बदल देता है चाहते हैं, तो 0 ("0dp") दें, जहां आपको गोल कोने नहीं चाहिए.

<gradient>
आकार के लिए ग्रेडिएंट रंग तय करता है.

विशेषताएं:

android:angle
पूरी संख्या. ग्रेडिएंट के लिए कोण, डिग्री में. 0 को बाएं से दाएं, 90 को नीचे से ऊपर. यह 45 का गुणांक होना चाहिए. डिफ़ॉल्ट वैल्यू 0 होती है.
android:centerX
फ़्लोट. ग्रेडिएंट के केंद्र के लिए सापेक्ष X-स्थिति (0 - 1.0).
android:centerY
फ़्लोट. ग्रेडिएंट के केंद्र के लिए सापेक्ष Y-स्थिति (0 - 1.0).
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 सेट हो.
उदाहरण:
एक्सएमएल फ़ाइल 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>

यह लेआउट एक्सएमएल, व्यू में बनाए जा सकने वाले आकार को लागू करता है:

<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

Java

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

TextView tv = (TextView)findViewById(R.id.textview);
tv.setBackground(shape);
यह भी देखें: