कॉन्सेप्ट और Jetpack Compose को लागू करना
Android Studio, tools नेमस्पेस में कई तरह के एक्सएमएल एट्रिब्यूट के साथ काम करता है. इनसे डिज़ाइन-टाइम की सुविधाएं चालू होती हैं. जैसे, फ़्रैगमेंट में कौनसा लेआउट दिखाना है या कंपाइल-टाइम के व्यवहार, जैसे कि आपके एक्सएमएल संसाधनों पर कौनसा श्रिंकिंग मोड लागू करना है. ऐप्लिकेशन बनाते समय, बिल्ड टूल इन एट्रिब्यूट को हटा देते हैं, ताकि आपके APK के साइज़ या रनटाइम के व्यवहार पर कोई असर न पड़े.
इन एट्रिब्यूट का इस्तेमाल करने के लिए, हर उस एक्सएमएल फ़ाइल के रूट एलिमेंट में tools नेमस्पेस जोड़ें जिसमें आपको इनका इस्तेमाल करना है. इसके बारे में यहां बताया गया है:
<RootTag xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" >
गड़बड़ी ठीक करने से जुड़े एट्रिब्यूट
इस एट्रिब्यूट की मदद से, लिंट चेतावनी वाले मैसेज को दबाया जा सकता है:
tools:targetApi
इसके लिए इस्तेमाल किया जा सकता है: कोई भी एलिमेंट
इस्तेमाल करने वाला टूल: Lint
यह एट्रिब्यूट, Java कोड में @TargetApi एनोटेशन की तरह ही काम करता है. इससे आपको उस एपीआई लेवल (इंटीजर या कोड नेम के तौर पर) की जानकारी देने की सुविधा मिलती है जो इस एलिमेंट के साथ काम करता है.
इससे टूल को पता चलता है कि आपके हिसाब से, इस एलिमेंट और इसके किसी भी चाइल्ड एलिमेंट का इस्तेमाल, सिर्फ़ बताए गए एपीआई लेवल या इसके बाद के वर्शन पर किया जाता है. इससे लिंट आपको चेतावनी नहीं देता है, अगर वह एलिमेंट या उसके एट्रिब्यूट उस एपीआई लेवल पर उपलब्ध नहीं हैं जिसे आपने minSdkVersion के तौर पर तय किया है.
उदाहरण के लिए, इस एट्रिब्यूट का इस्तेमाल इसलिए किया जा सकता है, क्योंकि GridLayout सिर्फ़ एपीआई लेवल 14 और इसके बाद के वर्शन पर उपलब्ध है. हालांकि, आपको पता है कि इस लेआउट का इस्तेमाल आपके कोड में किसी भी पुराने वर्शन के लिए नहीं किया जाता:
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:targetApi="14" >
(हालांकि, ध्यान दें कि हमारा सुझाव है कि आप इसके बजाय, सहायता लाइब्रेरी से GridLayout का इस्तेमाल करें.)
डिज़ाइन-टाइम व्यू एट्रिब्यूट
यहां दिए गए एट्रिब्यूट, लेआउट की उन विशेषताओं के बारे में बताते हैं जो सिर्फ़ Android Studio के लेआउट की झलक में दिखती हैं.
android: के बजाय tools:
इनके लिए है: <View>
इस्तेमाल: Android Studio लेआउट एडिटर
Android फ़्रेमवर्क के किसी भी <View> एट्रिब्यूट के साथ android: के बजाय tools: प्रीफ़िक्स का इस्तेमाल करके, लेआउट की झलक में सैंपल डेटा डाला जा सकता है.
यह तब काम आता है, जब एट्रिब्यूट की वैल्यू रनटाइम तक पॉप्युलेट नहीं होती और आपको लेआउट की झलक में इसका असर देखना होता है.
उदाहरण के लिए, अगर android:text एट्रिब्यूट की वैल्यू रनटाइम के दौरान सेट की गई है या आपको डिफ़ॉल्ट वैल्यू से अलग वैल्यू वाला लेआउट देखना है, तो tools:text को जोड़कर सिर्फ़ लेआउट की झलक के लिए कुछ टेक्स्ट तय किया जा सकता है.
tools:text
एट्रिब्यूट, लेआउट की झलक के लिए "Google Voice" को वैल्यू के तौर पर सेट करता है.android: नेमस्पेस एट्रिब्यूट और उससे मैच होने वाले tools: एट्रिब्यूट, दोनों को जोड़ा जा सकता है. नेमस्पेस एट्रिब्यूट का इस्तेमाल रनटाइम
के दौरान किया जाता है. वहीं, एट्रिब्यूट, रनटाइम
एट्रिब्यूट को सिर्फ़ लेआउट की झलक में बदलता है.
सिर्फ़ लेआउट की झलक के लिए, किसी एट्रिब्यूट की सेटिंग को पहले जैसा करने के लिए, tools: एट्रिब्यूट का भी इस्तेमाल किया जा सकता है. उदाहरण के लिए, अगर आपके पास दो चाइल्ड व्यू वाला FrameLayout है, लेकिन आपको लेआउट की झलक में सिर्फ़ एक चाइल्ड व्यू देखना है, तो उनमें से किसी एक को लेआउट की झलक में न दिखने के लिए सेट किया जा सकता है. इसके लिए, यहां दिया गया तरीका अपनाएं:
<Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="First" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Second" tools:visibility="invisible" />
डिज़ाइन व्यू में लेआउट एडिटर का इस्तेमाल करते समय, प्रॉपर्टी विंडो की मदद से, डिज़ाइन-टाइम व्यू के कुछ एट्रिब्यूट में बदलाव किया जा सकता है. डिज़ाइन-टाइम वाले हर एट्रिब्यूट को एट्रिब्यूट के नाम के बगल में मौजूद रिंच आइकॉन
से दिखाया जाता है. इससे, उसे उसी नाम के असल एट्रिब्यूट से अलग किया जा सकता है.
tools:context
इनके लिए है: कोई भी रूट <View>
इस्तेमाल करने वाले टूल: Lint, Android Studio Layout Editor
यह एट्रिब्यूट बताता है कि यह लेआउट डिफ़ॉल्ट रूप से किस गतिविधि से जुड़ा है. इससे एडिटर या लेआउट की झलक में ऐसी सुविधाएं चालू हो जाती हैं जिनके लिए गतिविधि की जानकारी होना ज़रूरी है. जैसे, झलक में लेआउट की थीम क्या है और क्विकफ़िक्स से जनरेट किए गए onClick हैंडलर कहां डालने हैं, जैसा कि इमेज 2 में दिखाया गया है.
onClick एट्रिब्यूट के लिए क्विकफ़िक्स की सुविधा सिर्फ़ तब काम करती है, जब आपने tools:context को सेट किया हो.गतिविधि क्लास का नाम बताने के लिए, मेनिफ़ेस्ट फ़ाइल में इस्तेमाल किए गए डॉट प्रीफ़िक्स का इस्तेमाल किया जा सकता है. हालांकि, इसमें पैकेज का पूरा नाम शामिल नहीं होना चाहिए.
उदाहरण के लिए:
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity" >
tools:itemCount
इनके लिए है: <RecyclerView>
इसका इस्तेमाल कौन करता है: Android Studio Layout Editor
किसी RecyclerView के लिए, यह एट्रिब्यूट उन आइटम की संख्या बताता है जिन्हें लेआउट एडिटर को झलक विंडो में रेंडर करना चाहिए.
उदाहरण के लिए:
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:itemCount="3"/>
tools:layout
इनके लिए है: <fragment>
इसका इस्तेमाल कौन करता है: Android Studio Layout Editor
यह एट्रिब्यूट बताता है कि आपको फ़्रैगमेंट के अंदर, लेआउट की झलक के लिए कौनसा लेआउट चाहिए. ऐसा इसलिए, क्योंकि लेआउट की झलक, आम तौर पर लेआउट लागू करने वाले गतिविधि कोड को लागू नहीं कर सकती.
उदाहरण के लिए:
<fragment android:name="com.example.main.ItemListFragment"
tools:layout="@layout/list_content" />
tools:listitem, tools:listheader, tools:listfooter
इनके लिए है: <AdapterView> (और <ListView> जैसी सबक्लास)
इसका इस्तेमाल कौन करता है: Android Studio Layout Editor
इन एट्रिब्यूट से यह तय होता है कि सूची के आइटम, हेडर, और फ़ुटर के लिए, लेआउट की झलक में कौनसा लेआउट दिखाना है. लेआउट में मौजूद सभी डेटा फ़ील्ड, अंकों वाले कॉन्टेंट से भरे जाते हैं. जैसे, "आइटम 1", ताकि सूची में मौजूद आइटम बार-बार न दिखें.
उदाहरण के लिए:
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:listitem="@layout/sample_list_item"
tools:listheader="@layout/sample_list_header"
tools:listfooter="@layout/sample_list_footer" />
tools:showIn
इसके लिए है: किसी लेआउट में मौजूद कोई भी रूट <View>, जिसे <include> से रेफ़र किया गया हो
इसका इस्तेमाल कौन करता है: Android Studio Layout Editor
इस एट्रिब्यूट की मदद से, उस लेआउट पर ले जाया जा सकता है जो <include> का इस्तेमाल करके इस लेआउट का इस्तेमाल करता है. इससे इस फ़ाइल की झलक देखी जा सकती है और इसमें बदलाव किया जा सकता है, क्योंकि यह अपने पैरंट लेआउट में एम्बेड होने पर दिखती है.
उदाहरण के लिए:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:text="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:showIn="@layout/activity_main" />
अब लेआउट की झलक में यह TextView लेआउट दिखता है, जैसा कि यह activity_main लेआउट के अंदर दिखता है.
tools:menu
इनके लिए है: कोई भी रूट <View>
इसका इस्तेमाल कौन करता है: Android Studio Layout Editor
इस एट्रिब्यूट से पता चलता है कि लेआउट की झलक, ऐप्लिकेशन बार में कौनसा मेन्यू दिखाती है. वैल्यू, एक या इससे ज़्यादा मेन्यू आईडी होती है. इन्हें कॉमा लगाकर अलग किया जाता है. इनमें @menu/ या ऐसा कोई आईडी प्रीफ़िक्स और .xml एक्सटेंशन नहीं होता.
उदाहरण के लिए:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:menu="menu1,menu2" />
tools:minValue, tools:maxValue
इनके लिए है: <NumberPicker>
इसका इस्तेमाल कौन करता है: Android Studio Layout Editor
ये एट्रिब्यूट, NumberPicker व्यू के लिए कम से कम और ज़्यादा से ज़्यादा वैल्यू सेट करते हैं.
उदाहरण के लिए:
<NumberPicker xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/numberPicker"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:minValue="0"
tools:maxValue="10" />
tools:openDrawer
इनके लिए है: <DrawerLayout>
इसका इस्तेमाल कौन करता है: Android Studio Layout Editor
इस एट्रिब्यूट की मदद से, झलक में DrawerLayout को खोला जा सकता है.
इनमें से कोई एक वैल्यू पास करके, यह भी बदला जा सकता है कि लेआउट एडिटर, लेआउट को कैसे रेंडर करे:
टेबल 1. लेआउट एडिटर, DrawerLayout को कैसे रेंडर करता है, इसमें बदलाव करने के लिए वैल्यू
| कॉन्स्टेंट | वैल्यू | ब्यौरा |
|---|---|---|
end | 800005 | ऑब्जेक्ट को उसके कंटेनर के आखिर में पुश करें. हालांकि, उसका साइज़ न बदलें. |
left | 3 | ऑब्जेक्ट को उसके कंटेनर की बाईं ओर पुश करें. हालांकि, उसका साइज़ न बदलें. |
right | 5 | ऑब्जेक्ट को उसके कंटेनर की दाईं ओर पुश करें. हालांकि, उसका साइज़ न बदलें. |
start | 800003 | ऑब्जेक्ट को उसके कंटेनर की शुरुआत में पुश करें. हालांकि, उसका साइज़ न बदलें. |
उदाहरण के लिए:
<androidx.drawerlayout.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:openDrawer="start" />
"@tools:sample/*" संसाधन
इनके लिए है: यूज़र इंटरफ़ेस (यूआई) टेक्स्ट या इमेज के साथ काम करने वाला कोई भी व्यू
इसका इस्तेमाल कौन करता है: Android Studio Layout Editor
इस एट्रिब्यूट की मदद से, अपने व्यू में प्लेसहोल्डर डेटा या इमेज इंजेक्ट की जा सकती हैं. उदाहरण के लिए, अपने ऐप्लिकेशन के लिए यूज़र इंटरफ़ेस (यूआई) टेक्स्ट को फ़ाइनल करने से पहले, यह जांचने के लिए कि आपका लेआउट टेक्स्ट के साथ कैसा काम करता है, प्लेसहोल्डर टेक्स्ट का इस्तेमाल इस तरह किया जा सकता है:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="@tools:sample/lorem" />
नीचे दी गई टेबल में, प्लेसहोल्डर डेटा के उन टाइप के बारे में बताया गया है जिन्हें लेआउट में इंजेक्ट किया जा सकता है:
टेबल 2. लेआउट के लिए प्लेसहोल्डर डेटा
| गुण मान | प्लेसहोल्डर डेटा की जानकारी |
|---|---|
@tools:sample/full_names |
@tools:sample/first_names और @tools:sample/last_names के कॉम्बिनेशन से रैंडम तरीके से जनरेट किए गए पूरे नाम |
@tools:sample/first_names |
आम तौर पर इस्तेमाल होने वाले नाम |
@tools:sample/last_names |
आम तौर पर इस्तेमाल होने वाले सरनेम |
@tools:sample/cities |
दुनिया भर के शहरों के नाम |
@tools:sample/us_zipcodes |
बिना किसी क्रम के जनरेट किए गए अमेरिका के पिन कोड |
@tools:sample/us_phones |
इस फ़ॉर्मैट में, बिना किसी क्रम के जनरेट किए गए फ़ोन नंबर:
(800) 555-xxxx |
@tools:sample/lorem |
लैटिन में प्लेसहोल्डर टेक्स्ट |
@tools:sample/date/day_of_week |
तारीख और समय के लिए, रैंडम तरीके से चुने गए फ़ॉर्मैट |
@tools:sample/date/ddmmyy | |
@tools:sample/date/mmddyy | |
@tools:sample/date/hhmm | |
@tools:sample/date/hhmmss | |
@tools:sample/avatars |
ड्रॉ करने लायक वेक्टर, जिन्हें प्रोफ़ाइल अवतार के तौर पर इस्तेमाल किया जा सकता है |
@tools:sample/backgrounds/scenic |
बैकग्राउंड के तौर पर इस्तेमाल की जा सकने वाली इमेज |