Transparent Status Bar--Instructions for DIY

Search This thread

fatsix

Senior Member
Oct 25, 2010
155
36
I've gotten the colors to change. But setting the alpha level has no effect. It has to be enabled somewhere. Ive been all through the xml and smali files and found nothing. This is on a decompiled systemui.apk. I've also left the status_bar_tile_bg.png as just an empty alpha layer. Seriously annoyed.....

Sent from my Galaxy Nexus using XDA App
 

altimax98

Senior Member
Nov 7, 2008
2,227
676
Florida
I've gotten the colors to change. But setting the alpha level has no effect. It has to be enabled somewhere. Ive been all through the xml and smali files and found nothing. This is on a decompiled systemui.apk. I've also left the status_bar_tile_bg.png as just an empty alpha layer. Seriously annoyed.....

Sent from my Galaxy Nexus using XDA App

Smali is the problem. You need to be editing the straight Java code to get it working. I know that there is a way to decompile an apk into Java but I don't think there is a way to recompile it.

At this time source editing is the only way

Sent From Nexi - The Galaxy Nexus
 

kgbrown247

Senior Member
Dec 15, 2008
204
12
Okc, OK
Smali is the problem. You need to be editing the straight Java code to get it working. I know that there is a way to decompile an apk into Java but I don't think there is a way to recompile it.

At this time source editing is the only way

Sent From Nexi - The Galaxy Nexus

I have tried a dex2jar kit but it does not decompile correctly. I was hoping to get the java files needed, edit, put edits into source, and rebuild systemui from source. :thumbdown:

Sent from a full AOSP GNex via Tap
 

RogerPodacter

Senior Member
Apr 12, 2010
5,654
425
Los Angeles, CA
so i guess theres no way i can use this on stock 4.0.1. I dont yet have my ubuntu rig setup yet to compile myself. And i was looking to make my status bar and soft buttons transparent so the wallpaper was visible beneath.

Did systemUI apk change that much from 4.0.1 to 4.0.3 so that it wouldnt be compatible?

Awesome thread btw. Love anything to do with compiling aosp code changes:).
 

ogdobber

Inactive Recognized Developer
Nov 4, 2008
3,256
1,827
so i guess theres no way i can use this on stock 4.0.1. I dont yet have my ubuntu rig setup yet to compile myself. And i was looking to make my status bar and soft buttons transparent so the wallpaper was visible beneath.

Did systemUI apk change that much from 4.0.1 to 4.0.3 so that it wouldnt be compatible?

Awesome thread btw. Love anything to do with compiling aosp code changes:).

roger! a familiar face from the good old nexus one;)

yes sadly, the systemui is different betwwen .1 .2 and .3, too much change
 

RogerPodacter

Senior Member
Apr 12, 2010
5,654
425
Los Angeles, CA
roger! a familiar face from the good old nexus one;)

yes sadly, the systemui is different betwwen .1 .2 and .3, too much change

Howdy og:). What a coincidence i just was browsing your github just taking a look thru the source thinking of forking for fun. Guess i'll have to wait on the status bar till then and when i upgrade to 4.0.3. This galaxy nexus reminds me of good old n1 days in terms of how great of a device i thought it was. I skipped over the nexus s but the GN is def worth it!
 

pendo

Senior Member
Jun 3, 2010
1,971
759
Tulsa, OK
Thanks for this. I am just beginning to try to code in Android and this was very helpful.

I'll see if I can get this in 4.0.2 or maybe I'll just move on to 4.0.3

Either way, thanks.

PS- Is there any reason for the gradient on your back ground before you get to the soft keys?

-MK
That gradient is part of Launcher2.apk. So I tried to match bottom of that gradient to use as the background for the softkey area.
Smali is the problem. You need to be editing the straight Java code to get it working. I know that there is a way to decompile an apk into Java but I don't think there is a way to recompile it.

At this time source editing is the only way

Sent From Nexi - The Galaxy Nexus

You can do this as a smali edit. The first time I did this it was as a smali edit. And in fact, I've just edited post #3 with some instructions that I *hope* will be universal. Well, universal with aosp roms that is. I worked on a Sense based SystemUI that was a tiny bit different recently.

There really isn't a way to decompile back to original source java. Apktool used to have a debugging feature that would show .java file extensions rather than .smali but it really pretty much the same thing, but also added class declarations. This is so it could be used in an IDE. However, this feature appears to be broken in the newest apktool. I don't know whether this feature is being phased out or if it's just a bug in the new apktool, however it does appear to work in older versions.
 

fatsix

Senior Member
Oct 25, 2010
155
36
That gradient is part of Launcher2.apk. So I tried to match bottom of that gradient to use as the background for the softkey area.


You can do this as a smali edit. The first time I did this it was as a smali edit. And in fact, I've just edited post #3 with some instructions that I *hope* will be universal. Well, universal with aosp roms that is. I worked on a Sense based SystemUI that was a tiny bit different recently.

There really isn't a way to decompile back to original source java. Apktool used to have a debugging feature that would show .java file extensions rather than .smali but it really pretty much the same thing, but also added class declarations. This is so it could be used in an IDE. However, this feature appears to be broken in the newest apktool. I don't know whether this feature is being phased out or if it's just a bug in the new apktool, however it does appear to work in older versions.
Thanks for the added notes. Helps a ton with a place to start. Decompiling to .java with windows is a no no, it wont compile correctly so i have read...


Sent from my Galaxy Nexus using XDA App
 

fatsix

Senior Member
Oct 25, 2010
155
36
I got the status bar transparent and half of the notification bar transparent. The top half is transparent and the bottom half is solild black. Ugh.:confused:

I think there are some more smali edits. Changing the gradient color on the dock isn't working either. The status bar does look great tho. Thanks again.
 
Last edited:

kgbrown247

Senior Member
Dec 15, 2008
204
12
Okc, OK
I got the status bar transparent and half of the notification bar transparent. The top half is transparent and the bottom half is solild black. Ugh.:confused:

I think there are some more smali edits. Changing the gradient color on the dock isn't working either. The status bar does look great tho. Thanks again.

can you post or pm me the edits you have done this far. Ill rock half transparency:D

Sent from a full AOSP GNex via Tap
 

RogerPodacter

Senior Member
Apr 12, 2010
5,654
425
Los Angeles, CA
just to double check, i'm on stock 4.0.1 and rooted. There's no smali edit i can do pulling my own apk to get any transparent bar? Just wanted to make sure i didnt miss something short of compiling the changes with 4.0.1 source myself...
 

6jaipur6

Senior Member
Feb 1, 2010
805
238
Targu Jiu
You know how i can make the status and softkey bars transparent and to have in the same time custom mods of softkeys? Because every time i try to flash the zip from here to phone the customed softkey dissapeare...
 

Treken

Senior Member
Nov 27, 2010
830
297
Houston
Hello guys,

First, thanks for the compliments some have said. They are appreciated for sure.

As you might be able to guess from my less than rapid replies, I really just cannot support constantly updating this with all the various rom builds that are out there. I have not looked into doing this as a smali only edit recently but if I get some time I will try.

I will NOT be spending anymore time trying to replicate Paul's softkey mod though so I will most likely just try to do it to a SystemUI that already has that in place. *If possible*, I'll try to update the OP with some sort of universal instructions for a smali edit.




Here's an early screenshot from when I was initially trying the mod. Sorry, it's the only one I personally have. That said, I would not flash what was posted earlier in this thread unless you are on an aosp 4.0.3 build only. It does not contain any softkey mod. If you flash this on an incompatible rom, your statusbar will fc as well as your menu keys.

ogdobber.png


See the above caution....in other words, no it won't work.

Yes, and in fact that is the initial way I did this mod. There's a couple ways to do this....you could either remove the entry for status_bar_background in drawables.xml. Then you'd place the png you wanted in drawables-xhdpi and name it status_bar_background (you could use a 9 patch if you like). The other way would be to add your png but name it whatever you wanted. Then you'd need to change the background in res/layout/statusbar.xml to whatever you named your png in drawable-xhdpi.

Pendo, maybe you or someone here can help me out. I tried using apk manager to de-compile the systemui.apk but got some error saying it couldn't find the apk in either the unsigned folder or the signed folder. Basically I want to make the edit to the xml file and then re-compile and pull the file from the apk that creates the transparent feature.

edit: I managed to decompile the systemui.apk. I will post results later. Thanks
Sent from my Galaxy Nexus using XDA App
 
Last edited:

pendo

Senior Member
Jun 3, 2010
1,971
759
Tulsa, OK
I got the status bar transparent and half of the notification bar transparent. The top half is transparent and the bottom half is solild black. Ugh.:confused:

I think there are some more smali edits. Changing the gradient color on the dock isn't working either. The status bar does look great tho. Thanks again.
This is very interesting....thank you. The reason I say this is that it is the exact same result that happened when I attempted to help another rom dev recently.
screenshot2012010700441.png

I have not ever heard back if he found the issue but one of my guesses was that the wallpaper image itself wasn't large enough. Could you try a different sized background please and report back?

just to double check, i'm on stock 4.0.1 and rooted. There's no smali edit i can do pulling my own apk to get any transparent bar? Just wanted to make sure i didnt miss something short of compiling the changes with 4.0.1 source myself...
The smali edit should be the same for you on 4.0.1. Actually this one that I did in the other thread should work. *note it also has my circle battery mod.
 

pendo

Senior Member
Jun 3, 2010
1,971
759
Tulsa, OK
You know how i can make the status and softkey bars transparent and to have in the same time custom mods of softkeys? Because every time i try to flash the zip from here to phone the customed softkey dissapeare...

Once again....the zip that I made for 4.0.3 ONLY contained transparency edits. It did not include Pauls softkey edits. I did add the softkey edits one time to 4.0.2 and I decided I didn't want to do that anymore, lol. It would be far easier to add the transparency edits to something that already has the softkey mod and the instructions in the 3 post should get you there. *exception being the half black bar that's been reported twice now....needs further investigating on that issue
 

fatsix

Senior Member
Oct 25, 2010
155
36
I don't think its the wallpaper size. Because when you mess up the systemui.apk it disappears and you have a full screen. I have tried multiple sized wallpapers with no luck. I have also tried making every editable color in the xml transparent, and its always there. Working on the gradient for the dock now, that has to go.

Edit: What is also odd is that my statusbar is 100% transparent in portrait, and the alpha that i actually wanted, works in landscape and the notification bar is the proper full transparency. Which makes the dock gradient look like ass.
 
Last edited:

pendo

Senior Member
Jun 3, 2010
1,971
759
Tulsa, OK
I don't think its the wallpaper size. Because when you mess up the systemui.apk it disappears and you have a full screen. I have tried multiple sized wallpapers with no luck. I have also tried making every editable color in the xml transparent, and its always there. Working on the gradient for the dock now, that has to go.

Edit: What is also odd is that my statusbar is 100% transparent in portrait, and the alpha that i actually wanted, works in landscape and the notification bar is the proper full transparency. Which makes the dock gradient look like ass.

The gradient for the dock is a png called hotseat_bg_panel.9.png in Launcher2.

For the life of me I can't figure out what would be causing that half black bar. I've looked over the source code and I'm not seeing it. Do the "pressed" highlights show up right? If you don't mind, please attach your SystemUI so I can take a look as well.
 

Top Liked Posts

  • There are no posts matching your filters.
  • 14
    Disclaimer: I do not have any formal training with anything I'm covering here and it's entirely possible….dare I say probable…that I may state something incorrectly either partially or wholly (hopefully I’m not that far off). So this is just how I've come to understand things from my own self study as well as staring smali for countless hours (although I have to say the more I learn, the more I learn I don't know :eek:). Hopefully there’s another beginning android hobbyist that finds this useful and/or inspires him to try some new things.

    **These instructions apply to Mac and Linux only, due to the fact we're working with aosp source and building in windows is not supported at this time**

    Enabling Translucency
    I approached this a little different than I’m used to seeing in terms of a mod. Normally we start off by decompiling an apk and go from there. Since this is for an aosp rom, we have easy access to the source code and can make changes there. Now, I don’t proclaim to know java. I have very, very little programming experience, and even that is limited to an introductory C++ class I just took. But even without knowing java, you’ll have a much easier time reading java source code than you will smali. So, yes, you need to sync with aosp to use this guide. It's not hard, and there's good instructions HERE.
    As an aside, my personal opinion is that anyone that a true-blue xda'er should have aosp syned...even if you have no intention of building roms. It's like an android encyclopedia. I've learned A TON just from poking around/reading though some parts. I probably comprehend < 10%, but it's easily been one of the most beneficial things I've done to further my understanding.​

    So now you have the source code. :) What we need to change is the PixelFormat for the statusbar. In froyo and gingerbread this was done in StatusBarService. It’s been changed a little in ics, although the edits remain in SystemUI. The two files I changed were StatusBar and PhoneStatusBar.

    Starting in the root of your aosp working directory, the absolute path of the first file I edited is
    Code:
    frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/StatusBar.java
    Open this in a good text editor. The PixelFormat parameter is specified in the getStatusBarHeight function. In the version I edited it is easily found on lne 124. Just search for “PixelFormat” and you’ll find it. (ignore the search return that’s part of the import statement at the beginning of the file) As soon as you get there you’ll see the problem. PixelFormat.OPAQUE. Replace OPAQUE with TRANSLUCENT. Save

    Next you make similar edit in PhoneStatusBar.java. From the same directory that StatusBar.java is in, go to the phone directory and open PhoneStatusBar.java in your text editor. Now this file is much, much longer to read through. Rather than doing that (of course you can if you want) just performa search for that same text again “PixelFormat” You’ll get several returns, some of them will already have TRANSLUCENT set.

    BUT...Don’t get carried away and change all the OPAQUE values. One of the search returns will be part of the function getRecentsLayoutParams (starts on line 378). The portion of code that you might be temted to change checks the PixelFormat by way of a boolean test
    Code:
    (opaque ? PixelFormat.OPAQUE : PixelFormat.TRANSLUCENT)
    I left this alone.
    Edit: After reading the entire code a little bit more, I think we could change it to
    Code:
    PixelFormat.TRANSLUCENT
    without any ill effects, although I'm not sure what, if any, additional benefit we'd see. I have not tried.​

    The exact places I did change OPAQUE to TRANSLUCENT were in lines 311, and 481. That’s it for the code portion. Make sure to save your changes. Now go back to the res directory and we need to edit some xml files.

    From the root of the SystemUI directory, open res/values/colors.xml. Find the entry for “status_bar_background” and change it’s value to whatever you want. In mine I’ve set it to “a6000000” which black but 35% translucent. The first 2 characters control the opacity on a scale from 0-255 where 0 is completely transparent and 255 is fully opaque. That value is then stated in hexadecimal format; e.g. 0=00, 255=ff.

    *if you also want a translucent bottom menu bar, it is set in res/layout/navigation_bar.xml. Change the hex value of android:background=”ff000000” to your desired value for opacity.*

    Now you should have all the edits in place for a translucent statusbar. All that’s left is to compile the apk. Before you compile SystemUI, you need to have ran the extract-files script. Only needs to be done once. Connect your phone to the computer(making sure that usb debugging is turned on) then in terminal, starting from the root of your aosp working directory:
    Code:
    cd device/samsung/maguro/
    ./extract-files.sh
    Let the script finish. It will create a new vendor directory in the root of your working directory and copy several files from your phone.

    Now cd back to the root of your working directory and run
    Code:
    . build/envsetup.sh
    Note the period and space before build. This is an important step which initialized the build environment. Several new commands will be available now such as "mm" "mmm" "croot" amongst others. Type "help" (without the quotes) for a full list of the new commands available.

    Next step to build your SystemUI is to run lunch. Just type "lunch" and press enter:
    Code:
    pendo:master pendo$ lunch
    
    You're building on Darwin
    
    Lunch menu... pick a combo:
         1. full-eng
         2. full_x86-eng
         3. vbox_x86-eng
         4. full_stingray-userdebug
         5. full_wingray-userdebug
         6. full_crespo-userdebug
         7. full_crespo4g-userdebug
         8. full_maguro-userdebug
         9. full_toro-userdebug
         10. full_panda-eng
    
    Which would you like? [full-eng]

    It will list the available builds. Number 8 should be for maguro-user debug. Select it and press enter. And lastly, type
    Code:
    make SystemUI

    It will take several minutes to build, especially the first time. But once it’s done, your new SystemUI will be in out/target/product/maguro/system/app/SystemUI.apk.
    6
    Here is a SystemUI that I built that has a translucent statusbar. It also has a circle battery mod I recently made in ics blue. This was built on 4.0.3 sources.

    Here's a flashable zip:

    TransStatusbar-SmoothCircleMod_4.0.3.maguro-signed.zip
    6
    Smali edits

    OK...here's some instructions as a smali edit. Things to keep in mind here....smali is, for me at least, challenging to follow and fully comprehend what you are looking at. Also, this set of instructions is based off of working on a SystemUI for 4.0.3. My goal here is to give precise enough steps so that the right edits are made, while also trying to be "universal" in that this will hopefully work on other SystemUI's going forward. If we discover that tweaks need to be made, I'll edit this list.

    Pixel format is stored as a integer constant. To review, here are some values of interest for this thread. (blue text is value)
    • OPAQUE(no alpha bit): -0x1
    • RGB_565(also no alpha): 0x4
    • TRANSLUCENT(many alpha bits) -0x3
    First file to edit is StatusBar.smali. Open in your preferred text editor and search for this text:
    Code:
    Landroid/view/WindowManager$LayoutParams;-><init>(IIIII)V
    Go to the line above it and change the last value from -0x1 to -0x3.


    Next open PhoneStatusBar.smali. Search for this text:
    Code:
    const v4, 0x4800068
    replace the 2 lines underneath with this:
    Code:
    const/4 v5, -0x3
    
    move v2, v1


    Next search for this text:
    Code:
    Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mPixelFormat:I
    Once again we're going to edit the line above and change the last value to -0x3.


    You can see the pattern of changing -0x1 to -0x3. However, you may notice that it's a 0x4 that your're replacing. You won't ever be replacing anything vastly different. So when following these instructions if you find that you're replacing something other than -0x1 or a 0x4, that should raise a red flag that it might not be the right thing to edit. *The first edit in PhoneStatusBar is a little different than the others and I think there is more than one way to do that, but this is how I did.

    You may notice that I haven't listed the entire line for the search criteria ....this is because there may be differences with the local variables associated. Your file may be assigning the pixel format to local variable v8 and the next guys v9. *The first search in PhoneStatusBar I did give the whole line.

    That's it for smali edits. Now you still have the res directory edits. With an aosp based rom, you need to change the hex value for status_bar_background in drawables.xml. Also, you now have translucency available for the softkey area.....it's background is set via hex color in res/layout/navigation_bar.xml.
    2
    I've been wanting a smooth circle battery mod! Only problem is, on Roman's AOKP rom flashing it makes the statusbar and virtual buttons disappear :( Happens with the other circle battery mod as well :/
    My bad, I left out one VERY IMPORTANT detail. Whether or not you build your own or use the one I compiled it is a deodexed SystemUI.apk. If you previously had an odexed SystemUI then you MUST delete SystemUI.odex

    I have been told that my apk works with this 4.0.3 IML74K rom.
    Same here, soft buttons and status bar dissapear

    Sent from my Galaxy Nexus using xda premium
    Please see above note.

    Also, these instructions as well as the provided apk DO NOT have Paul's softkey mod. I'm hesitant to say this, but I am tinkering a bit trying to replicate the edits in source form. I know I posted a SystemUI that had those edits for 4.0.2 but I did them as smali edits. I wish to add them to the source code which would make it much easier for updates. But I have no progress report on that. The *main* purpose of this thread was informational. I wanted to offer some help for someone to either do it themselves, or help someone who has the capacity/desire to update the apk as needed.
    awesome instructions im going to download asop on my linux pc tonight and have at the systemui on boxing day or something. ive got the softkeys themed but thats as far as i can get without a ton of fc's when decompiling and editing xml's and some pngs, so hopefully this will help me learn a bit more.

    thanks for the awesome write up!

    edit: i get the same problem as the above people when flashing this on the rom in my sig
    This is built purely from aosp sources, not CM. I would not expect what I compiled to work on anything other than aosp 4.0.3. However, the information in the first post should help you make a translucent statusbar if the CM9 source code is available somewhere.


    pendo, thanks so much for this. its very educational and I appreciate the time you took to help all of us.
    my question is...
    in the cyanogenmod source instead of stating "opaque" or "translucent" it shows PixelFormat.RGB_565 which (I think) means it's 16bit and opaque. do you think it would have to then be changed to ARGB_8888, or something different? here's the link to the info I found: http://developer.android.com/reference/android/graphics/Bitmap.Config.html
    I'm just unsure how to apply this info.
    thanks man, love your work, glad to see you here!

    Sent from my Galaxy Nexus using xda premium
    Yes, I actually had some information regarding that in the first draft I had made, however I was getting concerned with the length as it was so I trimmed it down a bit.

    Yes, RGB_565 is 16bit opaque. You should just change it to TRANSLUCENT. I've done this before, but in smali. One thing that I haven't figured out is why it's called RGBA vs ARGB. The hex values are done in ARGB. Go figure.:confused:

    Also, here's some info that will help when trying to do this edit backwards, aka decompiling with apktool ;) Obviously when aapt compiles it doesn't store the code as TRANSLUCENT....but here's some of the values that it does store of what you'll most commonly see:

    TRANSLUCENT = -0x3
    OPAQUE = 0x1
    RGBA_8888 = 0x1
    RGBX_8888 = 0x2
    RGB_565 = 0x4
    1
    Here you go ;) mind of small but not a problem at all.

    Sent from my Galaxy Nexus using xda premium