Một số bộ óc xuất chúng trong cộng đồng Android đã tìm ra cách sửa đổi thanh điều hướng của bạn để sử dụng .gif động làm phím chủ của bạn và Appuals có hướng dẫn để làm điều đó!
Cảnh báo: Đây là một quá trình khá liên quan. Bạn cần phải dịch ngược SystemUI.apk của mình, xáo trộn một số tệp quan trọng và biên dịch lại chúng lại với nhau. Tạo bản sao lưu SystemUI.apk của bạn trong trường hợp xảy ra sự cố!
Hướng dẫn về Ứng dụng có Liên quan:
- Cách tạo chủ đề cho giao diện người dùng hệ thống Android theo cách thủ công
- Cách biên dịch và chủ đề APK Android
- Cách Deodex APK của bạn trên ROM Stock
Yêu cầu:
- Điện thoại Android đã root (Các ứng dụng có nhiều hướng dẫn root Android!)
- Một công cụ dịch ngược APK ( chúng tôi khuyên bạn nên sử dụng APK Easy Tool)
- Một trình soạn thảo mã tốt như Notepad ++
Giải mã SystemUI.apk của bạn
Điều đầu tiên bạn cần làm là deodex SystemUI.apk của bạn - bạn có thể sử dụng một công cụ như Tickle My Android cho việc này. Đọc Hướng dẫn sử dụng cho các APK giải mã trong quá trình này.
Bước tiếp theo là dịch ngược SystemUI.apk, việc này cần có hướng dẫn nếu bạn chưa từng làm trước đây - may mắn thay, Appuals có “Cách làm chủ đề theo cách thủ công giao diện người dùng hệ thống Android” với hướng dẫn dịch ngược, vì vậy hãy đọc nếu bạn 'đã không bao giờ dịch ngược một APK trước đây.
Thêm the Tệp SMALI
Bây giờ bạn cần thêm các tệp smali mới - có một gói tệp .smali đã được sửa đổi cho chính xác những gì chúng tôi cần thực hiện tại ĐÂY. Cụ thể, bạn cần giải nén tệp “SelfAnimatingImageView.smali” từ tệp .zip và thêm tệp đó vào APK đã dịch ngược của bạn trong thư mục:
SystemUI.apk\smali\com\android\morningstar\
Bạn sẽ cần tạo các thư mục này nếu chúng không tồn tại.
Tách GIF thành các khung
Bây giờ bạn cần tìm một .gif động mà bạn thích và muốn sử dụng làm nút trang chủ điều hướng. Bạn nên sử dụng gif hình dán như bạn có thể tìm thấy trên Giphy.com/stickers - bạn sẽ nhận thấy chúng có nền trong suốt như PNG, nhưng thực tế chúng là GIF.
Sau khi lưu GIF nhãn dán mà bạn thích, bạn cần chuyển đổi nó thành một loạt các PNG. Điều này là do SystemUI đã sửa đổi của chúng tôi sẽ không thực sự chạy tệp .gif gốc, nó sẽ phát các tệp PNG theo thứ tự tuần tự. Vì vậy, chúng tôi cần phải chia .gif thành các tệp PNG liên tiếp, may mắn là chúng tôi có thể rất dễ dàng thực hiện việc này với một công cụ chuyển đổi trực tuyến như EZGIF Split.
Chỉ cần tải tệp GIF của bạn lên công cụ Chia tách EZGIF, chọn “Đầu ra hình ảnh ở định dạng PNG” từ menu thả xuống Tùy chọn phân tách và nó sẽ trích xuất tất cả các khung theo thứ tự tuần tự. Sau đó, bạn có thể tải xuống các khung cùng nhau trong một tệp ZIP.
Bây giờ, bạn cần thêm các khung PNG từ GIF đã tách thành “ drawable-xxxDPI thích hợp của mình ”Trong thư mục apk SystemUI đã được dịch ngược của bạn. Thư mục bạn sẽ sử dụng phụ thuộc vào DPI của thiết bị của bạn, vì vậy:
- MDPI =~ 160 DPI
- HDPI =~ 240 DPI
- XHDPI =~ 320 DPI
- XXHDPI =~ 480 DPI
- XXXHDPI =~ 640 DPI
Bây giờ chúng ta cần một tệp XML hướng dẫn Android sử dụng hình ảnh nào cho hoạt ảnh và tốc độ chuyển qua chúng. Quay lại tệp ZIP bạn đã tải xuống trước đó và lấy “frame_anim.xml” và sao chép nó vào thư mục “res \ drawable” bên trong APK đã dịch ngược.
Nếu bạn mở frame_anim.xml trong Notepad ++, nó sẽ giống như sau:
<?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>
Mỗi dòng bắt đầu bằng
Và cuối cùng, trước khi có thể biên dịch lại SystemUI.apk, chúng ta cần đưa hoạt ảnh của mình lên thanh điều hướng. Điều này hơi phức tạp vì chúng tôi sẽ chỉnh sửa tệp XML bố cục. Trong hầu hết các ROM có sẵn, mã điều khiển phím chức năng thanh điều hướng HOME có thể được tìm thấy trong “layout \ navigation_bar.xml”, nhưng nó cũng có thể được tìm thấy trong “layout \ home.xml”. Bạn cần phải tìm kiếm điều này, tùy thuộc vào ROM của bạn.
Về cơ bản, bạn đang tìm kiếm bất kỳ tệp XML bố cục nào chứa mã trông giống như sau:
Bạn sẽ biết mình đang ở đúng tệp XML khi bạn nhìn thấy các dòng tham chiếu đến home_button hoặc tương tự. Những gì chúng ta cần làm là ẩn phím HOME này và đặt một cái mới vào vị trí của nó sẽ có cùng kích thước, nhưng ẩn và sau đó các khung hoạt hình của chúng ta sẽ nằm bên dưới nó. Điều này thực sự khá dễ dàng, tất cả những gì chúng ta cần là FrameLayout mã .
Nếu bạn kiểm tra mã này, bạn sẽ thấy cách chúng ta có ba thứ khác nhau xếp chồng lên nhau. Nhưng khi ứng dụng đang chạy, bạn sẽ không nhìn thấy nó - tất cả những gì bạn sẽ thấy là GIF động của bạn, nơi phím HOME sẽ nằm trên thanh điều hướng.
Vì vậy, tất cả những gì bạn cần làm là thay thế dòng mã phím chức năng HOME bằng mã FrameLayout ở trên, nhưng bạn có thể cần phải tinh chỉnh nó cho ROM cụ thể của mình. Một chút thử và sai là cần thiết ở đây.
Bây giờ chúng tôi đã sẵn sàng biên dịch lại APK đã sửa đổi. Chỉ cần sử dụng APK Easy Tool để biên dịch lại SystemUI.apk và flash nó ở chế độ khôi phục trên thiết bị của bạn. Điều quan trọng là thực hiện điều này ở chế độ khôi phục, vì bạn cần xóa bộ nhớ cache Dalvik, nếu không các tệp smali mới mà chúng tôi đã thêm sẽ không được kích hoạt.
Nếu mọi thứ diễn ra tốt đẹp, bạn sẽ thấy GIF động của mình làm phím trang chủ thanh điều hướng mới! <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>
Biên dịch lại APK và nhấp nháy nó