FORUMS

Google No Longer Sending Calendar SMS Notifications

In a not entirely surprising move, Google announced that it’s putting an … more

Enable Multi-Window Mode on M Developer Preview

What was not mentioned in yeterday’s keynote was Android M’s multi-window … more

I/O Summary: Google Cardboard Virtual Reality

One year ago, Google introduced cardboard. Amazingly enough, that was all it took to fire … more

Android M Preview Images – XDA TV

Android M preview images are available. That and much more news is covered by Jordan when he … more

[GUIDE][AOSP][4.1+] KitKat Gradient Status & Nav Bars

Thanks Meter: 1,937
 
By ATTACK, Recognized Themer on 30th October 2013, 04:45 PM
Post Reply Subscribe to Thread Email Thread
I've been asked several times to post a guide on how I created the gradient status and nav bar mod [LINK]. So here it is!...
...And if you use this mod in you're work please give proper credit - Thanks!


-------------------------------------------------------------------------------------------------------------------------------
TOOLS:
-------------------------------------------------------------------------------------------------------------------------------
NotePad++
> http://notepad-plus-plus.org/download/v6.7.4.html

Apktool
> new: https://bitbucket.org/iBotPeaches/apktool/downloads
> old: https://code.google.com/p/android-ap...downloads/list

Smali/Baksmali
> https://bitbucket.org/JesusFreke/smali/downloads

Commands:
De-compiling Apk's:
Code:
apktool d >NAME OF APK<.apk
Re-compiling:
Code:
apktool b >NAME OF APK<
De-compiling Jar's:
Code:
java -jar baksmali.jar -x >NAME OF JAR< -o classout
Re-compiling Jar's:
Code:
java -Xmx512M -jar smali.jar classout/ -o new-classes.dex


-------------------------------------------------------------------------------------------------------------------------------
LETS BEGIN:
-------------------------------------------------------------------------------------------------------------------------------
DELETE: RED CODE
ADD: BLUE CODE


-------------------------------------------------------------------------------------------------------------------------------
Adding translucency to the status & nav bars.
-------------------------------------------------------------------------------------------------------------------------------
This will enabled the status and navigation bar to be translucent - independently of each other.
Meaning you could set the status bar to 20% and the navigation bar to 75%.

-------------
STEP 1:
-------------

Decompile:
Code:
android.policy.jar
Navigate to:
Code:
> com > android > internal > policy > impl > PhoneWindowManager.smali
Look for this line:
Code:
.method public getSystemDecorRectLw(Landroid/graphics/Rect;)I
Edit the following code:
Code:
.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
Replace it with:

Code:

     const/4 v0, 0x0

     return v0
.end method
-----------------------
SAVE & DONE
-----------------------
-------------------------------------------------------------------------------------------------------------------------------
Finished - now compile.
-------------------------------------------------------------------------------------------------------------------------------

-------------
STEP 2:
-------------

Decompile:
Code:
SystemUI.apk
Navigate to:
Code:
> com > android > systemui > statusbar > phone > PhoneStatusBar.smali
Look for:
Code:
.method private getNavigationBarLayoutParams()Landroid/view/WindowManager$LayoutParams;
Edit the following code:
Code:
.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
-----------------------
SAVE & DONE
-----------------------
-------------------------------------------------------------------------------------------------------------------------------
Finished - Do not compile - move to next step
-------------------------------------------------------------------------------------------------------------------------------



-------------------------------------------------------------------------------------------------------------------------------
Editing Status bar & Navigation bar background
-------------------------------------------------------------------------------------------------------------------------------
-------------
STEP 1:
-------------

Navigate to both:
Code:
SystemUI.apk > res > layout > navigation_bar.xml
And:
Code:
SystemUI.apk > res > layout-sw600dp > navigation_bar.xml
Change the following in both xml's:
Code:
android:background="#88000000"
Code:
android:background="@drawable/nav_bar_background"
-----------------------
SAVE & DONE
-----------------------

Navigate to:
Code:
SystemUI.apk > res > layout > status_bar.xml
Change the following:
Code:
android:background="#FF000000"
Code:
android:background="@drawable/status_bar_background"
-----------------------
SAVE & DONE
-----------------------
Navigate to:
Code:
SystemUI.apk > res > values > drawables.xml
And delete:
Code:
<item type="drawable" name="status_bar_background">#88000000</item>
-----------------------
SAVE & DONE
-----------------------
-------------------------------------------------------------------------------------------------------------------------------
Finished - Do not compile - move to next step
-------------------------------------------------------------------------------------------------------------------------------


-------------------------------------------------------------------------------------------------------------------------------
Gradient Status & Navigation Bar
-------------------------------------------------------------------------------------------------------------------------------
  • startCOLOR = BOTTOM
  • endCOLOR = TOP

-------------
STEP 1:
-------------

Create 2 new XML's:

First xml:

Name it:
Code:
status_bar_background.xml
Add to it:
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>
-----------------------
SAVE & DONE
-----------------------

Second xml

Name it:
Code:
nav_bar_background.xml
Add to it:
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>
-----------------------
SAVE & DONE
-----------------------

Now place both xml's in:
Code:
SystemUI.apk > res > drawable
-----------------------
DONE
-----------------------

-------------
STEP 2:
-------------

Navigate to:
Code:
SystemUI.apk > res > values > integers
Add to the bottom:
Code:
<integer name="nav_bar_bg_gradient_degrees">90</integer>
<integer name="status_bar_bg_gradient_degrees">90</integer>
-----------------------
SAVE & DONE
-----------------------

-------------------------------------------------------------------------------------------------------------------------------
Finished - Do not compile - move to next step
-------------------------------------------------------------------------------------------------------------------------------


-------------------------------------------------------------------------------------------------------------------------------
Adjusting the background gradient for the recents menu
-------------------------------------------------------------------------------------------------------------------------------
I went with 5% ~ 0% - but you can add whatever values you wish.
Hex code list below.

Navigate to:
Code:
SystemUI.apk > res > drawable > status_bar_recents_background
Add:
Code:
<?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>
-----------------------
SAVE & DONE
-----------------------
-------------------------------------------------------------------------------------------------------------------------------
Finished - Now compile - flash - and Enjoy!
-------------------------------------------------------------------------------------------------------------------------------



-------------------------------------------------------------------------------------------------------------------------------
Hex Opacity Values:
-------------------------------------------------------------------------------------------------------------------------------
Code:
100%  FF

95%  F2

90%  E6

85%  D9

80%  CC

75%  BF

70%  B3

65%  A6

60%  99

55%  8C

50%  80

45%  73

40%  66

35%  59

30%  4D

25%  40

20%  33

15%  26

10%  1A

5%  0D

0%  00


-------------------------------------------------------------------------------------------------------------------------------
Known Issues:
-------------------------------------------------------------------------------------------------------------------------------
Code:
*White backgrounds causes the status bar to become white (System Wide)
*Lockscreen tint needs to be adjusted to match gradient.
-------------------------------------------------------------------------------------------------------------------------------
End Result:
-------------------------------------------------------------------------------------------------------------------------------

Attached Files
File Type: rar White Status Icons.rar - [Click for QR Code] (27.5 KB, 3383 views)
File Type: rar [HDPI] White Status Icons.rar - [Click for QR Code] (37.2 KB, 3249 views)
File Type: rar White Status Icons.rar - [Click for QR Code] (27.5 KB, 3383 views)
File Type: rar [HDPI] White Status Icons.rar - [Click for QR Code] (37.2 KB, 3249 views)
Last edited by ATTACK; 24th January 2015 at 12:57 AM. Reason: Cleaning up...
The Following 76 Users Say Thank You to ATTACK For This Useful Post: [ View ]
 
 
30th October 2013, 04:47 PM |#2  
ATTACK's Avatar
OP Recognized Themer
Thanks Meter: 1,937
 
More
>>REMOVING LOCKSCREEN TINT GUIDE: Thanks to @Koloses

>>WHITE STATUS BAR CLOCK GUIDE
Last edited by ATTACK; 20th July 2014 at 10:08 PM.
The Following 8 Users Say Thank You to ATTACK For This Useful Post: [ View ]
EnricoD
1st November 2013, 02:08 PM |#3  
Guest
Thanks Meter: 0
 
More
Sorry.. last part of the guide

"At this point you may want to adjust the background gradient for the recents background. I went with 5% ~ 0%

SystemUI \ res \ drawable \ nav_bar_recents_background"

Shoud be nav_bar_background.xml not nav_bar_recents_background
The Following 5 Users Say Thank You to For This Useful Post: [ View ]
1st November 2013, 03:07 PM |#4  
Senior Member
Thanks Meter: 234
 
More
Can you show a screenshot with the launcher open? I want to see how your mod deals with changes in the status bar and nav bar. Previous mods failed at this. Either everything gets white out or system UI crashes constantly.

TIA
2nd November 2013, 12:34 AM |#5  
ATTACK's Avatar
OP Recognized Themer
Thanks Meter: 1,937
 
More
Quote:
Originally Posted by enricocid

Sorry.. last part of the guide

"At this point you may want to adjust the background gradient for the recents background. I went with 5% ~ 0%

SystemUI \ res \ drawable \ nav_bar_recents_background"

Shoud be nav_bar_background.xml not nav_bar_recents_background

FIXED... It's actually SystemUI \ res \ drawable \ status_bar_recents_background.
The Following 4 Users Say Thank You to ATTACK For This Useful Post: [ View ]
2nd November 2013, 12:38 AM |#6  
ATTACK's Avatar
OP Recognized Themer
Thanks Meter: 1,937
 
More
Quote:
Originally Posted by slimdizzy

Can you show a screenshot with the launcher open? I want to see how your mod deals with changes in the status bar and nav bar. Previous mods failed at this. Either everything gets white out or system UI crashes constantly.

TIA

Everything works....the only 2 issues are listed in the OP
The Following User Says Thank You to ATTACK For This Useful Post: [ View ]
EnricoD
2nd November 2013, 02:20 PM |#7  
Guest
Thanks Meter: 0
 
More
Quote:
Originally Posted by ATTACK

Everything works....the only 2 issues are listed in the OP

Sorry Bro

I've already done Your guide and works very good... but

You say to delete this in drawables.xml

<item type="drawable" name="system_bar_background">#88000000</item>

But if You delete this You will get errors...

Since You add android:background="@drawable/status_bar_background"

You should delete the item status_bar_background from drawables.xml

It works for me...
great guide

Thank You


The Following 3 Users Say Thank You to For This Useful Post: [ View ]
4th November 2013, 01:34 AM |#8  
Guest
Thanks Meter: 880
 
More
this working on cm10.2, 4.3.1?
4th November 2013, 02:54 AM |#9  
Junior Member
Thanks Meter: 6
 
More
@ATTACK, If you are familiar with the Xposed framework, I wonder if it would make it easier on you to make this modification into an Xposed mod. Do you think it is worth trying?
4th November 2013, 05:06 AM |#10  
cammykool's Avatar
Senior Member
Flag Arvada Colorado
Thanks Meter: 315
 
More
I don't know how to decompile so I would be cool with that.

Sent from my SCH-I535 using Tapatalk
Post Reply Subscribe to Thread

Tags
aosp, galaxy nexus, guide, kitkat, translucent status bar
Previous Thread Next Thread
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes