Android 2.1 के लिए स्क्रॉल करने योग्य लाइव वॉलपेपर कैसे बनाएं (भाग एक, यह अंतिम भी है लेकिन एक)

सभी को नमस्कार। आज मैं छवियों को स्क्रॉल करने की क्षमता के साथ एंड्रॉइड 2.1 के लिए एक लाइव वॉलपेपर बनाने की चाल को साझा करना चाहूंगा।

मैं देरी के बिना पर्यावरण को निर्धारित करने और ग्रहण में कोडिंग शुरू करने का प्रस्ताव करता हूं, एंड्रॉइड एसडीके और एवीडी प्रबंधक एमुलेटर में परीक्षण, और एक फोन पर अपलोड करना इंटरैक्टिव है (कॉल करने की क्षमता के साथ GoogleMaps के माध्यम से त्वरित नेविगेशन, अब कॉल करने की क्षमता के साथ मुझे और याद दिलाता है फोन नाविक। कौन जानता है, शायद अगले पुनरावृत्ति के बाद, कोडनाम froyo, google एक मानचित्र पर विस्तार करके 2 डी नोटबुक बनाने के बारे में सोचेगा?

मैं उन लोगों के लिए खरोंच से एक एप्लिकेशन के निर्माण का वर्णन करूँगा जो नौसिखिया हैं। आपको Android JDK के साथ-साथ ADT और Eclipse की आवश्यकता होगी। प्लगइन को स्थापित करने में कठिनाई जो मुझे ग्रहण के लिए एडीटी नहीं थी, और आपके पास नहीं होगी। आईडीई को रिबूट करने के बाद, "एंड्रॉइड एसडीके और एवीडी प्रबंधक" विंडोज टैब में दिखाई देगा। एपीआई स्तर 7, यानी एंड्रॉइड 2.1 या एपीआई स्तर 8, एंड्रॉइड 2.2 के साथ एक नया डिवाइस एमुलेटर बनाएं, लेकिन कम नहीं, क्योंकि पहले के संस्करणों में केवल लाइव वॉलपेपर सुविधा नहीं थी।

हमारे आवेदन में, 640x533 के jpg आकार का उपयोग चित्र के रूप में किया गया है। इसे पूरी स्क्रीन के साथ कवर करना असंभव है, ऐसे मामलों में स्क्रॉल करने में मदद मिलेगी। मैं केवल क्षैतिज स्क्रॉलिंग पर ध्यान केंद्रित करने का प्रस्ताव करता हूं जो आप मुख्य होमस्क्रीन के ढांचे के भीतर दोनों को व्यवस्थित करते हैं, उदाहरण के लिए, और पड़ोसी लोगों पर स्विच करना। परीक्षण उपकरण एचटीसी डिज़ायर में, 7 होमसाइंस हैं, इसलिए यह केवल सामने वाले तक सीमित होने का कोई मतलब नहीं है। बेशक, आप समझते हैं कि एक ही छवि में 240, 160 और 120 घनत्व वाले डिवाइस पर एक अलग नज़र होगी, इसलिए स्क्रीन विकर्ण और घनत्व को पहले से जानना महत्वपूर्ण है यदि आपका apliku इन मापदंडों को अच्छी तरह से निर्धारित करने में सक्षम नहीं है या यदि आप खुद को ऐसे सेट नहीं करते हैं कार्य, एक विशिष्ट मॉडल पर लक्ष्य करना। दोनों ही मामलों में, भौतिक और प्रदर्शित आकार के बीच संबंधों की गणना सूत्रों के उपयोग से की जाती है:

realScreenWidht = स्क्रीनविद / (घनत्व / 160)

realScreenHeight = स्क्रीनहाइट / (घनत्व / 160),

एक WVGA आयाम (480x800) के साथ HTC इच्छा के लिए, और 3.3 "-4.0" का एक विकर्ण है, (उच्च घनत्व, एचडीपीआई, 240 के साथ), उस चित्र के आकार की गणना, जिसकी हमें ज़रूरत है, जो पूरी स्क्रीन को ऊंचाई पर रखता है, इस तरह दिखता है:

घनत्व / 160 = 1.5

realScreenHeight = 800 / 1.5 = 533

छवि आकार की चौड़ाई 2 होमस्क्रीन है, इसलिए

realScreenWidht = 480 * 2 / 1.5 = 640

यही है, हमने सिद्धांत और पर्यावरण का पता लगा लिया है, मैं स्क्रॉल Android के रूप में बिल्ड लक्ष्य का चयन करते हुए, स्क्रॉल करने योग्य संदेश नामक एक एंड्रॉइड प्रोजेक्ट बनाने का प्रस्ताव करता हूं। एप्लिकेशन का नाम स्क्रॉलेबललाइवस्क्रिप्ट, पैकेज - com.scrollable.live.wallpaper के रूप में सेट किया गया है। पोस्टपेक्स के साथ प्रोजेक्ट (हमारे मामले में) का नाम, यानी स्क्रॉलेबललाइवडैप्टअक्टिविटी, अनस्पोकन नाम कन्वेंशन के अनुसार, एक्टिविटी के नाम फ़ील्ड में दर्ज किया गया है।

इसके बाद, हम कोकून (गतिविधि) को एक तितली (लाइव वॉलपेपर) में बदल देंगे, जिसके लिए हम AndroidManifest.xml खोलेंगे, पूरी तरह से स्क्रॉल करने योग्यLiveWallpaperActivity.java के बारे में भूल जाएंगे। एप्लिकेशन टैब में, हम यह सुनिश्चित करने में रुचि रखते हैं कि स्क्रैचेबललाइव्यूस्क्रिप्ट एक्टिविटी क्लास एप्लिकेशन नोड्स फ़ील्ड में निर्दिष्ट है, हम इसे सभी विशेषताओं और सिस्टम इवेंट फ़िल्टर के साथ हटा देते हैं। लाइव वॉलपेपर एक ऐसी सेवा है जिसे बस बनाया जाता है:

नई ScrollableLiveWallpaperService वर्ग में, WallpaperService से विरासत में मिला। स्क्रॉल करने योग्य इंजन शुरू करने के लिए आवश्यक कार्यान्वयन विधि की आवश्यकता है



 सार्वजनिक वर्ग स्क्रॉल करने योग्यLiveWallpaperService वॉलपेपर सेवा का विस्तार {
	 सार्वजनिक स्थिर अंतिम स्ट्रिंग SHARED_PREFS_NAME = "सेटिंग";
	
	 @Override
	 सार्वजनिक इंजन onCreateEngine () {
		 नया स्क्रॉल करने योग्य LWEngine () लौटें;
	 }
	
	 कक्षा स्क्रॉल करने योग्य इंजन इंजन के विस्तार पर लागू होता है
		 @Override
		 सार्वजनिक शून्य onSaringPreferenceChanged (साझा किए गए संदर्भ arg0, स्ट्रिंग arg1) {
		 }
	 }
 }


आइए AndroidManifest.xml पर वापस जाएं और नोड्स में सेवा जोड़ें:

1



फिल्टर

2



और वरीयता स्क्रीन बनाने के लिए मेटाडेटा आवश्यक है

3



Res फ़ोल्डर में, xml / scrollable.xml बनाएँ:

 <? xml संस्करण = "1.0" एन्कोडिंग = "utf-8"?>
 <वॉलपेपर xmlns: android = "http://schemas.android.com/apk/res/android"
	 Android: थंबनेल = "@ drawable / आइकन"
	 Android: विवरण = "@ string / app_name"
	 Android: settingsActivity = "com.scrollable.live.wallpaper.preferences.ScrollablePreferences" />


पैकेज में स्क्रॉल करने योग्यPreferences वर्ग बनाएं। com.scrollable.live.wallpaper.preferences:

 सार्वजनिक वर्ग स्क्रॉल करने योग्य संदर्भ प्राथमिकता सक्रियता को बढ़ाता है 
                    OnSaredPreferenceChangeListener {

	 @Override
	 संरक्षित शून्य onCreate (बंडल आइकल) {
		 super.onCreate (icicle);
		 getPreferenceManager ()।
                        setSaringPreferencesName (स्क्रॉल करने योग्यLiveWallpaperService.SHARED_PREFS_NAME); 
  addPreferencesFromResource (R.xml.preferences); 
		 getPreferenceManager ()।
                        getSaredPreferences ()। registerOnSaredPreferenceChangeListener (यह);
	 }

	 @Override
	 सार्वजनिक शून्य onSaringPreferenceChanged (साझा साझा साझाकरण, स्ट्रिंग कुंजी) {
	 }
	
	 @Override
	 संरक्षित शून्य पर () {
		 super.onResume ();
	 }

	 @Override
	 संरक्षित शून्य onDestroy () {
		 getPreferenceManager ()।
                        getSaringPreferences ()। unregisterOnSaringPreferenceChangeListener (यह);
		 super.onDestroy ();
	 }
 }


प्राथमिकता स्क्रीन गतिविधि लगभग सेवा के लिए तैयार है। यह वरीयताएँ बनाने के लिए रहता है। Res / xml में xml:

 <वरीयतास्क्रीन xmlns: android = "http://schemas.android.com/apk/res/android"
         Android: शीर्षक = "@ स्ट्रिंग / सेटिंग्स"
         Android: कुंजी = "स्क्रॉलेबल_सेटिंग्स">
     <ListPreference
             Android: key = "key_speed_scroll"
             Android: शीर्षक = "@ string / settings_scroll_speed_title"
             एंड्रॉइड: सारांश = "@ स्ट्रिंग / सेटिंग्स_सॉल_पेड_सुमरी"
             एंड्रॉइड: प्रविष्टियां = "@ सरणी / गति_से_प्रकाश_नाम"
             Android: entryValues ​​= "@ array / speed_scroll_keyvalues" />
 </ PreferenceScreen>


Strings.xml में जोड़ें

	 <string name = "settings"> Settings </ string>
	 <string name = "settings_scroll_speed_title"> स्क्रॉल गति चुनें </ string>
	 <string name = "settings_scroll_speed_summary"> स्क्रॉलिंग की गति चुनें </ string>


प्राथमिकता स्क्रीन में 7 रेडियोबूटन तत्वों की एक ऊर्ध्वाधर सूची होगी, जिनमें से प्रत्येक का नाम और मूल्य एक संसाधन में संग्रहीत होता है जिसे मान / array.xml कहा जाता है:

  <? xml संस्करण = "1.0" एन्कोडिंग = "utf-8"?>
 <संसाधन xmlns: xliff = "urn: oasis: नाम: tc: xliff: दस्तावेज़: 1.2">
     <string-array name = "speed_scroll_keynames">
         <आइटम> "प्रथम" </ आइटम>
         <आइटम> "दूसरा" </ आइटम>
         <आइटम> "तीसरा" </ आइटम>
         <आइटम> "चौथा" </ आइटम>
         <आइटम> "फिफ़्स" </ आइटम>
         <आइटम> "छठा" </ आइटम>
         <आइटम> "सातवां" </ आइटम>
     </ स्ट्रिंग सरणी>

     <string-array name = "speed_scroll_keyvalues">
         <आइटम> "1" </ आइटम>
         <आइटम> "2" </ आइटम>
         <आइटम> "3" </ आइटम>
         <आइटम> "4" </ आइटम>
         <आइटम> "5" </ आइटम>
         <आइटम> "6" </ आइटम>
         <आइटम> "7" </ आइटम>
     </ स्ट्रिंग सरणी>
 </ संसाधन>


लाइव वॉलपेपर शुरू करने से पहले, एप्लिकेशन नोड्स की सूची में प्रीसेट का एक वर्ग जोड़ें:

4

वॉलपेपर लॉन्च के लिए तैयार है



All Articles