एंड्रॉइड समुदाय के कुछ शानदार दिमागों ने पता लगाया कि अपने नेवबार को संशोधित करके एनिमेटेड .gif को अपने होम की के रूप में कैसे उपयोग किया जाए, और Appuals के पास इसे करने का गाइड है!

चेतावनी: यह एक काफी जटिल प्रक्रिया है। आपको अपने SystemUI.apk को डीकंपाइल करना होगा, कुछ महत्वपूर्ण फाइलों के साथ छेड़छाड़ करनी होगी, और इसे वापस रीकंपाइल करना होगा। कुछ गलत होने की स्थिति में अपने SystemUI.apk का बैकअप बना लें!
संबंधित Appuals गाइड:
- Android System UI को मैन्युअली थीम कैसे करें
- Android APKs को डीकंपाइल और थीम कैसे करें
- स्टॉक ROMs पर अपने APKs को Deodex कैसे करें
आवश्यकताएं:
- एक रूटेड एंड्रॉइड फोन (Appuals के पास बहुत सारे एंड्रॉइड रूट गाइड हैं!)
- एक APK डीकंपाइलिंग टूल (हम अनुशंसा करते हैं APK Easy Tool)
- Notepad++ जैसा एक अच्छा कोड एडिटर
अपने SystemUI.apk को डीकंपाइल करना
पहली चीज जो आपको करने की आवश्यकता है वह है अपने SystemUI.apk को deodex करना - आप इसके लिए Tickle My Android जैसे टूल का उपयोग कर सकते हैं। इस प्रक्रिया पर Appuals गाइड पढ़ें।
अगला चरण SystemUI.apk को डीकंपाइल करना है, जो अपने आप में एक गाइड की आवश्यकता रखता है यदि आपने इसे पहले कभी नहीं किया है - सौभाग्य से, Appuals के पास "How to Manually Theme Android System UI" है जिसमें डीकंपाइलिंग निर्देश हैं, इसलिए यदि आपने पहले कभी APK डीकंपाइल नहीं किया है तो इसे पढ़ें।
SMALI फाइलें जोड़ना
अब आपको नई smali फ़ाइलें जोड़ने की आवश्यकता है - ठीक वही जो हमें करने की आवश्यकता है, उसके लिए पहले से संशोधित .smali फ़ाइलों का एक पैक HERE उपलब्ध है। विशेष रूप से, आपको .zip से "SelfAnimatingImageView.smali" फ़ाइल निकालने की आवश्यकता है, और इसे अपने डीकंपाइल्ड APK में डायरेक्टरी में जोड़ें:
SystemUI.apk\smali\com\android\morningstar\
यदि ये फोल्डर मौजूद नहीं हैं तो आपको इन्हें बनाने की आवश्यकता होगी।
GIF को फ्रेम में विभाजित करना
अब आपको एक एनिमेटेड .gif ढूंढना होगा जो आपको पसंद हो और जिसे आप अपने नेवबार होम बटन के रूप में उपयोग करना चाहते हैं। आपको एक स्टिकर gif का उपयोग करना चाहिए, जैसे आप Giphy.com/stickers पर पा सकते हैं - आप देखेंगे कि उनके पास PNG की तरह पारदर्शी पृष्ठभूमि होती है, लेकिन वे वास्तव में GIF हैं।
एक बार जब आप एक स्टिकर GIF सेव कर लेते हैं जो आपको पसंद है, तो आपको इसे PNG की एक श्रृंखला में बदलने की आवश्यकता है। ऐसा इसलिए है क्योंकि हमारा संशोधित SystemUI वास्तव में एक नेटिव .gif फ़ाइल नहीं चलाएगा, यह क्रमिक क्रम में PNG चलाएगा। इसलिए हमें .gif को क्रमिक PNG में विभाजित करने की आवश्यकता है, सौभाग्य से हम EZGIF Split जैसे ऑनलाइन कनवर्टर के साथ इसे बहुत आसानी से कर सकते हैं।

बस अपने GIF को EZGIF Split टूल पर अपलोड करें, स्प्लिट विकल्प ड्रॉपडाउन मेनू से "Output images in PNG format" चुनें, और यह सभी फ्रेम को क्रमिक क्रम में निकाल देगा। फिर आप फ्रेम को एक साथ ZIP फ़ाइल में डाउनलोड कर सकते हैं।

अब आपको विभाजित GIF से PNG फ्रेम को अपने डीकंपाइल्ड SystemUI apk फोल्डर में उपयुक्त "drawable-xxxDPI" फोल्डर में जोड़ने की आवश्यकता है। आप जिस फोल्डर का उपयोग करेंगे वह आपके डिवाइस के DPI पर निर्भर करता है, इसलिए:
- MDPI = ~160 DPI
- HDPI = ~240 DPI
- XHDPI = ~320 DPI
- XXHDPI = ~480 DPI
- XXXHDPI = ~640 DPI
अब हमें एक XML फ़ाइल की आवश्यकता है जो एंड्रॉइड को निर्देश दे कि एनीमेशन के लिए किन छवियों का उपयोग करना है, और कितनी तेजी से उनके माध्यम से साइकिल चलाना है। आपके द्वारा पहले डाउनलोड किए गए ZIP पर वापस जाएं और "frame_anim.xml" लें, और इसे डीकंपाइल्ड APK के अंदर "res\drawable" फोल्डर में कॉपी करें।
यदि आप frame_anim.xml को Notepad++ में खोलते हैं, तो यह इस तरह दिखना चाहिए:
<?xml version="1.0" encoding="utf-8"?> <animation-list android:oneshot="false" xmlns:android="https://schemas.android.com/apk/res/android"> <item android:duration="100" android:drawable="@drawable/frame_0" /> <item android:duration="100" android:drawable="@drawable/frame_1" /> <item android:duration="100" android:drawable="@drawable/frame_2" /> <item android:duration="100" android:drawable="@drawable/frame_3" /> </animation-list>
और अंत में, इससे पहले कि हम SystemUI.apk को रीकंपाइल कर सकें, हमें अपने एनीमेशन को नेवबार पर रखने की आवश्यकता है। यह थोड़ा मुश्किल है, क्योंकि हम लेआउट XML फ़ाइल को संपादित करेंगे। अधिकांश स्टॉक ROMs में, HOME नेवबार सॉफ्टकी को नियंत्रित करने वाला कोड "layout\navigation_bar.xml" में पाया जा सकता है, लेकिन यह "layout\home.xml" में भी पाया जा सकता है। आपको इसके लिए खोज करने की आवश्यकता होगी, आपके ROM के आधार पर। मूल रूप से, आप उस लेआउट XML फ़ाइल की तलाश कर रहे हैं जिसमें निम्न जैसा कोड हो: आपको पता चल जाएगा कि आप सही XML फ़ाइल में हैं जब आप home_button या समान का संदर्भ देने वाली लाइनें देखते हैं। हमें जो करने की आवश्यकता है वह है इस HOME की को छिपाना, और इसकी जगह एक नया रखना जो समान आकार का हो, लेकिन अदृश्य हो, और फिर हमारे एनिमेटेड फ्रेम इसके नीचे जाएंगे। यह वास्तव में काफी आसान है, हमें बस एक FrameLayout कोड की आवश्यकता है. यदि आप इस कोड की जांच करते हैं, तो आप देखेंगे कि हमारे पास एक दूसरे के ऊपर तीन अलग-अलग चीजें स्टैक हैं। लेकिन जब ऐप चल रहा होता है, तो आप इसे नहीं देखेंगे - आप बस अपने एनिमेटेड GIF को देखेंगे जहां नेवबार पर HOME की होनी चाहिए। तो आपको बस इतना करना है कि HOME सॉफ्टकी लाइन ऑफ कोड को ऊपर दिए गए FrameLayout कोड से बदल दें, लेकिन आपको इसे अपने विशेष ROM के लिए थोड़ा 조정 करने की आवश्यकता हो सकती है। यहां थोड़ा सा ट्रायल और एरर आवश्यक है। अब हम मॉडेड APK को रीकंपाइल करने के लिए तैयार हैं। बस APK Easy Tool का उपयोग करके SystemUI.apk को रीकंपाइल करें, और इसे रिकवरी मोड में अपने डिवाइस पर फ्लैश करें। इसे रिकवरी मोड में करना महत्वपूर्ण है, क्योंकि आपको Dalvik कैश को पोंछने की आवश्यकता है अन्यथा हमने जो नई smali फ़ाइलें जोड़ी हैं वे सक्रिय नहीं होंगी। यदि सब कुछ ठीक हो जाता है, तो आपको अपना एनिमेटेड GIF अपने नए नेवबार होम की के रूप में दिखाई देना चाहिए!<com.android.systemui.statusbar.policy.KeyButtonView android:layout_gravity="center" android:id="@id/home_button" android:layout_width="0.0dip" android:layout_height="0.0dip" android:scaleType="center" android:contentDescription="@string/accessibility_home" systemui:keyCode="3" />
<FrameLayout android:layout_width="@dimen/navigation_key_width" android:layout_height="fill_parent"> <com.android.systemui.statusbar.policy.KeyButtonView android:layout_gravity="center" android:layout_width="@dimen/navigation_key_width" android:layout_height="fill_parent" android:src="@drawable/transparent" android:scaleType="center" android:contentDescription="@string/accessibility_home" systemui:keyCode="3" /> <com.android.systemui.statusbar.policy.KeyButtonView android:layout_gravity="center" android:id="@id/home_button" android:layout_width="0.0dip" android:layout_height="0.0dip" android:scaleType="center" android:contentDescription="@string/accessibility_home" systemui:keyCode="3" /> <com.android.systemui.morningstar.SelfAnimatingImageView android:layout_gravity="center" android:id="@+id/frame_animation" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/frame_anim" /> </FrameLayout>
APK को रीकंपाइल करना और फ्लैश करना