कॉन्सेप्ट और Jetpack Compose को लागू करने का तरीका
Android Studio, tools नेमस्पेस में कई एक्सएमएल एट्रिब्यूट के साथ काम करता है. इनकी मदद से, डिज़ाइन के समय की सुविधाएं चालू की जा सकती हैं. जैसे, किसी फ़्रैगमेंट में कौनसा लेआउट दिखाना है. इसके अलावा, कंपाइल के समय के व्यवहार को भी कंट्रोल किया जा सकता है. जैसे, अपने एक्सएमएल संसाधनों पर कौनसा श्रिंकिंग मोड लागू करना है. ऐप्लिकेशन बनाने के दौरान, बिल्ड टूल इन एट्रिब्यूट को हटा देते हैं, ताकि आपके एपीके के साइज़ या रनटाइम के व्यवहार पर कोई असर न पड़े.
इन एट्रिब्यूट का इस्तेमाल करने के लिए, हर उस एक्सएमएल फ़ाइल के रूट एलिमेंट में tools नेमस्पेस जोड़ें जहां आपको इनका इस्तेमाल करना है. जैसे, यहां दिखाया गया है:
<RootTag xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" >
गड़बड़ी को ठीक करने वाले एट्रिब्यूट
नीचे दिया गया एट्रिब्यूट, लिंट की चेतावनी वाले मैसेज को दबाने में मदद करता है:
tools:targetApi
इसके लिए है: कोई भी एलिमेंट
इसका इस्तेमाल: लिंट करता है
यह एट्रिब्यूट, 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>
इसका इस्तेमाल: लिंट, Android Studio में लेआउट एडिटर करता है
इस एट्रिब्यूट से यह एलान किया जाता है कि डिफ़ॉल्ट रूप से यह लेआउट किस ऐक्टिविटी से जुड़ा है. इससे एडिटर या लेआउट की झलक में ऐसी सुविधाएं चालू होती हैं जिनके लिए ऐक्टिविटी की जानकारी ज़रूरी होती है. जैसे, झलक में लेआउट का थीम क्या है और क्विकफ़िक्स से जनरेट किए गए onClick हैंडलर कहां डालने हैं. इसके बारे में दूसरी इमेज में दिखाया गया है.
tools:context सेट किया हो.onClick
ऐक्टिविटी के क्लास नेम को तय करने के लिए, मेनिफ़ेस्ट फ़ाइल में मौजूद डॉट प्रीफ़िक्स का इस्तेमाल किया जा सकता है. इसमें पूरे पैकेज का नाम शामिल नहीं होता.
उदाहरण के लिए:
<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 में लेआउट एडिटर करता है
किसी दिए गए 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 में लेआउट एडिटर करता है
इस एट्रिब्यूट से यह एलान किया जाता है कि आपको लेआउट की झलक में, फ़्रैगमेंट के अंदर कौनसा लेआउट दिखाना है. ऐसा इसलिए, क्योंकि लेआउट की झलक, ऐक्टिविटी के उस कोड को नहीं चला सकती जो आम तौर पर लेआउट पर लागू होता है.
उदाहरण के लिए:
<fragment android:name="com.example.main.ItemListFragment"
tools:layout="@layout/list_content" />
tools:listitem, tools:listheader, tools:listfooter
इसके लिए है: <AdapterView> (और सबक्लास, जैसे कि <ListView>)
इसका इस्तेमाल: Android Studio में लेआउट एडिटर करता है
इन एट्रिब्यूट से यह तय किया जाता है कि सूची के आइटम, हेडर, और फ़ुटर के लिए लेआउट की झलक में कौनसा लेआउट दिखाना है. लेआउट में मौजूद सभी डेटा फ़ील्ड में, संख्या वाला कॉन्टेंट भरा जाता है. जैसे, "आइटम 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 में लेआउट एडिटर करता है
इस एट्रिब्यूट की मदद से, किसी ऐसे लेआउट की ओर इशारा किया जा सकता है जो इस लेआउट का इस्तेमाल करके
<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 में लेआउट एडिटर करता है
इस एट्रिब्यूट से यह तय किया जाता है कि लेआउट की झलक में,
ऐप्लिकेशन बार में कौनसा मेन्यू दिखेगा. इसकी वैल्यू, एक या उससे ज़्यादा मेन्यू आईडी होती हैं. इन्हें कॉमा से अलग किया जाता है. इनमें @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 में लेआउट एडिटर करता है
इन एट्रिब्यूट से, 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 में लेआउट एडिटर करता है
इस एट्रिब्यूट की मदद से, झलक में 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 में लेआउट एडिटर करता है
इस एट्रिब्यूट की मदद से, व्यू में प्लेसहोल्डर डेटा या इमेज डाली जा सकती हैं. उदाहरण के लिए, यह टेस्ट करने के लिए कि आपके ऐप्लिकेशन के लिए यूआई टेक्स्ट फ़ाइनल करने से पहले, आपका लेआउट टेक्स्ट के साथ कैसा दिखता है, प्लेसहोल्डर टेक्स्ट का इस्तेमाल इस तरह किया जा सकता है:
<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 |
इमेज. इनका इस्तेमाल बैकग्राउंड के तौर पर किया जा सकता है |