Transparent notification bar for any rom and ANY CM7 theme (new cm-7.1.0-11 stable)

Search This thread

Created78

Member
Jan 14, 2011
17
2
Thanks again for the guide! In the latest nightly (120102.0338), there is no ".line 1519" in the StatusBarService.smali file, but the relevant bit of code seems to be at .line 1523, and it doesn't need to be changed.

Just change the line above invoke-direct/range {v0 .. v5}, Landroid/view/WindowManager$LayoutParams;-><init>(IIIII)V, as explained in krd_medico's awesome guide, and you're good to go.
 

Proverbs2

Senior Member
Feb 1, 2012
300
326
I've attached a modified SystemUI.apk for the 120126.2206 CM7 build, for anyone who doesn't want to go to all the trouble of editing the classes.dex file. Some semi-transparent PNGs that I created are included in the modded SystemUI.apk

Specifically, I edited the following:

status_bar_background.9.png
status_bar_close_on.9.png
statusbar_background.9.png
 

Attachments

  • SystemUI.apk
    365.8 KB · Views: 56
Last edited:

todd_10

Senior Member
Oct 6, 2011
129
31
Taupo, New Zealand
Brilliant guide!!!

Thanks so much, I've spent a few late nights trawling through all the available patches people have been nice enough to share, but have had no luck getting any to work.
This tutorial was easy to follow, and finally I have my very own transparent status bar :D
 

Proverbs2

Senior Member
Feb 1, 2012
300
326
For months, I've been using this method to make my status bar transparent. I just updated from Maniac's September 14th CM7 build to his latest CM7 nightly, and used the same procedure as always to modify the status bar. This time, however, the status bar stays black on the homescreen, but it's transparent everywhere else (on the lockscreen and in every app). Any idea why the transparency isn't working on the homescreen? Could there be another png file in SystemUI.apk\res\drawable-hdpi\ that I need to edit, besides the ones that start with “status_bar” and "statusbar"?
 

Top Liked Posts

  • There are no posts matching your filters.
  • 17
    It is expected that those following this guide should have prior knowledge of
    1)How to use adb and/or terminal emulator to edit system files.
    2)How to fix permissions using root explorer.
    3)What to do if system process crashes or the phone hangs after replacing system files- pull battery and power on.
    4)If you are an advanced user you can also first modify the systemui.apk first.Replace it in the cm7_update.zip file.Sign the new zip file so generated and install it.Then no need to go through many of the following steps


    This is by far the simplest method to get a transparent notification bar. Some parts of this thread have been taken from the following source:http://www.lazytrap.com/?tag=systemui-apk
    What you would think is simple though, isn’t quite. You would THINK that just updating the PNG files would be enough. It’s not. I tried it a million times while trying all those other bad ideas. After the PNG files are modified, you also need to edit the file, classes.dex, which is in the root of SystemUI.apk. Turns out, .dex is yet another format only native to the Android platform. You can decompile and recompile them using smali/baksmali. Once you have decompiled the .dex file, you’ll be left with a bunch of files. For transparency on the statusbar to work, we need to edit two entries in StatusBarService.smali. After the 2 entries are changed, we save the file then recompile classes.dex, update the SystemUI.apk, then put it on our android device. That’s it. So while it’s not as simple as just editing the PNG files and updating the SystemUI.apk archive, it’s still a hell of a lot simpler than all these forum posts lead on. Actual instructions below.
    Instructions:
    • Copy /system/app/SystemUI.apk to your sdcard and then to your computer where you can edit it(use root explorer or adb to pull it to your computer)
    • Install 7-Zip if you do not already have it. 7-Zip can browse into .apk files and let you update them easily.
    • Open SystemUI.apk in 7-Zip, do not extract it, just open it.
    • Browse to the folder res/drawable-hdpi/, then find all the png files that start with “status_bar” & "statusbar_background.9". Drag them into a folder on your desktop.
    • Open the PNG files in Paint.Net, Gimp, Photoshop, or whatever your favorite editor is capable of png transparency.
    • Delete the background. It’s now transparent. If you want semi-transparency, do that instead.
    • Select all of your modified PNG files and drag them back into same spot you got them from in the SystemUI.apk file
    • Press Backspace a couple times in 7-Zip to go back up to the root folder in the .apk, you should see classes.dex sitting there.
    • Drag classes.dex out to a folder
    • Download smali and baksmali from here: http://code.google.com/p/smali/downloads/list, put them in the same dir you put classes.dex
    • Open a CMD prompt and change to that directory
    • Type the following (replace 1.2.6 with whatever version it was you dl’d):
    • java -jar baksmali-1.2.6.jar -o classout/ classes.dex
    • Back in the folder, go into the new classout directory that was created.
    • Find the file named StatusBarService.smali, open it in a text editor.use notepad or notepad++(easier)
    • Search for .line 1519, the line just under it should read: const/4 v5, -0×3. If it does not, but instead reads const/4 v5, 0×1 or const/4 v5, 0×2, change it.
    • Search for invoke-direct/range {v0 .. v5}, Landroid/view/WindowManager$LayoutParams;-><init>(IIIII)V; a line above you should see const/4 v5, 0×2. Change it to const/4 v5, -0×3 also.
    • Save the file and exit.
    • Go back to your CMD prompt and enter this command (this recompiles the .dex file with your changes):
    • java -jar smali-1.2.6.jar classout -o classes.dex
    • Add classes.dex back to where you got it from in SystemUI.apk.
    • Take your updated SystemUI.apk file and place it on your SD card. If you took it out, put the SD card back in your Android device. (instead of using a SD card you could use something else to move the files around, like dropbox).
    • Open up Terminal on your Android device, change to the directory you put the update SystemUI.apk file. ex: cd /sdcard/myupdate/
    • Type the following commands:
    • mount -o remount,rw /system/
    • cp -f SystemUI.apk /system/app
    The above command probably just crashed Launcher. Press Force Close . Now, go to root explorer and fix permission for systemui.apk to rw-r--r-- and Reboot your device.
    After making the update, make sure to turn off Wallpaper Hack. It’s under Settings->ADW Launcher->System Preferences->Wallpaper Hack – Not doing so will result in the transparency only working with Live Wallpapers and not others
    That’s it. You should now have a transparent status bar.
    Now, you can use only such themes that come with a transparent notification bar or glass effect as well as the 3 default themes included with cm7 theme chooser. But you won’t be able to use other themes i.e. they will continue to show a black notification bar and not a transparent one

    WORKAROUND: But we can get transparent notification bar with ANY theme. Here’s how:
    1)download the theme’s apk to your computer
    2)open it with 7zip as an archive (Don’t extract it)
    3)Go to res/drawable-hdpi and drag the following files to any folder:
    com_android_systemui_statusbar_background.9.png; com_android_systemui_status_bar_background.9.png; com_android_systemui_status_bar_close_on.9.png
    4) Open the PNG files in Paint.Net, Gimp, Photoshop, or whatever your favorite editor is capable of png transparency.
    • Delete the background. It’s now transparent. If you want semi-transparency, do that instead.
    Select all of your modified PNG files and drag them back into same spot you got them from in the Theme.apk file in 7zip and close 7zip
    5)This will give you your new apk for the theme with a transparent statusbar .But you will need to sign it to be able to use it
    6)use drag2sign_apk to sign your new apk file.
    7)Transfer it to your phone and install apk using any file explorer. (If you did not sign the new apk then installation will FAIL)
    8) Go to theme chooser and apply your New theme. That’s it you will now have a Transparent notification bar

    This method can be used to get a transparent notification bar with ANY theme

    Here I'm attaching the SystemUI.apk of cm7_rc1.5 which I'm currently using with transparent statusbar.I recommend using adb to push it.
    In command prompt first change directory to the one containing the patched SystemUI.apk
    Use this command: adb remount (to allow editing the system files)
    next command: adb push SystemUI.apk /system/app/SystemUI.apk
    Then fix permission using root explorer.
    Reboot.
    Don't forget to uncheck wallpaper hack in ADW settings

    THOSE WHO FIND THIS THREAD USEFUL DON'T FORGET TO HIT THANKS


    I had to update my system and hence had to create a new systemui.apk. This one is of cm-7.1.0-11 stable release. Here I'm uploading it for your convenience
    1
    You can go to this website http://uot.dakra.lt/kitchen/ and upload your framework-res and systemui and do all kinds of stuff to it including transparencies. check it out its pretty easy. You can also upload a theme.apk and modify that also. Here is a thread for asking questions and getting help for that site http://xdaforums.com/showthread.php?t=990829
    1
    finally,, i can make it work. i did the modification by using apk_manager b4, but seems not.

    ic.png.scaled500.png


    running CM7, on Go Launcher Ex, with modified Zdunex25's Meizu theme
    1
    I Can't be 100% sure because I haven't tried it myself on rooted froyo
    (I am using cm7) but I guess IT SHOULD WORK!

    You will have to take a risk. Make sure you have 2ndinit recovery installed and do a nandroid back-up before you try. If anything goes wrong: Pull battery,put it back on,restart, enter 2ndinit recovery by pressing volume down button as soon as the led turns blue and restore your nandroid backup.

    Kindly post your result: success or failure if you decide to try. So that others may know. Good luck.