Selasa, 27 Januari 2015

[Tutor] Statusbar & Navbar Gradient ala Kitkat

Pengen punya gadget kitkat tapi kantong cekak? nih ada solusinya buat yang pengen statusbar & navbar hh jelly bean ente menjadi bergradien ala Kitkat! 

PERSYARATAN : ANDA HARUS TAHU CARA DECOMPILE & COMPILE APK DAN FILES JAR, DAN JUGA MEMODIFIKASI SMALI KODE, DWYOR! (untuk tutor Decompile & compile ada di pos ane sebelumnya) untuk memodifikasinya, bisa menggunakan Notepad++.


Lets Begin....

* hapus yang berwarna warna merah
* tambahkan yang berwarna biru 

Ambil file  android.policy.jar dari System/framework.
systemUI.apk dari system/app.


1
. menambahkan trancluent pada navbar & status bar.

      1. Decompile android.policy.jar \ com \ android \ internal \ policy \ impl \ PhoneWindowManager.smali

Cari : 
.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 dengan : 


     const/4 v0, 0x0

     return v0
.end method

Selesai, Compile.

       2. Decompile SystemUI.apk \ com \ android \ systemui \ statusbar \ phone \ PhoneStatusBar.smali

Cari: 
.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


2. Mengedit Statusbar & Navbar backgrond :

SystemUI.apk \ res \ layout \ navigation_bar.xml
SystemUI.apk \ res \ layout-sw600dp \ navigation_bar.xml
 
Code:
 
android:background="#88000000" 
 
Code:
 
android:background="@drawable/nav_bar_background"
SystemUI.apk \ res \ values \ drawables.xml


Code:
<item type="drawable" name="status_bar_background">#88000000</item>
SystemUI.apk \ res \ layout \ status_bar.xml
Code:
android:background="#FF000000"
Code:
android:background="@drawable/status_bar_background"
3. Gradien status & navbar


buat 2 XML baru :
 
di SystemUI \ res \ drawable

[status_bar_background.xml]
Code:
<?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]
Code:
<?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 ke integers (SystemUI.apk \ res \ values \ integers)
Code:
<integer name="nav_bar_bg_gradient_degrees">90</integer>
<integer name="status_bar_bg_gradient_degrees">90</integer>

SELESAI, Compile kembali. dan taruh kembali jar dan apk yang telah di compile ke foldernya masing masig.

HASILNYA  : 

 Semoga berhasil, Jika masih ada yang bingung silahkan komentar dibawah. Do With Your Own Risk ! Happy Opreking! :D

Sumber : http://forum.xda-developers.com/galaxy-nexus/general/guide-kitkat-gradient-status-nav-bars-t2504373

Tidak ada komentar:

Posting Komentar