Android
 Computer >> コンピューター >  >> トラブルシューティング >> Android

【Android】ナビゲーションバーのホームキーをアニメーションGIFに変更する方法

Androidコミュニティの才能ある開発者たちが、ナビゲーションバーのホームキーをアニメーションGIFに変更する方法を発見しました。この記事では、その手順を初心者にもわかりやすく詳しく解説していきます。

【Android】ナビゲーションバーのホームキーをアニメーションGIFに変更する方法

注意:この作業はやや複雑です。SystemUI.apkをデコンパイルし、重要なファイルを編集してから再コンパイルし直す必要があります。万が一のトラブルに備えて、必ず事前にSystemUI.apkのバックアップを取っておきましょう!

関連ガイド

  • AndroidシステムUIを手動でテーマ化する方法
  • Android APKをデコンパイルしてテーマ化する方法
  • ストックROMでAPKをDeodexする方法

必要なもの

  • Root化済みのAndroidスマートフォン(当サイトには多数のroot化ガイドがあります)
  • APKデコンパイルツール(APK Easy Toolがおすすめ
  • Notepad++などの高機能コードエディタ

SystemUI.apkのデコンパイル

まず最初に行うのは、SystemUI.apkのdeodex処理です。「Tickle My Android」などのツールを使用すると便利です。deodexの詳細な手順については、当サイトの「ストックROMでAPKをDeodexする方法」のガイドを参照してください。

次にSystemUI.apkをデコンパイルします。初めての方にとっては単体でガイドが必要になるほどの作業ですが、幸い当サイトの「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画像を順番に切り替えて表示することでアニメーションを実現しているためです。幸い、「EZGIF Split」のようなオンライン変換ツールを使えば、誰でも簡単に分割できます。

【Android】ナビゲーションバーのホームキーをアニメーションGIFに変更する方法

EZGIF SplitにGIFをアップロードし、「Split Options」のドロップダウンメニューから「Output images in PNG format(PNG形式で出力)」を選択するだけで、すべてのフレームが順番通りに抽出されます。その後、ZIPファイルとしてまとめてダウンロードしましょう。

【Android】ナビゲーションバーのホームキーをアニメーションGIFに変更する方法

次に、分割したGIFのPNGフレームを、デコンパイルしたSystemUI APKフォルダ内の適切な「drawable-xxxDPI」フォルダに追加します。どのフォルダを使うかは端末のDPIによって異なります。

  • MDPI = 約160 DPI
  • HDPI = 約240 DPI
  • XHDPI = 約320 DPI
  • XXHDPI = 約480 DPI
  • XXXHDPI = 約640 DPI

続いて、Androidにどの画像をアニメーションに使用するか、どの速度で切り替えるかを指示するXMLファイルが必要になります。先ほどダウンロードしたZIPファイルに戻り、「frame_anim.xml」を取り出して、デコンパイルしたAPK内の「res\drawable」フォルダにコピーしてください。

Notepad++で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>

<itemで始まる各行が、順番に表示されるフレームを表しています。GIFを分割して生成されたPNGの枚数に合わせて、行を追加または削除してください。

レイアウトXMLの編集

最後に、SystemUI.apkを再コンパイルする前に、アニメーションをナビゲーションバーに組み込む必要があります。ここが少し厄介なポイントで、レイアウトXMLファイルを編集することになります。ほとんどのストックROMでは、HOMEナビゲーションキーを制御するコードは「layout\navigation_bar.xml」にありますが、ROMによっては「layout\home.xml」に含まれている場合もあります。お使いのROMに合わせて探してみてください。

要するに、以下のようなコードが含まれているレイアウトXMLファイルを探すことになります。

<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" />

home_buttonなどへの参照が含まれる行が見つかれば、正しいXMLファイルにたどり着いています。次にやるべきことは、元のHOMEキーを非表示にし、同じサイズで見えない新しいボタンをその位置に配置し、さらにその下にアニメーションフレームを重ねることです。実はこれはとても簡単で、FrameLayoutのコードを使うだけで実現できます。

<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>

このコードをよく見ると、3つの要素が互いに重ね合わされていることがわかります。しかし、実際に動作させたときに見えるのは、ナビゲーションバーのHOMEキーの位置に表示されるアニメーションGIFだけです。

あとは、HOMEソフトキーの行を上記のFrameLayoutコードに置き換えるだけですが、お使いのROMによっては微調整が必要になる場合があります。多少の試行錯誤は覚悟しておきましょう。

APKの再コンパイルと書き込み

これで、改造済みAPKを再コンパイルする準備が整いました。APK Easy Toolを使ってSystemUI.apkを再コンパイルし、リカバリーモードで端末にフラッシュします。リカバリーモードで作業することが重要なのは、Dalvikキャッシュをワイプする必要があるためです。これを行わないと、追加した新しいsmaliファイルが有効になりません。

すべてがうまくいけば、アニメーションGIFが新しいナビゲーションバーのホームキーとして表示されるはずです!

  1. AndroidスマホをPCのゲームコントローラーとして使う方法

    ```html ゲームはつい夢中になってしまうもの。特に大画面でプレイすると、その魅力は一層増しますよね。しかし、快適にプレイするにはゲームパッド(コントローラー)が欠かせないこともあります。ただ、市販のコントローラーは品質によってはかなり高価で、なかなか手が出せないという方も多いのではないでしょうか。そこでおすすめしたいのが、「お手持ちのAndroidスマホをPCのコントローラーとして使う」という方法です。実は、思っているほど難しくありません。Google Playストアには、Androidをゲーム用コントローラー化できるアプリが数多く存在します。本記事では、その中でも定番の「Mobile

  2. Windows 7のプロダクトキーを使ってWindows 10へアップグレードする方法

    Windows 7は、MicrosoftがリリースしたOSの中でも最も成功した製品の一つであり、後継のWindows 8が登場した後も長期間にわたって愛用され続けました。個人ユーザーから企業ユーザーまで、Windows 7は「フラッグシップOS」として高く評価され、Microsoftがサポート終了を決定した後も多くの環境で使い続けられてきました。しかし、そろそろWindows 7からWindows 10へのアップグレードを検討すべきタイミングです。その理由は数多くあります。 現在、Windows 7は完全にサポート終了の時期を迎えています。Microsoftは2014年にWindows 7の