1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

[HowTo] Transparente Statusbar unter ICS

Dieses Thema im Forum "Android OS Entwicklung / Customize" wurde erstellt von Nimrod, 15.05.2012.

  1. Nimrod, 15.05.2012 #1
    Nimrod

    Nimrod Threadstarter Android-Guru

    Beiträge:
    2,859
    Erhaltene Danke:
    587
    Registriert seit:
    02.01.2011
    Phone:
    LG G3
    Tablet:
    Nexus 7 (2012)
    Da ich einige Anfragen bekommen habe, wie man die Statusbar transparent bekommt, mache ich hier mal ein HowTo draus, so muss ich es nicht allen per PN erklären. :)

    HowTo: Transparente Statusbar unter Ice Cream Sandwich (Android 4.0.x)

    Alles geschieht natürlich auf eingene Gefahr! Weder ich noch irgendjemand anderes ist für irgendwelche Schäden verantwortlich! Ein nandroid Backup vor dem modden ist selbstversändlich.

    Hinweis:
    Diese Anleitung bezieht sich nur auf Smartphones, wie das ganze bei Tablets funktioniert, weiß ich nicht. Wer es weiß bitte melden. Außerdem gilt die Anleitung nur für AOSP Roms (CM9,AOKP,...), ob und wie das bei anderen ROMs funktioniert kann ich nicht sagen.
    Mit Android 4.1 (Jelly Bean) funktioniert diese Anleitung leider nicht mehr, auch hier wäre ich für Hinweise dankbar.

    Vorrausetzungen:
    • natürlich root
    • apktool (oder ähnliches)
    • ein vernünftiger Texteditor (ich empfehle Notepad++)
    • 7zip (Winrar sollte auch gehen)
    • am besten adb

    Auf den Umgang mit dem apktool und der Kommandozeile werde ich hier nicht genauer eingehen. Da es oft Probleme beim compilen aufgrund eines veralteten apktools gibt, hab ich meins mal zum Download bereit gestellt (Siehe Anhang). Damit muss es klappen.

    Für die Übersichtlichkeit werde ich die verschiedenen Eingaben in verschiedenen Farben darstellen:
    Code:
    Schwarz: Normale Kommandozeile (apktool/adb)
    [COLOR="RoyalBlue"]Blau: zu suchender Code[/COLOR]
    [COLOR="Red"]Rot: zu ersetzender Code[/COLOR]
    [COLOR="SeaGreen"]Grün: neuer Code[/COLOR]
    Okay, los gehts:
    1. Benötigte Dateien und decompilen
    Als erstest holt ihr zwei Dateien aus eurer ROM, ob ihr das mit einem Root-Explorer oder per adb, ist egal. Ich beschreib die Variante mit adb, die entsprechenden Ordner lassen sich daran ja wohl erkennen.
    Macht euch am besten einen Ordner mit den adb tools und apktool und navigiert mit der Kommandozeile dorthin. Bei den Eingaben Groß- und Kleinschreibung beachten!
    Code:
    adb pull /system/app/SystemUI.apk
    adb pull /system/framework/framework-res.apk
    Damit sollten sich beide Dateien in eurem Ordner befinden. Jetzt das framework installieren und die SystemUI.apk decompilen.
    Code:
    apktool if framework-res.apk
    apktool d SystemUI.apk
    Beides sollte ohne Fehlermeldungen durchlaufen. Ansonsten stimmt wahrscheinlich was mit dem apktool nicht.
    2. Smali Edits
    Jetzt müssen die smali-Dateien verändert werden, um eine Transparenz zu ermöglichen.

    Geht jetzt in den Ordner ...\SystemUI\smali\com\android\systemui\statusbar\ und öffnet die statusbar.smali.
    Dort sucht ihr nach der folgenden Zeile:
    Code:
    [COLOR="RoyalBlue"]Landroid/view/WindowManager$LayoutParams;-><init>(IIIII)V[/COLOR]
    Eine Zeile darüber sollte folgendes zu finden sein:
    Code:
    [COLOR="Red"]const/16 v16, 0x4[/COLOR]
    Diese ändert ihr in:
    Code:
    [COLOR="SeaGreen"]const/16 v16, -0x3[/COLOR]
    Das wars in der Statusbar.smali. Datei speichern und schließen.
    ___________________


    Weiter gehts im Ordner ...\SystemUI\smali\com\android\systemui\statusbar\phone\, dort öffnet ihr die PhoneStatusBar.smali.
    Hier sucht ihr als erstes nach:
    Code:
    [COLOR="RoyalBlue"]const v4, 0x4800068[/COLOR]
    Die beiden Zeilen darunter:
    Code:
    [COLOR="Red"]move v2, v1
    
    move v5, v1[/COLOR]
    mit dem folgenden:
    Code:
    [COLOR="SeaGreen"]const/4 v5, -0x3
    
    move v2, v1[/COLOR]
    ___________________


    Immernoch in der PhoneStatusBar.smali sucht ihr jetzt noch nach:
    Code:
    [COLOR="RoyalBlue"]Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mPixelFormat:I[/COLOR]
    Eine Zeile darüber sollte folgendes zu finden sein:
    Code:
    [COLOR="Red"]const/4 v8, -0x1[/COLOR]
    Das wird nun mit diesem ersetzt:
    Code:
    [COLOR="SeaGreen"]const/4 v8, -0x3[/COLOR]
    Damit hätten wir die smali Edits abgeschlossen. Speichert die Datei und schließt sie.​

    3. xml Edits
    Das schwierigste ist geschafft.
    Geht jetzt in den Ordner \SystemUI\res\values\ und öffnet die drawables.xml
    Dort findet ihr den Eintag
    Code:
    [COLOR="RoyalBlue"]<item type="drawable" name="status_bar_background">#ff000000</item>[/COLOR]
    Der Wert #ff000000 stellt den Farbwert der Statusbar dar, wobei die ersten beiden stellen für die Transparenz stehen. Dieser muss somit erstetzt werden. Hier mal einige Werte:
    #ff000000 = 100%
    #E6000000 = 90%
    #CC000000 = 80%
    #B3000000 = 70%
    #99000000 = 60%
    #80000000 = 50%
    #66000000 = 40%
    #4D000000 = 30%
    #33000000 = 20%
    #1A000000 = 10%
    #00000000 = 0% (= durchsichtig)
    Für 60% Transparenz (oder besser gesagt sind das ja 40% transparent, da 0% ja komplett transparent ist... egal :D) ersetzt ihr also:
    Code:
    <item type="drawable" name="status_bar_background">[COLOR="Red"]#ff000000[/COLOR]</item>
    mit
    Code:
    <item type="drawable" name="status_bar_background">[COLOR="SeaGreen"]#99000000[/COLOR]</item>
    _________________
    Ihr könnt anstelle eines Farbwertes auch eine Grafik benutzen. Dafür ersetzt ihr:
    Code:
    <item type="drawable" name="status_bar_background">[COLOR="Red"]#ff000000[/COLOR]</item>
    mit
    Code:
    <item type="drawable" name="status_bar_background">[COLOR="SeaGreen"]@drawable/status_bar_background[/COLOR]</item>
    Dann kopiert ihr die entsprechende Grafik nach \SystemUI\res\drawable-hdpi\ (falls ihr eine andere Pixeldichte habt, entsprechend dann nach drawable-xhdpi/mdpi/...) und nennt sie status_bar_background.png (natürlich könnt ihr auch einen anderen Dateinamen nutzen, solange er dem in der drawables.xml entspricht).
    Die richtige Auflösung findet ihr am besten raus, indem ihr auf einem Screenshot "nachmesst". Bei mir, also qHD, waren es 540x38 px.
    _________________​

    Speichern. Das wars. Jetzt müsst ihr die SystemUI.apk nur wieder compilen.

    4. Compilen und einfügen
    Geht wieder in euren apktool Ordner, und gebt folgendes in die Kommandozeile ein:
    Code:
    apktool b SystemUI
    Das sollte auch ohne Fehler durchlaufen! Wenn nicht, ist entweder irgendwo ein Fehler oder das apktool zu alt.
    Unter /SystemUI/dist/ sollte sich nun die neue apk befinden. Diese öffnet ihr nun mit 7Zip, WinRar etc., Die orginale SystemUI.apk ebenfalls. Jetzt zieht ihr den Ordner META-INF und die AndroidManifest.xml aus der orginalen apk in die modifzierte (Dateien natürlich ersetzen).

    Jetzt muss die Datei nur noch zurück ins System, per adb geht das folgendermaßen:
    Code:
    adb remount
    adb push SystemUI.apk /system/app
    adb reboot
    Nach dem Neustart sollte die Statusleiste transparent sein.
    Falls ihr die apk manuell mit einem Root Explorer nach /system/app kopiert, achtet auch die richtigen Berechtigungen der SystemUI.apk, sollte 644 (rw-r--r--) sein.
    ___________________

    So könnte das ganze dann aussehen:
    [​IMG]
    ___________________

    Die Anleitung basiert auf dieser Anleitung aus dem XDA-Forum:
    Transparent Status Bar--Instructions for DIY - xda-developers
    Credits gehen somit an pendo. Außerdem Danke an Gazman für den Hinweis.
     

    Anhänge:

    Zuletzt bearbeitet: 30.09.2012
    BanB bedankt sich.
  2. Gazman, 17.05.2012 #2
    Gazman

    Gazman Android-Lexikon

    Beiträge:
    1,482
    Erhaltene Danke:
    507
    Registriert seit:
    01.10.2011
    Nimrod bedankt sich.
  3. Nimrod, 29.05.2012 #3
    Nimrod

    Nimrod Threadstarter Android-Guru

    Beiträge:
    2,859
    Erhaltene Danke:
    587
    Registriert seit:
    02.01.2011
    Phone:
    LG G3
    Tablet:
    Nexus 7 (2012)
    So bin jetzt endlich auch mal zum probieren gekommen.
    Hat einwandfrei geklappt. Zwar war der zu ändernde Wert in der StatusBar.smali nicht -0x1 (wie in der Anleitung beschrieben) sondern 0x4 , aber das war kein Problem. Hier das Ergebnis:

    [​IMG]

    Falls jemand auch Interesse hat (und mit smali edits nichts anfangen kann oder nicht klarkommt), kann sich gerne bei mir melden.
     
    Zuletzt bearbeitet: 29.05.2012
    uniQueSTAR bedankt sich.
  4. uniQueSTAR, 28.07.2012 #4
    uniQueSTAR

    uniQueSTAR Android-Hilfe.de Mitglied

    Beiträge:
    46
    Erhaltene Danke:
    10
    Registriert seit:
    15.03.2012

    Danke dir nochmal für deine Hilfe ;)

    Hier mal mein Ergebnis, zwar bin ich noch nicht ganz zufrieden da die Icons in der Statusbar zu nah aneinander sitzen und die Position + Farbe der Uhr gefällt mir nicht, würde die Uhr gern in der Mitte und in weiß haben, falls wer weiß wo ich das ändern kann - bitte bescheid sagen :)

    [​IMG]

    Lg
    uni :thumbup:

    EDIT:

    Sooo.. nun bin ich zufrieden :D

    [​IMG]

    Dank dieser Seite http://mobility.forumsee.com/a/m/s/p12-9751-067375---guide-cm9-mods-transparent-statusbar-center-clock-carrier-logo.html und der tollen Erklärung von Nimrod hab ich (als anfänger) alles so hinbekommen wie ich es haben wollte :D
     
    Zuletzt bearbeitet: 29.07.2012
  5. marc132, 29.07.2012 #5
    marc132

    marc132 Android-Lexikon

    Beiträge:
    1,045
    Erhaltene Danke:
    115
    Registriert seit:
    16.04.2012
    Kann mir das auch jemand für Tablets (statusbar unten) erklären?
     
  6. Nimrod, 08.08.2012 #6
    Nimrod

    Nimrod Threadstarter Android-Guru

    Beiträge:
    2,859
    Erhaltene Danke:
    587
    Registriert seit:
    02.01.2011
    Phone:
    LG G3
    Tablet:
    Nexus 7 (2012)
    Hab leider auch nichts richtiges dazu gefunden, würde mich aber auch interessieren.
    Ich probier mal bissl, vielleicht bekomm ichs hin.

    Edit: Leider ohne Erfolg. Allerdings auch unter JB und nicht ICS, da sind auch die Dateien ganz anders...
    Falls sich jemand damit auskennt, kann sich ja mal melden...
     
    Zuletzt bearbeitet: 08.08.2012
  7. Nimrod, 18.08.2012 #7
    Nimrod

    Nimrod Threadstarter Android-Guru

    Beiträge:
    2,859
    Erhaltene Danke:
    587
    Registriert seit:
    02.01.2011
    Phone:
    LG G3
    Tablet:
    Nexus 7 (2012)
    Hab hier mal ein HowTo draus gemacht. Ich hoffe es ist einigermaßen verständlich. :)
     
    frankie78 und BanB haben sich bedankt.
  8. Sarahcc, 19.08.2012 #8
    Sarahcc

    Sarahcc Erfahrener Benutzer

    Beiträge:
    164
    Erhaltene Danke:
    17
    Registriert seit:
    15.03.2012
    Phone:
    Samsung Galaxy S4 Mini
    Tablet:
    Samsung Galaxy Tab
    Vote for sticky, bitte mehr davon!

    Sent from my SK17i
     
    Nimrod bedankt sich.
  9. phizy, 06.09.2012 #9
    phizy

    phizy Junior Mitglied

    Beiträge:
    38
    Erhaltene Danke:
    6
    Registriert seit:
    06.09.2012
    Tablet:
    LG G Pad 8.3
    Hey, uniQueSTAR !
    Kannst du mir vielleicht bitte verraten, wo du die Icons her hast und das Wetter/Uhr Widget ? :blushing::biggrin:
    ... falls es wer anders weiß, ich bin für Idee Hilfe dankbar ! :biggrin:
     
    Zuletzt bearbeitet: 07.09.2012
  10. uniQueSTAR, 07.09.2012 #10
    uniQueSTAR

    uniQueSTAR Android-Hilfe.de Mitglied

    Beiträge:
    46
    Erhaltene Danke:
    10
    Registriert seit:
    15.03.2012
    Schau mal hier :)

    http://www.android-hilfe.de/showthread.php?p=3775610

    Lg
    Uni

    Gesendet von meinem HTC Sensation mit Tapatalk 2
     
    phizy bedankt sich.
  11. phizy, 07.09.2012 #11
    phizy

    phizy Junior Mitglied

    Beiträge:
    38
    Erhaltene Danke:
    6
    Registriert seit:
    06.09.2012
    Tablet:
    LG G Pad 8.3
    Cool, Dankeschön erstmal :thumbsup:


    hab aber noch mal 'ne Frage zum Thema,

    ich hab alles so wie oben geschrieben gemacht, erst mit adb die Dateien runter vom System geholt und danach auch die beiden Dateien installiert bzw. decompilen (schreibt man das so ?).
    Hat alles super geklappt, .. dachte ich zumindest, denn als ich zum zweiten Schritt übergehen wollte, gab's bei mir keinen 'smali'-Ordner, somit konnte ich da natürlich auch nichts editieren :thumbdn: ..
    Schritt 3 ging wieder, da ich den 'res'-Ordner habe und Schritt 4, Compilen und einfügen, ging auch wieder nicht, da bei mir keine neue apk erstellt wird.
    Ich hab jetzt schon einen anderen originalen smali Ordner gezogen, und damit weitergemacht, aber hat auch alles nicht funktioniert.
    ohne den Ordner hab ich's auch schon probiert und nur die xml Sachen gemacht, aber ist dann auch wohl wieder bei Schritt vier gescheitert ..
    Durch mehrere Online Foren hab ich mich auch durchgelesen, aber meist steht ja das selbe überall und deswegen find' ich den Fehler bei dem was ich da grad mach auch nicht ^^

    Bin dankbar für Hilfen und Tipps ! :smile:
     
  12. Nimrod, 07.09.2012 #12
    Nimrod

    Nimrod Threadstarter Android-Guru

    Beiträge:
    2,859
    Erhaltene Danke:
    587
    Registriert seit:
    02.01.2011
    Phone:
    LG G3
    Tablet:
    Nexus 7 (2012)
    Ich würde sagen das liegt am apktool, hast du mal das probiert, was ich angehängt habe?

    Gesendet von meinem Evo 3D GSM
     
  13. TzGuf, 07.09.2012 #13
    TzGuf

    TzGuf Android-Lexikon

    Beiträge:
    1,327
    Erhaltene Danke:
    265
    Registriert seit:
    23.08.2012
    ...oder - Virtuous Ten Studio, das Programm ist fast schon göttlich meiner Meinung nach :)
     
  14. marc132, 07.09.2012 #14
    marc132

    marc132 Android-Lexikon

    Beiträge:
    1,045
    Erhaltene Danke:
    115
    Registriert seit:
    16.04.2012
    guter tip, Danke!
     
  15. phizy, 09.09.2012 #15
    phizy

    phizy Junior Mitglied

    Beiträge:
    38
    Erhaltene Danke:
    6
    Registriert seit:
    06.09.2012
    Tablet:
    LG G Pad 8.3
    hab mich heute noch mal rangesetzt und es endlich auch mal geschafft :thumbsup:

    'META-INF und die AndroidManifest.xml' sollte man auch wohl mal in die neue SystemUI.apk packen, dann klappt es auch ! :rolleyes2::biggrin:
     
  16. Mucky2, 15.09.2012 #16
    Mucky2

    Mucky2 Android-Lexikon

    Beiträge:
    1,410
    Erhaltene Danke:
    275
    Registriert seit:
    10.07.2012
    Phone:
    Nexus 5, S6 Edge, HTC One, HTC One SV, Nexus 7,
    Klappt aber auch mit den Jkay deluxe Settings + Custom Rom :thumbup:

    cmx//i9100//tapatalked
     
  17. xminister, 26.09.2012 #17
    xminister

    xminister Ehrenmitglied

    Beiträge:
    8,000
    Erhaltene Danke:
    3,958
    Registriert seit:
    08.11.2011
    Phone:
    LG, Wiko, Huawei, HTC
    Tablet:
    Acer W3-810, Dell Venue 8 Pro, i.onik 11.6
    Meinst du so?

    newbar3.jpg

    Keine Ahnung... ;)
     
  18. Nimrod, 26.09.2012 #18
    Nimrod

    Nimrod Threadstarter Android-Guru

    Beiträge:
    2,859
    Erhaltene Danke:
    587
    Registriert seit:
    02.01.2011
    Phone:
    LG G3
    Tablet:
    Nexus 7 (2012)
    Das is geil. Wo is das Bild her?

    Gesendet von meinem HTC EVO 3D X515m
     
  19. xminister, 26.09.2012 #19
    xminister

    xminister Ehrenmitglied

    Beiträge:
    8,000
    Erhaltene Danke:
    3,958
    Registriert seit:
    08.11.2011
    Phone:
    LG, Wiko, Huawei, HTC
    Tablet:
    Acer W3-810, Dell Venue 8 Pro, i.onik 11.6
  20. Nimrod, 26.09.2012 #20
    Nimrod

    Nimrod Threadstarter Android-Guru

    Beiträge:
    2,859
    Erhaltene Danke:
    587
    Registriert seit:
    02.01.2011
    Phone:
    LG G3
    Tablet:
    Nexus 7 (2012)
    Und verrätst du uns auch, wie du das gemacht hast? :)
    Und ist das JB oder ICS?

    Gesendet von meinem HTC EVO 3D X515m
     

Diese Seite empfehlen