Saturday, 30 April 2016

Cara Membuat NavBar Dan StatusBar Gradient Di Android

DenysAndroider - Pada kesempatan Kali ini saya akan kasih tutorial yang ane dapet dari xda yaitu "Cara Membuat Nav Bar dan Status Bar Gradient" agar lebih mirip dengan galaxy nexus. ane kasih SS di HH gue OPPO NEO 3 R831K tercinta ane 

Statusbar dan Navbar Gradient
Syarat :
  • HH harus sudah root
  • Mengerti compile dan decompile apk
  • Berani
  • Yang paling penting kemauan yang keras agar bisa berhasil menggunakan tutorial ini
Tutorial :
  • Pergi ke system/framework ambil android.policy.jar
  • Kemudian Decompile
  • Masuk ke folder berikut ini gan android.policy.jar.out\com\android\internal\policy\impl\PhoneWindowManager.smali
  • Cari Line di bawah ini :
.method public getSystemDecorRectLw(Landroid/graphics/Rect;)I
  • Code lengkapnya seperti ini gan lihat text yang warna merah, hapus text berwarna merah ganti dengan text berwana biru
.method public getSystemDecorRectLw(Landroid/graphics/Rect;)I
    .locals 1
    .parameter "systemRect"

    .prologue
    .line 2755
    iget v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mSystemLeft:I

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

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

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

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

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

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

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

    .line 2759
    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 2761
    :goto_0
    return v0

    .line 2760
    :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 2761
    :cond_1
    const/4 v0, 0x0

    goto :goto_0
.end method
  • Ganti ini gan

     const/4 v0, 0x0

     return v0
.end method
  • Finish kemudian compile
Kemudian Editing SystemUI :
  • Ambil SystemUI.apk dari hh anda system/app
  • Kemudian Decompile
  • Kemudian masuk sini gan SystemUI\com\android\systemui\statusbar\phone\PhoneStatusBar.smali
  • Lihat dan cari code berikut ini hapus text berwarna merah tambahkan text berwarna biru
.method private getNavigationBarLayoutParams()Landroid/view/WindowManager$LayoutParams;
    .locals 6

    .prologue
    const/4 v1, -0x1

    .line 792
    new-instance v0, Landroid/view/WindowManager$LayoutParams;

    const/16 v3, 0x7e3

    const v4, 0x840068

    const/4 v5, -0x3

    move v2, v1

    move v5, v1

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

    .line 803
    invoke-static {}, Landroid/app/ActivityManager;->isHighEndGfx()Z

    move-result v1

    if-eqz v1, :cond_0

    .line 804
    iget v1, v0, Landroid/view/WindowManager$LayoutParams;->flags:I

    const/high16 v2, 0x100

    or-int/2addr v1, v2

    iput v1, v0, Landroid/view/WindowManager$LayoutParams;->flags:I

    .line 807
    :cond_0
    const-string v1, "NavigationBar"

    invoke-virtual {v0, v1}, Landroid/view/WindowManager$LayoutParams;->setTitle(Ljava/lang/CharSequence;)V

    .line 808
    const/4 v1, 0x0

    iput v1, v0, Landroid/view/WindowManager$LayoutParams;->windowAnimations:I

    .line 809
    return-object v0
.end method
  • Kemudian masuk sini gan SystemUI\res\layout\navigation_bar.xml dan
    SystemUI.apk\res\layout-sw600dp\navigation_bar.xml
  • Kemudian ganti text berwarna merah deng text warna biru lihat code ini gan
android:background="#88000000"
android:background="@drawable/nav_bar_background"
  • Masuk sini gan SystemUI\res\values\drawables.xml hapus line berikut
<item type="drawable" name="status_bar_background">#88000000</item>
  • Masuk SystemUI\res\layout\status_bar.xml Hapus text berwarna merah ganti dengan text berwarna biru
android:background="#FF000000"
android:background="@drawable/status_bar_background"
  • Tambahkan 2 xml bari di SystemUI\res\drawable
    • [status_bar_background.xml]
<?xml version="1.0" encoding="utf-8"?>
<shape
  xmlns:android="http://schemas.android.com/apk/res/android">
    <gradient android:startColor="#00000000" android:endColor="#99000000" android:angle="@integer/status_bar_bg_gradient_degrees" name="status_bar_background" />
</shape>
    • [nav_bar_background.xml]
<?xml version="1.0" encoding="utf-8"?>
<shape
  xmlns:android="http://schemas.android.com/apk/res/android">
    <gradient android:startColor="#cc000000" android:endColor="#00000000" android:angle="@integer/nav_bar_bg_gradient_degrees" name="nav_bar_background" />
</shape>
  • Tambahkan script di bawah ini SystemUI\res\values\integers
<integer name="nav_bar_bg_gradient_degrees">90</integer>
<integer name="status_bar_bg_gradient_degrees">90</integer>
  • Edit seperti text berwarna biru harus sama seperti text warna biru ya gan SystemUI\res\drawable\status_bar_recents_background
<?xml version="1.0" encoding="utf-8"?>
<shape
  xmlns:android="http://schemas.android.com/apk/res/android">
    <gradient android:startColor="#0d000000" android:endColor="#00000000" android:angle="@integer/status_bar_recents_bg_gradient_degrees" name="status_bar_recents_background" />
</shape>
  • Jika sudah Compile
  • Finish
Step Push System :
  • Push android.policy.jar yang sudah di edit tadi ke dalam system/framework
  • Push SystemUI yang sudah di edit tadi ke system/app
  • Reboot
  • Finish
Oh iya satu lagi lupa ane cara aktifin navbarnya :
  • Edit build.prop dan tambahkan qemu.hw.mainkeys=0 di paling bawah sendiri
  • Jika sudah ada tulisan qemu.hw.mainkeys=1 di build.propnya. tinggal ganti aja menjadi qemu.hw.mainkeys=0
Tutorial yang sangat mudah bukan mengenai "Cara Membuat Nav Bar dan Status Bar Gradient" Semoga tutorial ini bermanfaat gan jika ada kurang lebihnya saya minta maaf karena disini ane jg masih belajar seperti agan agan semua

Do With Your Own Risk

Thanks to : XDA


EmoticonEmoticon