Oggi, vi spiegherò, o meglio tradurrò questa guida ([HOW-TO][MOD][JB] Transparent Statusbar & | Xperia T, TL > XDA), con alcune migliorie (testate personalmente sul mio cellulare), una guida per rendere status bar e navigation bar trasparenti (per chi non lo sapesse, la status bar è la barra delle notifiche, mentre la navigation bar è quella in cui risiedono i tasti back, home e applicazioni recenti) o per chi vuole penso che funzioni anche per cambiare il colore.
Preciso che non mi assumo nessuna responsabilità a eventuali vostri errori.
Alcuni screenshots presi dal topic
Spoiler:
REQUISITI
- BACKUP!!! fate un backup con cwm prima di fare le modifiche, al limite, se non volete o non potete, fate un backup almeno dei file che andrete a modificare (non penso che qualche errore generi un bootloop, ma non posso darvi l'assoluta certezza).
- Deodexed ROM.
- Tool per decompilare file .apk e .jar (per decompilare ogni apk del nostro cellulare, sappiamo tutti che è necessario installare prima i pacchetti framework, in questo caso framework-res.apk e SemcGenericUxpRes.apk che si trovano entrambi nella cartella /system/framework).
- File da modificare che sono: android.policy.jar (che si trova in /system/framework) e SystemUI.apk (che si trova in /system/apk)
- Notepad++ (altamente consigliato) per modificare i valori.
Dunque nei vari codici verranno indicate diverse parti con diversi colori:
BLU: caratteri da ricercare con lo strumento prova
ROSSA: parte di codice da rimuovere
VERDE: parte di codice da aggiungere
Preciso che chi ha scritto questa guida possiede un Xperia Sola (Sole in Italia ) e che quindi alcuni numeri di linee di codice non possono corrispondere con quelle del nostro telefono, per questo è necessario fare attenzione al contenuto a non alle linee.
Aggiungo inoltre che alcune parti da noi possono non essere presenti e quindi è sufficiente proseguire oltre nella guida
- Decompilare android.policy.jar e aprire android.policy\smali\com\android\internal\policy\i mpl\PhoneWindowManager.smali
codice:.line 2552 iget v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mSystemTop:I iput v0, p1, Landroid/graphics/Rect;->top:I .line 2553 iget v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mSystemRight:I iput v0, p1, Landroid/graphics/Rect;->right:I .line 2554 iget v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mSystemBottom:I iput v0, p1, Landroid/graphics/Rect;->bottom:I .line 2555 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 2557 :goto_0 return v0 .line 2556 :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 2557 :cond_1 const/4 v0, 0x0 goto :goto_0 const/4 v0, 0x0 return v0 .end method- Ricompilare android.policy.jar
- Decompilare SystemUI.apk e aprire \SystemUI\res\values\drawables.xml
Voi dovreste trovare questi valori e per modificare la trasparenza dovrete modificare il codice esadecimale (in entrambi), sostituendo le 2 "f" con il valore corrispondente alla trasparenza che volete.codice:<item type="drawable" name="status_bar_background">#ff000000</item> <item type="drawable" name="system_bar_background">#ff000000</item>
L'autore del topic in xda spiega anche il calcolo da fare per trovare il valore della trasparenza voluta.
2,55 х (100-20%)=204 (per trasparenza al 20%)
Questo valore va poi ricercato in questa tabella e va utilizzato il valore corrispondente in esadecimale nel codice.
Io però consiglio invece di usare paint.net, per ottenere in un modo più immediato il valore della trasparenza da inserire, in questo modo si riesce anche a prevedere il risultato finale
Spoiler:
- Aprire \SystemUI\res\layout\navigation_bar.xml
Sostituite di nuovo le "f" con il valore che desiderate.codice:<com.android.systemui.statusbar.phone.NavigationBarView android:background="#ff000000" android:layout_width="fill_parent" android:layout_height="fill_parent" android:directionality="none" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui"> (android:background)- Aprire SystemUI\smali\com\android\systemui\statusbar\phon e\PhoneStatusBar.smali e cercare "IIIII" (senza le virgolette).
Cercare poi "showNav" o "mPixelFormat:I".codice:const/16 v3, 0x7e3 const v4, 0x4800068 const/4 v5, -0x3 move v2, v1 move v5, v1 invoke-direct/range {v0 .. v5}, Landroid/view/WindowManager$LayoutParams;-><init>(IIIII)V
codice:.line 417 .end local v3 #showNav:Z :cond_1 :goto_2 const/4 v5, -0x3 (o const/4 v9, -0x3 per l'Xperia Z) iput v13, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mPixelFormat:I- Compilare SystemUI.apk
- Sostituire nel telefono i file originali con quelli modificati.
I problemi che POSSONO sorgere sono:
- Degli errori di visualizzazione della navigation bar, come accade in questo screenshot nelle parti laterali, che si risolvono subito dopo aver premeto un tasto qualunque sempre sulla navigation bar.
Spoiler:
- Il tasto, applicazioni recenti, dopo essere stato premuto, a volte mantiene il classico "alone bianco" come se fosse bloccato, in realtà, basta premere di nuovo e torna tutto ok.
Un problema che invece SORGE sicuramente è questo:
Spoiler:
Ma niente paura, esiste la soluzione a quest'ultimo problema, con questi risultati ():
Spoiler:
Basterà seguire questa guida (https://www.androidiani.com/forum/mo...ockscreen.html) presa da xda (come sempre) e tradotta da me.
Spero che questa guida sia di aiuto
Se qualcuno dovesse riscontrare qualche problema me lo segnali, perché, seppur sia stata messa nella sezione dell'Xperia T, su xda, chi l'ha fatta, possiede l'Xperia Sola (Sole, il nome italiano).
Io comunque per il momento grossi problemi non ne ho riscontrati a parte quelli sopracitati