Android 커뮤니티의 뛰어난 사람들이 애니메이션 .gif를 홈 키로 사용하도록 탐색 모음을 수정하는 방법을 알아냈고 Appuals에서 이를 수행할 수 있는 가이드를 제공합니다!
경고:이것은 상당히 복잡한 과정입니다. SystemUI.apk를 디컴파일하고 몇 가지 중요한 파일을 엉망으로 만든 다음 다시 함께 다시 컴파일해야 합니다. 문제가 발생할 경우를 대비하여 SystemUI.apk를 백업하세요!
관련 Appuals 가이드:
- Android 시스템 UI를 수동으로 테마 지정하는 방법
- Android APK 디컴파일 및 테마 지정 방법
- 스톡 ROM에서 APK를 해독하는 방법
요구사항:
- 루팅된 Android 휴대전화 (Appuals에는 Android 루트 가이드가 많이 있습니다!)
- APK 디컴파일 도구(권장 APK 쉬운 도구)
- Notepad++와 같은 좋은 코드 편집기
SystemUI.apk 디컴파일
가장 먼저 해야 할 일은 SystemUI.apk를 해독하는 것입니다. 이를 위해 Tickle My Android와 같은 도구를 사용할 수 있습니다. 이 과정에서 APK 해독을 위한 Appuals 가이드를 읽어보세요.
다음 단계는 SystemUI.apk를 디컴파일하는 것입니다. 이전에 해본 적이 없다면 자체적으로 가이드가 필요합니다. 운 좋게도 Appuals에는 디컴파일 지침과 함께 "Android 시스템 UI를 수동으로 테마하는 방법"이 있습니다. APK를 디컴파일한 적이 없습니다.
추가 SMALI 파일
이제 새 smali 파일을 추가해야 합니다. 여기에서 정확히 수행해야 하는 작업에 대해 이미 수정된 .smali 파일 팩이 있습니다. 특히, .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 분할과 같은 온라인 변환기를 사용하면 이 작업을 매우 쉽게 수행할 수 있습니다.
GIF를 EZGIF 분할 도구에 업로드하고 분할 옵션 드롭다운 메뉴에서 "PNG 형식으로 이미지 출력"을 선택하면 모든 프레임이 순차적으로 추출됩니다. 그런 다음 ZIP 파일로 프레임을 함께 다운로드할 수 있습니다.
이제 분할 GIF의 PNG 프레임을 적절한 "drawable-xxxDPI에 추가해야 합니다. ” 디컴파일된 SystemUI apk 폴더에 있습니다. 사용할 폴더는 기기의 DPI에 따라 달라집니다.
- MDPI =~160DPI
- HDPI =~240DPI
- XHDPI =~320DPI
- XXHDPI =~480DPI
- XXXHDPI =~640DPI
이제 애니메이션에 사용할 이미지와 이미지 순환 속도를 Android에 지시하는 XML 파일이 필요합니다. 이전에 다운로드한 ZIP으로 돌아가 "frame_anim.xml"을 가져와서 디컴파일된 APK 내의 "res\drawable" 폴더에 복사합니다.
메모장++에서 frame_anim.xml을 열면 다음과 같아야 합니다.
<?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 파일을 편집할 것이기 때문에 이것은 약간 까다롭습니다. 대부분의 기본 ROM에서 HOME 탐색 모음 소프트키를 제어하는 코드는 "layout\navigation_bar.xml"에서 찾을 수 있지만 "layout\home.xml"에서도 찾을 수 있습니다. ROM에 따라 이를 찾아봐야 합니다.
기본적으로 다음과 같은 코드가 포함된 레이아웃 XML 파일을 찾고 있습니다.
home_button을 참조하는 행을 보면 올바른 XML 파일에 있다는 것을 알 수 있습니다. 또는 유사. 우리가 해야 할 일은 숨기기 입니다. 이 HOME 키를 누르고 그 자리에 같은 크기이지만 보이지 않는 새 키를 넣으면 애니메이션 프레임이 그 아래로 이동합니다. 이것은 실제로 매우 쉽습니다. FrameLayout 만 있으면 됩니다. 코드.
이 코드를 살펴보면 서로 다른 세 가지가 어떻게 쌓여 있는지 알 수 있습니다. 하지만 앱이 실행 중일 때는 앱이 표시되지 않습니다. 탐색 모음에서 HOME 키가 있어야 하는 위치에 애니메이션 GIF만 표시됩니다.
따라서 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 및 플래싱