Visualizzazione stampabile
-
Buongiorno, Buon Natale e Buon Anno,
Volevo proporvi oggi una guida carina carina su come centrare l'orologio nella vostra statusbar;
Perché un'altra?! Ve lo dirò; ma andiamo a capo [citazione famosa, 100$ chi la indovina]
Penso che questa sia una guida un po' più seria, non di certo perché la sto scrivendo io, in quanto l'originale è quella di Ticklefish al seguente indirizzo: [TUT] How To Center The Clock On The Statusbar..And Move Other Icons As Well!, ma perché seguendola non avrete quei fastidiosissimi problemi di sovrapposizione del testo, ad esempio quando arriva un messaggio, come fa ben notare l'autore della guida in questa immagine (overlap=sovrapposizione)
Ci sono due metodi uno più SEMPLICE e uno più complesso ma che definiremo il MIGLIORE
Perché scegliere il più complesso?
Guardate:
Metodo Semplice
Metodo Migliore
Metodo Semplice
- Decompiliamo il SystemUI.apk della nostra ROM DEODEXED(!!!)
- Apriamo il file /res/layout/tw_status_bar.xml
- Ignoriamo le prime e le ultime righe e prendiamo in considerazione queste:
codice:
<LinearLayout android:orientation="horizontal" android:id="@id/icons" android:paddingLeft="0.0dip" android:paddingRight="2.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent">
……[fino a]
<com.android.systemui.statusbar.policy.Clock android:textSize="@dimen/status_bar_clock_text_size" android:textColor="#ff959595" android:ellipsize="none" android:gravity="left|center" android:id="@id/clock" android:paddingLeft="3.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" android:includeFontPadding="false" />
</LinearLayout>
</LinearLayout>
Cosa ci interessa??
Beh, se conosciamo un pochino di inglese possiamo immaginare che la riga da spostare sia quella del "Clock" (=orologio);
codice:
<com.android.systemui.statusbar.policy.Clock android:textSize="@dimen/status_bar_clock_text_size" android:textColor="#ff959595" android:ellipsize="none" android:gravity="left|center" android:id="@id/clock" android:paddingLeft="3.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" android:includeFontPadding="false" />
prima rimuoviamo la parte "left|" poi spostiamo la riga da li e la mettiamo sotto la riga
codice:
<ImageView android:id="@id/notification_lights_out" android:paddingLeft="6.0dip" android:paddingBottom="2.0dip" android:visibility="gone" android:layout_width="@dimen/status_bar_icon_size" android:layout_height="fill_parent" android:src="@drawable/ic_sysbar_lights_out_dot_small" android:scaleType="center" />
che è la prima che abbiamo ignorato e che non modificheremo.
Così il vostro orologio sarà al centro della statusbar, già finito?!
No, perché, come già detto, questa è una guida seria e per fare una bella cosa come quella del primo screenshot abbiamo bisogno di un altra riga:
codice:
<LinearLayout android:background="@drawable/status_bar_background" android:orientation="horizontal" android:id="@id/ticker" android:paddingLeft="6.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:animationCache="false">
A che serve?
Semplicemente (beh, circa) questa riga dice alla status bar di "coprire l'orologio" all'arrivo di una notifica così da non sovrapporre il testo (ad esempio di un messaggio) con quello dell'ora
Dove la mettiamo?
La prima l'abbiamo messa in cima, allora questa in fondo rotfl
Al fine di avere qualcosa del tipo..
codice:
<com.android.systemui.statusbar.policy.Clock android:textSize="@dimen/status_bar_clock_text_size" android:textColor="#ff959595" android:ellipsize="none" android:gravity="center" android:id="@id/clock" android:paddingLeft="3.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" android:includeFontPadding="false" />
<LinearLayout android:orientation="horizontal" android:id="@id/icons" android:paddingLeft="0.0dip" android:paddingRight="2.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent">
<LinearLayout android:orientation="horizontal" android:id="@id/left_icons" android:paddingLeft="4.0dip" android:layout_width="0.0dip" android:layout_height="fill_parent" android:layout_weight="1.0">
<TextView android:textSize="15.0dip" android:gravity="center_vertical" android:id="@id/carrierLabel" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" />
<ImageView android:id="@id/operatorLogoIcon" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="fill_parent" android:src="@drawable/tw_stat_notify_operator_logo" />
<ImageView android:id="@id/doNotDisturbIcon" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/tw_dnd" android:alpha="0.7" android:scaleX="0.85" android:scaleY="0.85" />
<com.android.systemui.statusbar.StatusBarIconView android:id="@id/moreIcon" android:visibility="gone" android:layout_width="@dimen/status_bar_icon_size" android:layout_height="fill_parent" android:src="@drawable/stat_notify_more" />
<com.android.systemui.statusbar.phone.IconMerger android:gravity="center_vertical" android:orientation="horizontal" android:id="@id/notificationIcons" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_alignParentLeft="true" />
</LinearLayout>
<LinearLayout android:orientation="horizontal" android:id="@id/right_icons" android:paddingRight="4.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_alignParentRight="true">
<LinearLayout android:gravity="center_vertical" android:orientation="horizontal" android:id="@id/statusIcons" android:layout_width="wrap_content" android:layout_height="fill_parent" />
<LinearLayout android:gravity="center" android:orientation="horizontal" android:id="@id/signal_battery_cluster" android:paddingLeft="2.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent">
<include android:id="@id/signal_cluster" android:layout_width="wrap_content" android:layout_height="wrap_content" layout="@layout/tw_signal_cluster_view" />
<TextView android:textSize="12.0dip" android:textColor="#ffa6a6a6" android:layout_gravity="center" android:id="@id/battery_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/status_bar_network_name_separator" />
<ImageView android:gravity="center" android:id="@id/battery" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout android:background="@drawable/status_bar_background" android:orientation="horizontal" android:id="@id/ticker" android:paddingLeft="6.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:animationCache="false">
Fatto?!?
Sì, ricompiliamo e firmiamo l'apk, poi lo mettiamo in /system/app e…crash ovunque :D :D rotfl rotfl
Speriamo di no
(la guida continua al prossimo post)
-
Metodo Migliore
Ovviamente anche in questo caso partiamo col decompilare il SystemUI.apk e modifichiamo il file /res/layout/tw_status_bar.xml
Quello che faremo sarà creare tre diverse zone che potremo gestire come meglio vorremo:
Qualcosa del tipo:
Quote:
<LinearLayout android:orientation="horizontal" android:id="@id/icons" android:paddingLeft="0.0dip" android:paddingRight="0.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent">
Quote:
<LinearLayout android:orientation="horizontal" android:id="@+id/left_icons" android:paddingLeft="0.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1.0">
ELEMENTI A SINISTRA
</LinearLayout>
Quote:
ELEMENTI AL CENTRO
Quote:
<RelativeLayout android:id="@+id/right_icons" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1.0">
<LinearLayout android:orientation="horizontal" android:id="@+id/inside_right_icons" android:paddingRight="0.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_alignParentRight="true">
ELEMENTI A DESTRA
</LinearLayout>
</RelativeLayout>
</LinearLayout>
Prendiamo il nostro orologio facendo una piccola modifica
codice:
<com.android.systemui.statusbar.policy.Clock android:textSize="@dimen/status_bar_clock_text_size" android:textColor="#ff959595" android:ellipsize="none" android:gravity="left|center" android:id="@id/clock" android:paddingLeft="3.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" android:includeFontPadding="false" />
Andiamo ora ad aggiungere un po di elementi (semplice, no?! rotfl) e otterremo qualcosa del tipo:
codice:
<?xml version="1.0" encoding="utf-8"?>
<com.android.systemui.statusbar.phone.PhoneStatusBarView android:orientation="vertical" android:id="@id/status_bar" android:background="@drawable/status_bar_background" android:focusable="true" android:fitsSystemWindows="true" android:descendantFocusability="afterDescendants"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui">
<ImageView android:id="@id/notification_lights_out" android:paddingLeft="0.0dip" android:paddingBottom="0.0dip" android:visibility="gone" android:layout_width="@dimen/status_bar_icon_size" android:layout_height="fill_parent" android:src="@drawable/ic_sysbar_lights_out_dot_small" android:scaleType="center" />
<LinearLayout android:orientation="horizontal" android:id="@id/icons" android:paddingLeft="0.0dip" android:paddingRight="0.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent">
<LinearLayout android:orientation="horizontal" android:id="@+id/left_icons" android:paddingLeft="0.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1.0">
<TextView android:textSize="15.0dip" android:gravity="center_vertical" android:id="@id/carrierLabel" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" />
<ImageView android:id="@id/operatorLogoIcon" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="fill_parent" android:src="@drawable/tw_stat_notify_operator_logo" />
<ImageView android:id="@id/doNotDisturbIcon" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/tw_dnd" android:alpha="0.7" android:scaleX="0.85" android:scaleY="0.85" />
<com.android.systemui.statusbar.StatusBarIconView android:id="@id/moreIcon" android:visibility="gone" android:layout_width="@dimen/status_bar_icon_size" android:layout_height="fill_parent" android:src="@drawable/stat_notify_more" />
<com.android.systemui.statusbar.phone.IconMerger android:gravity="center_vertical" android:orientation="horizontal" android:id="@id/notificationIcons" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_alignParentLeft="true" />
</LinearLayout>
<com.android.systemui.statusbar.policy.Clock android:textSize="@dimen/status_bar_clock_text_size" android:textColor="#ffa6a6a6" android:ellipsize="none" android:gravity="center" android:id="@id/clock" android:paddingLeft="0.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" android:includeFontPadding="false" />
<RelativeLayout android:id="@+id/right_icons" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1.0">
<LinearLayout android:orientation="horizontal" android:id="@+id/inside_right_icons" android:paddingRight="0.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_alignParentRight="true">
<LinearLayout android:gravity="center_vertical" android:orientation="horizontal" android:id="@id/statusIcons" android:layout_width="wrap_content" android:layout_height="fill_parent" />
<LinearLayout android:gravity="center" android:orientation="horizontal" android:id="@id/signal_battery_cluster" android:paddingLeft="0.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent">
<include android:id="@id/signal_cluster" android:layout_width="wrap_content" android:layout_height="wrap_content" layout="@layout/tw_signal_cluster_view" />
<TextView android:textSize="12.0dip" android:textColor="#ffa6a6a6" android:layout_gravity="center" android:id="@id/battery_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/status_bar_network_name_separator" />
<ImageView android:gravity="center" android:id="@id/battery" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
</LinearLayout>
<LinearLayout android:orientation="horizontal" android:id="@id/ticker" android:paddingLeft="0.0dip" android:animationCache="false" android:layout_width="fill_parent" android:layout_height="fill_parent">
<ImageSwitcher android:id="@id/tickerIcon" android:layout_width="@dimen/status_bar_icon_size" android:layout_height="@dimen/status_bar_icon_size" android:layout_marginRight="4.0dip">
<com.android.systemui.statusbar.AnimatedImageView android:layout_width="@dimen/status_bar_icon_size" android:layout_height="@dimen/status_bar_icon_size" android:scaleType="centerInside" />
<com.android.systemui.statusbar.AnimatedImageView android:layout_width="@dimen/status_bar_icon_size" android:layout_height="@dimen/status_bar_icon_size" android:scaleType="centerInside" />
</ImageSwitcher>
<com.android.systemui.statusbar.phone.TickerView android:id="@id/tickerText" android:paddingTop="0.0dip" android:paddingRight="0.0dip" android:layout_width="0.0dip" android:layout_height="wrap_content" android:layout_weight="1.0">
<TextView android:textAppearance="@style/TextAppearance.StatusBar.PhoneTicker" android:id="@id/ticker_text_view_old" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" />
<TextView android:textAppearance="@style/TextAppearance.StatusBar.PhoneTicker" android:id="@id/ticker_text_view_new" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" />
</com.android.systemui.statusbar.phone.TickerView>
</LinearLayout>
</com.android.systemui.statusbar.phone.PhoneStatusBarView>
Ho aggiunto dei colori, lo so sono brutti ma penso aiutino a visualizzare meglio le modifiche, in rosso,
Quote:
"@+id/inside_right_icons"
l'id che abbiamo aggiunto, è necessario e importante, con lo stesso colore vi ho evidenziato anche l'orologio, nel caso non riusciste a vederlo in mezzo a tutto quel codice. In grigio le parti "ignorate" (Non cancellatele però!!)
mmm…era così difficile?! (sapeste che ho combinato io per riuscire ad avere l'orologio centrato con questo metodo :D:D rotfl rotfl )
Ecco il risultato
-
altro post che non sono sicuro di usare ma per sicurezza….
-
Cosa ne pensate di UOT kitchen? A me con la cyano 11 non funziona...
-
1 allegato(i)
Quote:
Originariamente inviato da
Sammy854
Cosa ne pensate di UOT kitchen? A me con la cyano 11 non funziona...
temo non sia supportato Allegato 95880
-
Infatti... Che tu sappia c'è qualcosa di simile?
-
Quote:
Originariamente inviato da
Sammy854
Infatti... Che tu sappia c'è qualcosa di simile?
Ehm.. Un esempio è il tool che l'autore della guida che ho appena scritto (c'è il link ad xda all'inizio) ha fatto.. Si chiama Tickle my droid (o android) ma non so se supporta KitKat, poi non l'ho mai usato e non so bene che cosa faccia
-
Ragazzi domandona: ma come si lavora sulle librerie? Se apro lib ci sono una marea di file come faccio ad associarli a una determinata Apk? Cioè come riconosco se un determinato file appartiene a una apk piuttosto che un'altra?! Grazie
-
Quote:
Originariamente inviato da
bitterbean
Ragazzi domandona: ma come si lavora sulle librerie? Se apro lib ci sono una marea di file come faccio ad associarli a una determinata Apk? Cioè come riconosco se un determinato file appartiene a una apk piuttosto che un'altra?! Grazie
Prevalentemente dal nome...
-
e' forse una citazione di Pietro Verri?
comunque a mio paprere (non prendetelo come un insulto) esistono gia' centinaia di guide riguardo al modding ([DEV][MODDING] CRT, Airview, 4-way reboot, ink effect, phone, sms..etc [9/Dec/2013] - xda-developers) questa per esempio mi ha aiutato molto...
Non dico che sia inutile questo thread, assolutamente no! dico solo che sbattersi per fare una guida quando ce ne e' sono gia' mi sembra una perdita di tempo...poi se uno non sa l'inglese allora lo si puo' aiutare, ma come si sa sono prevalentemente i giovani che si imbattono nel modding quindi un minimo di inglese lo si sa :).
A mio parere sarebbe meglio un thread in cui raccogliere tutte le mod e i loro significati (ovviamente compatibili con i9070), semplicemente linkando il thread di xda. Mod che siano compatibili con tutte le rom. (ovviamente intendo mod e theming come le guide soprastanti).
Il mio e' sono un parere e un consiglio. fatene quello che volete :)