忍者ブログ
androplus.orgへ移転しました。
数秒後に移動します。

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


ステータスバーとナビバーの透過

参考:xda
ステータスバーとナビゲーションバーを透過します。

上の画像ではステータスバーが#7f000000、ナビバーが#00000000になっています。

以下の行数はエディタなど環境により変わる可能性があります。
android.policy.jarをデコンパイルし、
android.policysmalicomandroidinternalpolicyimplPhoneWindowManager.smali
を開き、
    .line 2648
    iget v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mSystemTop:I

    iput v0, p1, Landroid/graphics/Rect;->top:I

    .line 2649
    iget v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mSystemRight:I

    iput v0, p1, Landroid/graphics/Rect;->right:I

    .line 2650
    iget v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mSystemBottom:I

    iput v0, p1, Landroid/graphics/Rect;->bottom:I
の下にある8082行目以降、
.line 2651
    iget-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mStatusBar:Landroid/view/WindowManagerPolicy$WindowState;

    if-eqz v0, :cond_1b

    iget-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mStatusBar:Landroid/view/WindowManagerPolicy$WindowState;

    invoke-interface {v0}, Landroid/view/WindowManagerPolicy$WindowState;->getSurfaceLayer()I

    move-result v0

    .line 2653
    :goto_1a
    return v0

    .line 2652
    :cond_1b
    iget-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mNavigationBar:Landroid/view/WindowManagerPolicy$WindowState;

    if-eqz v0, :cond_26

    iget-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mNavigationBar:Landroid/view/WindowManagerPolicy$WindowState;

    invoke-interface {v0}, Landroid/view/WindowManagerPolicy$WindowState;->getSurfaceLayer()I

    move-result v0

    goto :goto_1a

    .line 2653
    :cond_26
    const/4 v0, 0x0

    goto :goto_1a
を削除します。
.end methodの上に
    const/4 v0, 0x0

    return v0
を追加して、保存してandroid.policy.jarをコンパイルします。
(deodexされていない場合はdexopt-wrapperでodexに変換)

次に透過度を指定します。
SystemUI es aluesdrawables.xml
を開き、
<item type="drawable" name="status_bar_background">#5a000000</item>
と書き換えます。

SystemUI eslayout
avigation_bar.xml
を開き
android:id="@id/nav_background" android:background="#ff000000"を
android:id="@id/nav_background" android:background="#5a000000"
にします。

SystemUIsmalicomandroidsystemuistatusbarphonePhoneStatusBar.smali
を開いて「IIIII」を検索します。(参考:891行目)
    const/16 v3, 0x7e3

    const v4, 0x800068

    move v2, v1

    move v5, v1

    invoke-direct/range {v0 .. v5}, Landroid/view/WindowManager$LayoutParams;-><init>(IIIII)V
    const/16 v3, 0x7e3

    const v4, 0x800068

    const/4 v5, -0x3

    move v2, v1

    invoke-direct/range {v0 .. v5}, Landroid/view/WindowManager$LayoutParams;-><init>(IIIII)V
にします。

続けて「mPixelFormat:I」を検索します。(参考:5608行目)
    .line 441
    :cond_1
    :goto_4
    iput v8, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mPixelFormat:I
    .line 441
    :cond_1
    :goto_4
    const/4 v5, -0x3
    iput v8, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mPixelFormat:I
にします。

全て保存した後SystemUI.apkをコンパイルし、
SystemUI.apkとandroid.policy.jar(またはandroid.policy.odex)を端末にコピーし、
deodexされている場合はSystemUI..odexとandroid.policy.odexを削除(または名前の変更)してください。

※Xperia Launcherなど一部のホームアプリではうまく透過されないようです。

333用ファイルはここからダウンロードできます。
SystemUI.apkとandroid.policy.odexを置き換えます。SystemUI.odexの削除は自分でしてください。
(SystemUI.apkは自分用に編集してあるので注意してください)

Copyright ©  -- Legacy AndroPlus --  All Rights Reserved
PR
忍者ブログ / [PR]