Friday, July 19, 2013

Membuat Transparan Status Bar pada Jelly Bean

Pengen layar android kamu kelihatan keren seperti Samsung Galaxy S4, dengan status bar transparan. Ternyata caranya tidak terlalu sulit. Hanya sedikit editing pada xml dan smali. Tapi sebelum saya melanjutkan, saya ingin anda sudah memenuhi persyaratan untuk editing file APK. Jika anda belum mengerti tentang decompile dan recompile, sebaiknya pelajari dulu kedua hal itu.


Ok... kita lanjutkan.

Langkah-langkah :

Decompile android.policy.jar and open android.policy\smali\com\android\internal\policy\i mpl\PhoneWindowManager.smali

Blue - text untuk acuan pencarian
Red - hapus
Green - tambahkan

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

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

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

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

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

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

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

    if-eqz v0, :cond_0

    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 2557
    :goto_0
    return v0

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

    if-eqz v0, :cond_1

    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_0

    .line 2557
    :cond_1
    const/4 v0, 0x0

    goto :goto_0
    const/4 v0, 0x0

    return v0
.end method

Compile android.policy.jar dan masukan kembali ke /system/framework pada Android.

Decompile SystemUI.apk dan...
Edit \SystemUI\res\values\drawables.xml

<item type="drawable" name="status_bar_background">#5a000000</item>

#5a000000 untuk 80% atau #00000000 untuk 100% transparan.

Buka \SystemUI\res\layout\navigation_bar.xml and lakukan hal yang sama.

<item type="drawable" name="status_bar_background">#5a000000</item>

Buka SystemUI\smali\com\android\systemui\statusbar\phon e\PhoneStatusBar.smali dan cari "IIIII", hapus teks berwarna merah dan tambahkan yang berwarna hijau .

const/16 v3, 0x7e3

 const v4, 0x4800068

 const/4 v5, -0x3

 move v2, v1

 move v5, v1

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

Kemudian cari "showNav" atau "mPixelFormat:I" lalu rubah menjadi seperti warna hijau.

.line 417
 .end local v3 #showNav:Z
 :cond_1
 :goto_2
 const/4 v5, -0x3 (or const/4 v9, -0x3 for Z)

 iput v13, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mPixelFormat:I

Lalu compile SystemUI dan masukan kembali ke dalam system.

Contoh hasil :

Untuk mengetahui lebih lanjut silahkan kunjungi thread aslinya di :
http://forum.xda-developers.com/showthread.php?t=2262268

Untuk belajar compile dan recompile :
http://forum.xda-developers.com/showthread.php?t=1809649

Selamat Mencoba!!!


EmoticonEmoticon