2010-04-13 16 views
41

एंड्रॉइड कई सिस्टम संसाधनों (android.R) के साथ आता है जिसका उपयोग आपको समय बचाने और आपके एप्लिकेशन को हल्का बनाने के लिए किया जा सकता है।उपयोगी एंड्रॉइड सिस्टम संसाधन

उदाहरण के लिए, मैं हाल ही में पता चला कि एंड्रॉयड हां (android.R.string.yes), कोई (android.R.string.no) के लिए स्थानीय तार प्रदान करता है, रद्द (android.R.string.cancel) और ठीक (android.R.string.ok), अन्य तार के बीच में।

आप अन्य सिस्टम संसाधनों का उपयोग करने की सलाह देते हैं? या सिस्टम संसाधनों का उपयोग करने से बचने का कोई कारण है?

संपादित करें: टॉमस द्वारा बताया गया है, इस संसाधनों के कुछ परिणाम आप उम्मीद करेंगे (विशेष रूप से, android.R.string.yes/no रिटर्न Yes/No के बजाय OK/Cancel, सूचना के रूप में here) का उत्पादन नहीं हो सकता है। अधिक नियंत्रण के लिए, आप एंड्रॉइड स्रोत कोड से सिस्टम संसाधनों की प्रतिलिपि बना सकते हैं।

+2

आप इन्हें xml से कैसे एक्सेस करते हैं? –

+0

"या सिस्टम संसाधनों का उपयोग करने से बचने का कोई कारण है?" - यदि आप आइकन संसाधन जैसे सिस्टम संसाधनों का उपयोग कर रहे हैं, तो यह गारंटी नहीं है कि एक ही आइकन एंड्रॉइड के सभी संस्करणों में उपलब्ध है, जिसके परिणामस्वरूप आपका ऐप असंगत हो सकता है । – codeMan

+0

बहुत व्यापक/राय आधारित के रूप में बंद करने के लिए वोटिंग। –

उत्तर

46

आप android package में सभी सिस्टम संसाधनों की पूरी सूची प्राप्त कर सकते हैं।

हर बार जब मैं एंड्रॉइड पर कुछ करना चाहता हूं तो मैं यह देखने के लिए जांच करता हूं कि कोई सिस्टम संसाधन है जो मैं करना चाहता हूं। एंड्रॉइड स्रोत कोड (विशेष रूप से, their /res/ folder) आयात करने में मददगार है, जो पहले से लागू संसाधनों की खोज करते समय आप चाहते हैं, ताकि आप उनके विशिष्ट कार्यान्वयन को देख सकें।

व्यक्तिगत रूप से, मैं अपने आप को सबसे अधिक बार का उपयोग कर पाते हैं:

  • में निर्मित इस तरह के स्पिनर ड्रॉपडाउन के रूप में मानक कार्य, के लिए Android लेआउट।
  • एंड्रॉयड आईडी (android.R.id), क्योंकि आप अक्सर आप Android के विजेट से कुछ का उपयोग करना चाहते हैं तो इन का उपयोग करने की आवश्यकता है (उदाहरण के लिए, TabHost/TabWidget आप "android:id/tabhost" का उपयोग करने की आवश्यकता है "android:id/tabs" और "android:id/tabcontent" आप करना चाहते हैं एक एक्सएमएल लेआउट लागू करें)।
  • अंतर्निहित रंग, विशेष रूप से android.R.color.transparent
  • android.R.anim में एंड्रॉइड के अंतर्निर्मित फीड-इन और फीड-आउट एनिमेशन।
+9

ध्यान रखें कि वे संसाधन आपके एसडीके के साथ शिप करते हैं। किसी विशिष्ट प्लेटफ़ॉर्म निर्देशिका के नीचे 'डेटा/res/'निर्देशिका में देखें। मैं उन चीज़ों का पुन: उपयोग करने से सावधान रहूंगा जो OEM द्वारा बदल सकते हैं - आकर्षित करने योग्य संसाधन एक उदाहरण समस्या क्षेत्र होगा। – CommonsWare

+0

@CommonsWare एक वास्तविक डिवाइस पर चलते समय, संसाधन कहां से लोड होते हैं? – ThomasW

+0

@ थॉमसडब्ल्यू: "डिवाइस फर्मवेयर में कहीं कहीं", मैं नहीं कह सकता, क्योंकि मैंने कभी भी विशिष्टताओं की तलाश नहीं की है। माफ़ कीजिये! – CommonsWare

6

जैसा कि कॉमन्सवेयर ने उल्लेख किया है, आपको संसाधनों का निरीक्षण करने के लिए एंड्रॉइड स्रोत भंडार डाउनलोड करने की आवश्यकता नहीं है; बस <android-sdk-dir>/platforms/android-X.X/data/res/ पर जाएं। हालांकि, यदि आप इनका उपयोग करना शुरू करते हैं तो आप जल्दी से निराश हो जाएंगे कि उनमें से अधिकतर android.R कक्षा के माध्यम से उपलब्ध हैं। अधिकांश समय मुझे उन्हें अपने ग्रहण कार्यक्षेत्र में आयात करना होता है। :-(

मेरे पसंदीदा संसाधन ऐसे ड्रॉबल्स हैं जो नियंत्रण के केंद्रित/दबाए गए/अक्षम राज्यों (जैसे android.R.drawable.btn_default) के आधार पर अलग-अलग दिखाते हैं। मैं उन लोगों का उपयोग करता हूं या अपने ऐप्स के लिए कस्टम बटन बनाने के लिए उन्हें ट्विक करता हूं जैसा कि आप देख सकते हैं कि क्या आप /data/res/drawable/btn_default.xml देखते हैं, उन्हें <selector> एक्सएमएल तत्व के रूप में परिभाषित किया गया है, जो रनटाइम पर StateListDrawable में फुलाया जाता है। आप अपनी खुद की स्टेटलिस्ट ड्रावेबल्स भी बना सकते हैं और वे पृष्ठभूमि के रूप में और एक के रूप में बहुत उपयोगी हैं बटन के "यौगिक drawable" (TextView.setCompoundDrawables() देखें)।

+0

मुझे आश्चर्य है, एक वास्तविक डिवाइस पर चलते समय, संसाधन कहां से लोड होते हैं? – ThomasW

14

आप एक्सएमएल से access system resources कर सकते हैं उन्हें एंड्रॉयड पैकेज नाम के साथ योग्यता, यानी "@android:string/ok"

द्वारा
1

कृपया ध्यान दें कि अनुवाद वाकई खराब हैं।

उदाहरण के लिए एंड्रॉइड -25 में जर्मन "नो" "एब्रेचेन" है जिसका वास्तव में "रद्द" होता है। "हां" का अनुवाद "ओके" के रूप में किया गया है ...

मुझे यकीन नहीं है कि अन्य भाषाएं कितनी अच्छी हैं, इसलिए मैं एक अनुवाद का उपयोग करूंगा।

+0

ऐसा नहीं है कि अनुवाद खराब हैं। जैसा कि ओपी ने अपने प्रश्न में नोट किया था, यह है कि 'Yes/no' के बजाय' android.R.string.yes/no' 'ठीक/रद्द करें 'लौटाता है। ऐसा इसलिए संभव है क्योंकि डेवलपर ने सोचा था कि 'android.R.string.yes/no' 'android.R.string.ok/cancel' से अधिक संक्षिप्त था। – Patrick

+1

इसके अलावा, 'android.R.string.ok' का अनुवाद नहीं किया जा रहा है। मैंने परीक्षण की हर भाषा के लिए "ठीक" है। (कुछ भाषाओं के लिए, "ठीक है" उचित नहीं है।) – ThomasW

संबंधित मुद्दे