ffalete
15/06/14, 12:06:45
Bueno, siguiendo el concepto de android de compartir, y como veo que hay gente que le gusta cacharrear con sus telefonos pero por desconocimiento o por temor no suelen tocarlos, creo que seria bueno tener un punto de encuentro para poder aprender ha hacerlo.
Se aceptan aportaciones, Hace tiempo habia un post en el subforo del galaxy s3 que me encantaba, a mi y a mucha gente y no estaria mal tener algo parecido. Algunos ya sabeis del post que hablo.
Voy a empezar este post para poder enseñar, compartir, ayudar o lo que sea con los usuarios que lo deseen. Por favor, abstenerse de ensuciar el post en caso de que no te interese o no te guste el tema, Comentarios del tipo, xposed hace esto, xposed hace lo otro sobran, gracias.
Me gustaria que este post no fuera un tutorial para aprender a compilar y descompilar apks, creo que el que le interese deberia saber buscar informacion acerca del tema para poder hacerlo. Si quereis os pongo otro tutorial sencillo para aprender tambien, pero ya digo que no me gustaria.
Recordar que cada uno es responsable de lo que hace en su telefono, seamos un poco conscientes de lo que hacemos por favor.
Sin mas empezamos.
Vamos a empezar con el systemui que se puede modificar de mogollon de maneras.:ok:
para centrar el reloj
nos vamos a res/layout y abrimos el statusbar.xml, nos encontraremos algo como esto
<?xml version="1.0" encoding="utf-8"?>
<com.android.systemui.statusbar.phone.PhoneStatusBa rView android:orientation="vertical" android:id="@id/status_bar" android:background="@drawable/stat_sys_indi_bg" android:focusable="true" android:fitsSystemWindows="false" android:descendantFocusability="afterDescendants"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui">
<com.lge.systemui.StatusBarBackground android:id="@id/notification_background" android:layout_width="fill_parent" android:layout_height="fill_parent" />
<ImageView android:id="@id/notification_lights_out" 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" android:paddingStart="6.0dip" />
<com.lge.systemui.widget.StatusBarLinearLayout android:orientation="horizontal" android:id="@id/status_bar_contents" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layoutDirection="ltr" android:paddingStart="3.0dip" android:paddingEnd="3.0dip">
<com.lge.systemui.widget.OperatorTextView android:textStyle="bold" android:gravity="center_vertical" android:id="@id/operator_text" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" android:layoutDirection="ltr" android:paddingStart="2.0dip" android:paddingEnd="2.0dip" lge:textStroke="@bool/config_systemui_stroke_effect_text" lge:textStrokeWidth="0.5dip" lge:textStrokeColor="#b2000000"
xmlns:lge="http://schemas.android.com/apk/res/com.android.systemui" />
<LinearLayout android:orientation="horizontal" android:id="@id/notification_icon_area" android:layout_width="0.0dip" android:layout_height="fill_parent" android:layout_weight="1.0" android:layoutDirection="ltr">
<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:layoutDirection="ltr" android:layout_alignParentStart="true" />
</LinearLayout>
<LinearLayout android:orientation="horizontal" android:id="@id/statusIcons" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layoutDirection="ltr" />
<LinearLayout android:orientation="horizontal" android:id="@id/system_icon_area" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layoutDirection="ltr">
<LinearLayout android:orientation="horizontal" android:id="@id/signal_battery_cluster" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layoutDirection="ltr">
<com.lge.systemui.widget.VoLteImageView android:id="@id/volte_icon" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingStart="1.0dip" />
<include android:id="@id/signal_cluster" android:layout_width="wrap_content" android:layout_height="fill_parent" layout="@layout/signal_cluster_view" />
<com.lge.systemui.widget.TextViewStroke android:textSize="13.0dip" android:textColor="#ffffffff" android:gravity="center_vertical" android:id="@id/level_percent" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layoutDirection="ltr" android:paddingStart="1.0dip" android:paddingEnd="1.0dip" lge:textStrokeTicker="@bool/config_systemui_stroke_effect_text" lge:textStrokeWidthTicker="0.5dip" lge:textStrokeColorTicker="#b2000000"
xmlns:lge="http://schemas.android.com/apk/res/com.android.systemui" />
<ImageView android:id="@id/battery" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginStart="1.0dip" />
</LinearLayout>
<com.android.systemui.statusbar.policy.Clock android:textAppearance="@style/TextAppearance.StatusBar.Clock" android:textSize="17.0dip" android:textColor="#ffffffff" android:gravity="center_vertical" android:id="@id/clock" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" android:layout_marginEnd="4.0dip" lge:textStroke="@bool/config_systemui_stroke_effect_text" lge:textStrokeWidth="0.5dip" lge:textStrokeColor="#b2000000"
xmlns:lge="http://schemas.android.com/apk/res/com.android.systemui" />
</LinearLayout>
</com.lge.systemui.widget.StatusBarLinearLayout>
<LinearLayout android:orientation="horizontal" android:id="@id/ticker" android:animationCache="false" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layoutDirection="ltr" android:paddingStart="6.0dip">
<ImageSwitcher android:id="@id/tickerIcon" android:layout_width="@dimen/status_bar_icon_size" android:layout_height="@dimen/status_bar_icon_size" android:layout_marginEnd="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="fitCenter" />
<com.android.systemui.statusbar.AnimatedImageView android:layout_width="@dimen/status_bar_icon_size" android:layout_height="@dimen/status_bar_icon_size" android:scaleType="fitCenter" />
</ImageSwitcher>
<com.android.systemui.statusbar.phone.TickerView android:id="@id/tickerText" android:paddingTop="2.0dip" android:layout_width="0.0dip" android:layout_height="wrap_content" android:layout_weight="1.0" android:paddingEnd="10.0dip">
<com.lge.systemui.widget.TextViewStroke android:textAppearance="@style/TextAppearance.StatusBar.PhoneTicker" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" android:layoutDirection="ltr" lge:textStrokeTicker="@bool/config_systemui_stroke_effect_text" lge:textStrokeWidthTicker="0.5dip" lge:textStrokeColorTicker="#b2000000"
xmlns:lge="http://schemas.android.com/apk/res/com.android.systemui" />
<com.lge.systemui.widget.TextViewStroke android:textAppearance="@style/TextAppearance.StatusBar.PhoneTicker" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" android:layoutDirection="ltr" lge:textStrokeTicker="@bool/config_systemui_stroke_effect_text" lge:textStrokeWidthTicker="0.5dip" lge:textStrokeColorTicker="#b2000000"
xmlns:lge="http://schemas.android.com/apk/res/com.android.systemui" />
</com.android.systemui.statusbar.phone.TickerView>
</LinearLayout>
</com.android.systemui.statusbar.phone.PhoneStatusBa rView>
bien, vamos a centrarnos en la linea del reloj del statusbar.
Como podemos ver el reloj esta metido dentro de com.lge.systemui.widget.StatusBarLinearLayout que es el layout que engloba todos los iconos del statusbar. Para poder centrarlos solo tenemos que crear nuestro propio layout y sacarlo de donde esta. Con esto conseguiremos ponerlo donde queramos.
<?xml version="1.0" encoding="utf-8"?>
<com.android.systemui.statusbar.phone.PhoneStatusBa rView android:orientation="vertical" android:id="@id/status_bar" android:background="@drawable/stat_sys_indi_bg" android:focusable="true" android:fitsSystemWindows="false" android:descendantFocusability="afterDescendants"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui">
<com.lge.systemui.StatusBarBackground android:id="@id/notification_background" android:layout_width="fill_parent" android:layout_height="fill_parent" />
<ImageView android:id="@id/notification_lights_out" 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" android:paddingStart="6.0dip" />
<com.lge.systemui.widget.StatusBarLinearLayout android:orientation="horizontal" android:id="@id/status_bar_contents" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layoutDirection="ltr" android:paddingStart="3.0dip" android:paddingEnd="3.0dip">
<com.lge.systemui.widget.OperatorTextView android:textStyle="bold" android:gravity="center_vertical" android:id="@id/operator_text" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" android:layoutDirection="ltr" android:paddingStart="2.0dip" android:paddingEnd="2.0dip" lge:textStroke="@bool/config_systemui_stroke_effect_text" lge:textStrokeWidth="0.5dip" lge:textStrokeColor="#b2000000"
xmlns:lge="http://schemas.android.com/apk/res/com.android.systemui" />
<LinearLayout android:orientation="horizontal" android:id="@id/notification_icon_area" android:layout_width="0.0dip" android:layout_height="fill_parent" android:layout_weight="1.0" android:layoutDirection="ltr">
<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" />
<include android:id="@id/signal_cluster" android:layout_width="wrap_content" android:layout_height="fill_parent" layout="@layout/signal_cluster_view" />
<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:layoutDirection="ltr" android:layout_alignParentStart="true" />
</LinearLayout>
<LinearLayout android:orientation="horizontal" android:id="@id/statusIcons" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layoutDirection="ltr" />
<LinearLayout android:orientation="horizontal" android:id="@id/system_icon_area" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layoutDirection="ltr">
<LinearLayout android:orientation="horizontal" android:id="@id/signal_battery_cluster" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layoutDirection="ltr">
<com.lge.systemui.widget.VoLteImageView android:id="@id/volte_icon" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingStart="1.0dip" />
<com.lge.systemui.widget.TextViewStroke android:textSize="13.0dip" android:textColor="#ffffffff" android:gravity="center_vertical" android:id="@id/level_percent" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layoutDirection="ltr" android:paddingStart="1.0dip" android:paddingEnd="1.0dip" lge:textStrokeTicker="@bool/config_systemui_stroke_effect_text" lge:textStrokeWidthTicker="0.5dip" lge:textStrokeColorTicker="#b2000000"
xmlns:lge="http://schemas.android.com/apk/res/com.android.systemui" />
<ImageView android:id="@id/battery" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginStart="1.0dip" />
</LinearLayout>
</LinearLayout>
</com.lge.systemui.widget.StatusBarLinearLayout>
<LinearLayout android:gravity="center" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent">
<com.android.systemui.statusbar.policy.Clock android:textAppearance="@style/TextAppearance.StatusBar.Clock" android:textSize="17.0dip" android:textColor="#ffffffff" android:gravity="center_vertical" android:id="@id/clock" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" android:layout_marginEnd="4.0dip" lge:textStroke="@bool/config_systemui_stroke_effect_text" lge:textStrokeWidth="0.5dip" lge:textStrokeColor="#b2000000"
xmlns:lge="http://schemas.android.com/apk/res/com.android.systemui" />
</LinearLayout>
<LinearLayout android:orientation="horizontal" android:id="@id/ticker" android:animationCache="false" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layoutDirection="ltr" android:paddingStart="6.0dip">
<ImageSwitcher android:id="@id/tickerIcon" android:layout_width="@dimen/status_bar_icon_size" android:layout_height="@dimen/status_bar_icon_size" android:layout_marginEnd="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="fitCenter" />
<com.android.systemui.statusbar.AnimatedImageView android:layout_width="@dimen/status_bar_icon_size" android:layout_height="@dimen/status_bar_icon_size" android:scaleType="fitCenter" />
</ImageSwitcher>
<com.android.systemui.statusbar.phone.TickerView android:id="@id/tickerText" android:paddingTop="2.0dip" android:layout_width="0.0dip" android:layout_height="wrap_content" android:layout_weight="1.0" android:paddingEnd="10.0dip">
<com.lge.systemui.widget.TextViewStroke android:textAppearance="@style/TextAppearance.StatusBar.PhoneTicker" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" android:layoutDirection="ltr" lge:textStrokeTicker="@bool/config_systemui_stroke_effect_text" lge:textStrokeWidthTicker="0.5dip" lge:textStrokeColorTicker="#b2000000"
xmlns:lge="http://schemas.android.com/apk/res/com.android.systemui" />
<com.lge.systemui.widget.TextViewStroke android:textAppearance="@style/TextAppearance.StatusBar.PhoneTicker" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" android:layoutDirection="ltr" lge:textStrokeTicker="@bool/config_systemui_stroke_effect_text" lge:textStrokeWidthTicker="0.5dip" lge:textStrokeColorTicker="#b2000000"
xmlns:lge="http://schemas.android.com/apk/res/com.android.systemui" />
</com.android.systemui.statusbar.phone.TickerView>
</LinearLayout>
</com.android.systemui.statusbar.phone.PhoneStatusBa rView>
Como podeis ver he sacado del layout del widget el reloj y le he colocado un layout nuevo por fuera de este para poder colocarlo donde me de la gana, en este caso en el centro.
Estando aqui, se puede aprovechar y cambiar el color del reloj, seria muy sencillo, simplemente cambiar el codigo de color que sale en la linea del reloj, que esta en hexadecimal por el el que queramos y listo. (ffffffff, lo cambiamos por el color que queramos)
Compilamos y a correr, ya tenemos el reloj centrado.
Para cambiar la cortina
Para esto es mucho mas sencillo aun, pero podemos complicarlo un poco y poder tirar de unos modulos para xposed que tengo fabricados que a mi personalmente me encantan,
el metodo sencillo para colocar una imagen en la cortina, seria tan sencillo como ir a res/layout y abrir status_bar_expanded.xml
En la segunda linea del xml nos encontramos algo asi
<com.android.systemui.statusbar.phone.NotificationP anelView android:id="@id/notification_panel" android:background="@color/bg_expanded" android:paddingTop="@dimen/notification_panel_padding_top" android:layout_width="0.0dip" android:layout_height="wrap_content" android:layout_marginStart="@dimen/notification_panel_margin_left"
La parte coloreada en rojo es el fondo de la cortina. si siguieramos la ruta del color nos encontrariamos con que es un fondo semitransparente que bien podriamos modificar a nuestro gusto pero sin poder ponerle una imagen. Lo que nos interesa en poner imagen, asi que cambiariamos la parte coloreada por este sencillo parametro
<com.android.systemui.statusbar.phone.NotificationP anelView android:id="@id/notification_panel" android:background="@drawable/animacion1" android:paddingTop="@dimen/notification_panel_padding_top" android:layout_width="0.0dip" android:layout_height="wrap_content" android:layout_marginStart="@dimen/notification_panel_margin_left"
Si os fijais he cambiado el @color/bg_expanded ( que es el color que comentaba antes, situado en el values) por un drawable que es la imagen que quiero poner. Le puesto animacion1 para poder hacer una cortina animada que mas adelante explicare como hacer.
Bien, una vez echo esto, vamos a la carpeta res/drawable-xxhdpi y metemos dentro un png de una resolucion maxima de 1080x1920 con el nombre que hemos puesto antes, en este caso animacion1.png.
compilamos y a correr, ya tenemos nuestra cortina personalizada.
Cortina animada
ahora bien, si queremos poner una cortina animada, es tan sencillo como añadir un xml nuevo en la carpeta drawable. Vamos a ello.
nos bajamos 537895 que es el xml que contiene la animacion.Nos encontraremos algo como esto
<?xml version="1.0" encoding="utf-8"?>
<animation-list android:oneshot="false"
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:duration="120" android:drawable="@drawable/falete_cortina1" />
</animation-list>
falete_cortina1 es el nombre del png que debemos meter en drawable-xxhdpi como haciamos antes. Asi que crearemos un png de 400x711 pixeles de resolucion como mucho y la pondremos de nombre falete_cortina1.png
En este caso tambien deberemos modificar el statusbar_expanded.xml como haciamos antes, pero como ya lo hicimos y pusimos animacion1, pues ya lo tenemos preparado, sencillo verdad?
compilar y a correr, ya tenemos todo preparado para poner la cortina animada.
aqui solo hemos puesto una imagen porque recientemente cree el modulo de xposed para no tener que sobrecargar el systemui.apk, pero bien se podria hacer todo ahi, tendriamos que meter las imagenes, compilar, descompilar, ampliar el xml de la animacion, meter las imagenes, bla bla bla, mas complicado todo, creo que asi es mucho mas sencillo
Mas adelante os explico como se modificarian los modulos de las cortinas para que podais haceroslas a vuestro gusto. De momento lo dejamos asi, preparado para poder ponerlo.
aqui unas cuantas cortinas aqui (https://www.wuala.com/Ffalrom/chismes%20de%20ffalete/Cortinas%20animadas/?key=E9Ihf4Oopu6Z). Para activarlas, bajarla, instalar como una apk normal y activarla en el xposed. reiniciar y listo. para quitarla, tan sencillo como desactivar el modulo de xposed y reiniciar.
Seguimos pues.
para quitar el botoncito de borrar cuando salen notificaciones
Para esto es algo mas lioso si queremos hacerlo bien, aunque ya tenemos un icono para esto integrado en el systemui vamos a ponerle dos iconos.
nos vamos a res/layout y abrimos status_bar_expanded_setting_layout.xml y nos encontraremos algo asi.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@id/setting_layout_normal" android:background="@drawable/indi_noti_list_title_bg" android:layout_width="fill_parent" android:layout_height="@dimen/setting_layout_height" android:layoutDirection="ltr"
xmlns:android="http://schemas.android.com/apk/res/android">
<TextView android:textSize="16.0dip" android:textStyle="bold" android:textColor="@color/np_date" android:gravity="center_vertical" android:id="@id/notification_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/status_bar_latest_events_title" android:shadowColor="#88000000" android:shadowDx="1.0" android:shadowDy="1.0" android:shadowRadius="1.33" android:layout_centerVertical="true" android:paddingStart="8.659973dip" android:layout_alignParentStart="true" />
<TextView android:textSize="@dimen/setting_divider_clear_text_size" android:textStyle="bold" android:textColor="@color/np_clear_all" android:gravity="center" android:id="@id/clear_all_button" android:background="@drawable/indi_noti_btn_clear" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/status_bar_clear_all_button" android:layout_centerVertical="true" android:contentDescription="@string/accessibility_clear_all_notification" android:paddingStart="@dimen/clear_padding_left" android:paddingEnd="@dimen/clear_padding_right" android:layout_marginEnd="@dimen/clear_margin_right" android:layout_alignParentEnd="true" />
</RelativeLayout>
Nos centramos en la linea marcada en rojo. Este es el boton propiamente dicho, con sus margenes y demas. Bueno, pues borramos la linea, sin miedo, la borramos entera y nos quedara algo asi
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@id/setting_layout_normal" android:background="@drawable/indi_noti_list_title_bg" android:layout_width="fill_parent" android:layout_height="@dimen/setting_layout_height" android:layoutDirection="ltr"
xmlns:android="http://schemas.android.com/apk/res/android">
<TextView android:textSize="16.0dip" android:textStyle="bold" android:textColor="@color/np_date" android:gravity="center_vertical" android:id="@id/notification_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/status_bar_latest_events_title" android:shadowColor="#88000000" android:shadowDx="1.0" android:shadowDy="1.0" android:shadowRadius="1.33" android:layout_centerVertical="true" android:paddingStart="8.659973dip" android:layout_alignParentStart="true" />
</RelativeLayout>
Ahora vamos a colocar el boton que queremos. Abrimos en res/layout status_bar_expanded_header.xml y veremos esto
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:gravity="bottom" android:orientation="horizontal" android:id="@id/header" android:background="@drawable/indi_noti_settings_bg" android:layout_width="fill_parent" android:layout_height="@dimen/notification_panel_header_height" android:baselineAligned="false"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui">
<RelativeLayout android:enabled="false" android:id="@id/datetime" android:background="@drawable/indi_noti_datetime_bg" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1.0" android:paddingStart="6.659973dip" android:paddingEnd="0.0dip">
<com.android.systemui.statusbar.policy.Clock android:textSize="29.0dip" android:textStyle="normal" android:textColor="@color/np_clock" android:id="@id/clock" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="@dimen/notification_panel_clock_padding_top" android:singleLine="true" android:layout_marginEnd="10.0dip" />
<com.android.systemui.statusbar.policy.DateView android:textSize="14.669983dip" android:textStyle="normal" android:textColor="#ffa9adb3" android:id="@id/date" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" android:layout_weight="1.0" android:layout_alignBaseline="@id/clock" android:layout_toEndOf="@id/clock" />
</RelativeLayout>
<Space android:layout_width="0.0dip" android:layout_height="0.0dip" android:layout_weight="1.0" />
<TextView android:textSize="11.0dip" android:textStyle="bold" android:textColor="#ff00a040" android:layout_gravity="center_vertical" android:id="@id/header_debug_info" android:padding="2.0dip" android:visibility="invisible" android:layout_width="0.0dip" android:layout_height="wrap_content" android:fontFamily="sans-serif-condensed" />
<FrameLayout android:id="@id/settings_button_holder" android:layout_width="@dimen/notification_panel_header_height" android:layout_height="@dimen/notification_panel_header_height" android:layout_marginStart="0.0dip" android:layout_marginEnd="11.329987dip">
<ImageView android:id="@id/settings_button" android:layout_width="@dimen/notification_panel_header_height" android:layout_height="@dimen/notification_panel_header_height" android:src="@drawable/ic_notify_settings_set" android:scaleType="center" android:contentDescription="@string/accessibility_system_settings_button" />
<ImageView android:id="@id/notification_button" android:visibility="gone" android:layout_width="@dimen/notification_panel_header_height" android:layout_height="@dimen/notification_panel_header_height" android:src="@drawable/ic_notify_settings_set" android:scaleType="center" android:contentDescription="@string/accessibility_notifications_button" />
</FrameLayout>
</LinearLayout>
bueno, pues modificamos un poco y lo dejamos tal que asi añadiendo la linea del boton
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:gravity="bottom" android:orientation="horizontal" android:id="@id/header" android:background="@drawable/indi_noti_settings_bg" android:layout_width="fill_parent" android:layout_height="@dimen/notification_panel_header_height" android:baselineAligned="false"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui">
<RelativeLayout android:enabled="false" android:id="@id/datetime" android:background="@drawable/indi_noti_datetime_bg" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1.0" android:paddingStart="6.659973dip" android:paddingEnd="0.0dip">
<com.android.systemui.statusbar.policy.Clock android:textSize="29.0dip" android:textStyle="normal" android:textColor="@color/np_clock" android:id="@id/clock" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="@dimen/notification_panel_clock_padding_top" android:singleLine="true" android:layout_marginEnd="10.0dip" />
<com.android.systemui.statusbar.policy.DateView android:textSize="14.669983dip" android:textStyle="normal" android:textColor="#ffa9adb3" android:id="@id/date" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" android:layout_weight="1.0" android:layout_alignBaseline="@id/clock" android:layout_toEndOf="@id/clock" />
</RelativeLayout>
<Space android:layout_width="0.0dip" android:layout_height="0.0dip" android:layout_weight="1.0" />
<ImageView android:id="@id/clear_all_button" android:layout_width="@dimen/notification_panel_header_height" android:layout_height="@dimen/notification_panel_header_height" android:src="@drawable/ic_notify_clear" android:contentDescription="@string/accessibility_home" systemui:glowBackground="@drawable/ic_sysbar_highlight" />
<TextView android:textSize="11.0dip" android:textStyle="bold" android:textColor="#ff00a040" android:layout_gravity="center_vertical" android:id="@id/header_debug_info" android:padding="2.0dip" android:visibility="invisible" android:layout_width="0.0dip" android:layout_height="wrap_content" android:fontFamily="sans-serif-condensed" />
<FrameLayout android:id="@id/settings_button_holder" android:layout_width="@dimen/notification_panel_header_height" android:layout_height="@dimen/notification_panel_header_height" android:layout_marginStart="0.0dip" android:layout_marginEnd="11.329987dip">
<ImageView android:id="@id/settings_button" android:layout_width="@dimen/notification_panel_header_height" android:layout_height="@dimen/notification_panel_header_height" android:src="@drawable/ic_notify_settings_set" android:scaleType="center" android:contentDescription="@string/accessibility_system_settings_button" />
<ImageView android:id="@id/notification_button" android:visibility="gone" android:layout_width="@dimen/notification_panel_header_height" android:layout_height="@dimen/notification_panel_header_height" android:src="@drawable/ic_notify_settings_set" android:scaleType="center" android:contentDescription="@string/accessibility_notifications_button" />
</FrameLayout>
</LinearLayout>
como veis he metido una linea nueva. Aprovecho las medidas de los margenes para dejarlo igual que el boton de los ajustes y que quede todo centrado en su sitio, podria explicaros mas, o hacer mis propios margenes y demas, pero creo que asi es menos lioso todo.
Bueno, podriamos dejarlo aqui, compilar y a correr, pero tambien quiero que al pulsar el boton cambie de color como hace el boton de los ajustes, para darle un toque mas profesional al asunto. Para esto vamos a ello
abrimos res/drawable ic_notify_clear.xml y nos encontraremos con algo asi
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/ic_notify_clear_pressed" />
<item android:drawable="@drawable/ic_notify_clear_normal" />
</selector>
yo aqui ya tengo modificado el asunto. El que esta en rojo es como os encontrareis los dos , bueno, pues cambiais el pressed y lo dejais tal como esta ahi.
ahora vais a res/drawable-xxhdpi y vereis que teneis ese icono (ic_notifi_clear_normal), bueno, pues lo duplicais y con el photoshop o el programa que useis lo editais y lo dejais azul o rojo o como os de la gana. este sera el icono que se vera cuando pulseis el boton para borrar las notificaciones.
Ya esta todo.
compilais y a correr, ya teneis el boton de borrar tipo aosp.
cambiar de posicion la cobertura y el wifi
Bien, con este vamos a cambiar de posicion los iconos del statusbar de la cobertura y el wifi para pasarlos al lado izquierdo. Amos al lio.
nos vamos a res/layout y abrimos el status_bar.xml
nos encontraermos con esto.
<?xml version="1.0" encoding="utf-8"?>
<com.android.systemui.statusbar.phone.PhoneStatusBa rView android:orientation="vertical" android:id="@id/status_bar" android:background="@drawable/stat_sys_indi_bg" android:focusable="true" android:fitsSystemWindows="false" android:descendantFocusability="afterDescendants"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui">
<com.lge.systemui.StatusBarBackground android:id="@id/notification_background" android:layout_width="fill_parent" android:layout_height="fill_parent" />
<ImageView android:id="@id/notification_lights_out" 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" android:paddingStart="6.0dip" />
<com.lge.systemui.widget.StatusBarLinearLayout android:orientation="horizontal" android:id="@id/status_bar_contents" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layoutDirection="ltr" android:paddingStart="3.0dip" android:paddingEnd="3.0dip">
<com.lge.systemui.widget.OperatorTextView android:textStyle="bold" android:gravity="center_vertical" android:id="@id/operator_text" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" android:layoutDirection="ltr" android:paddingStart="2.0dip" android:paddingEnd="2.0dip" lge:textStroke="@bool/config_systemui_stroke_effect_text" lge:textStrokeWidth="0.5dip" lge:textStrokeColor="#b2000000"
xmlns:lge="http://schemas.android.com/apk/res/com.android.systemui" />
<LinearLayout android:orientation="horizontal" android:id="@id/notification_icon_area" android:layout_width="0.0dip" android:layout_height="fill_parent" android:layout_weight="1.0" android:layoutDirection="ltr">
<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:layoutDirection="ltr" android:layout_alignParentStart="true" />
</LinearLayout>
<LinearLayout android:orientation="horizontal" android:id="@id/statusIcons" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layoutDirection="ltr" />
<LinearLayout android:orientation="horizontal" android:id="@id/system_icon_area" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layoutDirection="ltr">
<LinearLayout android:orientation="horizontal" android:id="@id/signal_battery_cluster" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layoutDirection="ltr">
<com.lge.systemui.widget.VoLteImageView android:id="@id/volte_icon" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingStart="1.0dip" />
<include android:id="@id/signal_cluster" android:layout_width="wrap_content" android:layout_height="fill_parent" layout="@layout/signal_cluster_view" />
<com.lge.systemui.widget.TextViewStroke android:textSize="13.0dip" android:textColor="#ffffffff" android:gravity="center_vertical" android:id="@id/level_percent" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layoutDirection="ltr" android:paddingStart="1.0dip" android:paddingEnd="1.0dip" lge:textStrokeTicker="@bool/config_systemui_stroke_effect_text" lge:textStrokeWidthTicker="0.5dip" lge:textStrokeColorTicker="#b2000000"
xmlns:lge="http://schemas.android.com/apk/res/com.android.systemui" />
<ImageView android:id="@id/battery" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginStart="1.0dip" />
</LinearLayout>
<com.android.systemui.statusbar.policy.Clock android:textAppearance="@style/TextAppearance.StatusBar.Clock" android:textSize="17.0dip" android:textColor="#ffffffff" android:gravity="center_vertical" android:id="@id/clock" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" android:layout_marginEnd="4.0dip" lge:textStroke="@bool/config_systemui_stroke_effect_text" lge:textStrokeWidth="0.5dip" lge:textStrokeColor="#b2000000"
xmlns:lge="http://schemas.android.com/apk/res/com.android.systemui" />
</LinearLayout>
</com.lge.systemui.widget.StatusBarLinearLayout>
<LinearLayout android:orientation="horizontal" android:id="@id/ticker" android:animationCache="false" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layoutDirection="ltr" android:paddingStart="6.0dip">
<ImageSwitcher android:id="@id/tickerIcon" android:layout_width="@dimen/status_bar_icon_size" android:layout_height="@dimen/status_bar_icon_size" android:layout_marginEnd="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="fitCenter" />
<com.android.systemui.statusbar.AnimatedImageView android:layout_width="@dimen/status_bar_icon_size" android:layout_height="@dimen/status_bar_icon_size" android:scaleType="fitCenter" />
</ImageSwitcher>
<com.android.systemui.statusbar.phone.TickerView android:id="@id/tickerText" android:paddingTop="2.0dip" android:layout_width="0.0dip" android:layout_height="wrap_content" android:layout_weight="1.0" android:paddingEnd="10.0dip">
<com.lge.systemui.widget.TextViewStroke android:textAppearance="@style/TextAppearance.StatusBar.PhoneTicker" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" android:layoutDirection="ltr" lge:textStrokeTicker="@bool/config_systemui_stroke_effect_text" lge:textStrokeWidthTicker="0.5dip" lge:textStrokeColorTicker="#b2000000"
xmlns:lge="http://schemas.android.com/apk/res/com.android.systemui" />
<com.lge.systemui.widget.TextViewStroke android:textAppearance="@style/TextAppearance.StatusBar.PhoneTicker" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" android:layoutDirection="ltr" lge:textStrokeTicker="@bool/config_systemui_stroke_effect_text" lge:textStrokeWidthTicker="0.5dip" lge:textStrokeColorTicker="#b2000000"
xmlns:lge="http://schemas.android.com/apk/res/com.android.systemui" />
</com.android.systemui.statusbar.phone.TickerView>
</LinearLayout>
</com.android.systemui.statusbar.phone.PhoneStatusBa rView>
Nos fijamos dondeesta la linea de la cobertura (id/signal_cluster) y vemos que la tenemos dentro del layout de la bateria. Lo que queremos es sacarla de ahi para colocarla done queramos, asi que la desplazamos un poco mas arriba y la sacamos de la zona de la bateria. Total que la dejamos tal que por aqui
<?xml version="1.0" encoding="utf-8"?>
<com.android.systemui.statusbar.phone.PhoneStatusBa rView android:orientation="vertical" android:id="@id/status_bar" android:background="@drawable/stat_sys_indi_bg" android:focusable="true" android:fitsSystemWindows="false" android:descendantFocusability="afterDescendants"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui">
<com.lge.systemui.StatusBarBackground android:id="@id/notification_background" android:layout_width="fill_parent" android:layout_height="fill_parent" />
<ImageView android:id="@id/notification_lights_out" 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" android:paddingStart="6.0dip" />
<com.lge.systemui.widget.StatusBarLinearLayout android:orientation="horizontal" android:id="@id/status_bar_contents" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layoutDirection="ltr" android:paddingStart="3.0dip" android:paddingEnd="3.0dip">
<com.lge.systemui.widget.OperatorTextView android:textStyle="bold" android:gravity="center_vertical" android:id="@id/operator_text" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" android:layoutDirection="ltr" android:paddingStart="2.0dip" android:paddingEnd="2.0dip" lge:textStroke="@bool/config_systemui_stroke_effect_text" lge:textStrokeWidth="0.5dip" lge:textStrokeColor="#b2000000"
xmlns:lge="http://schemas.android.com/apk/res/com.android.systemui" />
<LinearLayout android:orientation="horizontal" android:id="@id/notification_icon_area" android:layout_width="0.0dip" android:layout_height="fill_parent" android:layout_weight="1.0" android:layoutDirection="ltr">
<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" />
<include android:id="@id/signal_cluster" android:layout_width="wrap_content" android:layout_height="fill_parent" layout="@layout/signal_cluster_view" />
<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:layoutDirection="ltr" android:layout_alignParentStart="true" />
</LinearLayout>
<LinearLayout android:orientation="horizontal" android:id="@id/statusIcons" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layoutDirection="ltr" />
<LinearLayout android:orientation="horizontal" android:id="@id/system_icon_area" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layoutDirection="ltr">
<LinearLayout android:orientation="horizontal" android:id="@id/signal_battery_cluster" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layoutDirection="ltr">
<com.lge.systemui.widget.VoLteImageView android:id="@id/volte_icon" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingStart="1.0dip" />
<com.lge.systemui.widget.TextViewStroke android:textSize="13.0dip" android:textColor="#ffffffff" android:gravity="center_vertical" android:id="@id/level_percent" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layoutDirection="ltr" android:paddingStart="1.0dip" android:paddingEnd="1.0dip" lge:textStrokeTicker="@bool/config_systemui_stroke_effect_text" lge:textStrokeWidthTicker="0.5dip" lge:textStrokeColorTicker="#b2000000"
xmlns:lge="http://schemas.android.com/apk/res/com.android.systemui" />
<ImageView android:id="@id/battery" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginStart="1.0dip" />
</LinearLayout>
</LinearLayout>
</com.lge.systemui.widget.StatusBarLinearLayout>
<LinearLayout android:gravity="center" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent">
<com.android.systemui.statusbar.policy.Clock android:textAppearance="@style/TextAppearance.StatusBar.Clock" android:textSize="17.0dip" android:textColor="#ffffffff" android:gravity="center_vertical" android:id="@id/clock" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" android:layout_marginEnd="4.0dip" lge:textStroke="@bool/config_systemui_stroke_effect_text" lge:textStrokeWidth="0.5dip" lge:textStrokeColor="#b2000000"
xmlns:lge="http://schemas.android.com/apk/res/com.android.systemui" />
</LinearLayout>
<LinearLayout android:orientation="horizontal" android:id="@id/ticker" android:animationCache="false" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layoutDirection="ltr" android:paddingStart="6.0dip">
<ImageSwitcher android:id="@id/tickerIcon" android:layout_width="@dimen/status_bar_icon_size" android:layout_height="@dimen/status_bar_icon_size" android:layout_marginEnd="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="fitCenter" />
<com.android.systemui.statusbar.AnimatedImageView android:layout_width="@dimen/status_bar_icon_size" android:layout_height="@dimen/status_bar_icon_size" android:scaleType="fitCenter" />
</ImageSwitcher>
<com.android.systemui.statusbar.phone.TickerView android:id="@id/tickerText" android:paddingTop="2.0dip" android:layout_width="0.0dip" android:layout_height="wrap_content" android:layout_weight="1.0" android:paddingEnd="10.0dip">
<com.lge.systemui.widget.TextViewStroke android:textAppearance="@style/TextAppearance.StatusBar.PhoneTicker" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" android:layoutDirection="ltr" lge:textStrokeTicker="@bool/config_systemui_stroke_effect_text" lge:textStrokeWidthTicker="0.5dip" lge:textStrokeColorTicker="#b2000000"
xmlns:lge="http://schemas.android.com/apk/res/com.android.systemui" />
<com.lge.systemui.widget.TextViewStroke android:textAppearance="@style/TextAppearance.StatusBar.PhoneTicker" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" android:layoutDirection="ltr" lge:textStrokeTicker="@bool/config_systemui_stroke_effect_text" lge:textStrokeWidthTicker="0.5dip" lge:textStrokeColorTicker="#b2000000"
xmlns:lge="http://schemas.android.com/apk/res/com.android.systemui" />
</com.android.systemui.statusbar.phone.TickerView>
</LinearLayout>
</com.android.systemui.statusbar.phone.PhoneStatusBa rView>
bueno, con esto lo que conseguimos es sacarlo del layout de la bateria y colocarlo dentro del layout de los iconos de las notificaciones, ya que si lo dejamos fuera no lo veriamos o veriamos como sale un pequeñ icono que indica que las notis estan mas a la izquierda, pero sin posibilidad de verlas.
Bienn,ya tenemos la cobertura y el wifi a la izquierda. ya que estamos aqui aprovechamos y ponemos un contador para la subida y bajada de datos. Podriamos hacerlo de modo sencillo y dejarlo tal como lo hace xposed, pero a mi personalmente me parece demasiado grande y no me gusta, asi que voy a explicar como dejarlo por debajo de la cobertura.
nos vamos a res/layout y abrimos el signal_cluster.xml
nos encontraremos con esto
<?xml version="1.0" encoding="utf-8"?>
<com.android.systemui.statusbar.SignalClusterView android:gravity="center" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layoutDirection="ltr"
xmlns:android="http://schemas.android.com/apk/res/android">
<FrameLayout android:id="@id/wifi_combo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="-2.0dip">
<ImageView android:id="@id/wifi_signal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleType="center" android:layout_centerVertical="true" android:layout_alignParentEnd="true" />
<ImageView android:layout_gravity="bottom|center" android:id="@id/wifi_inout" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</FrameLayout>
<FrameLayout android:id="@id/mobile_combo3" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageView android:id="@id/third_type2" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</FrameLayout>
<View android:id="@id/spacer" android:visibility="gone" android:layout_width="6.0dip" android:layout_height="6.0dip" />
<FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content">
<FrameLayout android:id="@id/mobile_combo2" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageView android:id="@id/third_mobile" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/third_type" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</FrameLayout>
</FrameLayout>
<ImageView android:id="@id/no_sim" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/no_service" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content">
<View android:visibility="invisible" android:layout_width="6.0dip" android:layout_height="6.0dip" />
<FrameLayout android:id="@id/mobile_combo" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageView android:id="@id/mobile_signal" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/mobile_type" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:layout_gravity="end|bottom|center" android:id="@id/mobile_inout" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</FrameLayout>
</FrameLayout>
<ImageView android:id="@id/airplane" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</com.android.systemui.statusbar.SignalClusterView>
aqui os dejo como lo tengo puesto para que funcione, si me pongo a explicar la historia me enrollo demasiado..
<?xml version="1.0" encoding="utf-8"?>
<com.android.systemui.statusbar.SignalClusterView android:gravity="center" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layoutDirection="ltr"
xmlns:android="http://schemas.android.com/apk/res/android">
<FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content">
<View android:visibility="invisible" android:layout_width="6.0dip" android:layout_height="6.0dip" />
<FrameLayout android:id="@id/mobile_combo" android:layout_width="wrap_content" android:layout_height="wrap_content">
<LinearLayout android:gravity="center_vertical" android:orientation="vertical" android:id="@id/ffaletetrafico" android:paddingLeft="6.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent">
<ImageView android:id="@id/mobile_signal" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<com.android.systemui.statusbar.policy.Traffic android:textAppearance="@style/TextAppearance.StatusBar.Ffalete" android:gravity="bottom|right|center" android:id="@id/trafico" android:paddingRight="3.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" />
</LinearLayout>
<ImageView android:id="@id/mobile_type" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:layout_gravity="end|bottom|center" android:id="@id/mobile_inout" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</FrameLayout>
</FrameLayout>
<FrameLayout android:id="@id/wifi_combo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="-2.0dip">
<ImageView android:id="@id/wifi_signal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleType="center" android:layout_centerVertical="true" android:layout_alignParentEnd="true" />
<ImageView android:layout_gravity="bottom|center" android:id="@id/wifi_inout" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</FrameLayout>
<FrameLayout android:id="@id/mobile_combo3" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageView android:id="@id/third_type2" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</FrameLayout>
<View android:id="@id/spacer" android:visibility="gone" android:layout_width="6.0dip" android:layout_height="6.0dip" />
<FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content">
<FrameLayout android:id="@id/mobile_combo2" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageView android:id="@id/third_mobile" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/third_type" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</FrameLayout>
</FrameLayout>
<ImageView android:id="@id/no_sim" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/no_service" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/airplane" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</com.android.systemui.statusbar.SignalClusterView>
La parte importante esta aqui. Como se puede ver, dentro del frame del combo de la cobertura, le meto un layout nuevo para meter el contador y la cobertura juntos uno encima de otro. Si no creara el layout se verian uno al lado del otro y quedaria fatal.
Tambien hay varias cosas nuevas. un par de id, un style nuevo y una linea nueva (com.android.systemui.statusbar.policy.Traffic ) que es el contador de datos propiamente dicho. El contador, no es mio, ni de casualidad vaya, es de xda, pero como no recuerdo quien lo hizo no puedo agradecerselo.
Para insertarlo, es facil, siguiendo la ruta que tiene colocamos unos smalis dentro. esto seria, abrir en smali/com/android/systemui/statusbar/policy y aqui dentro metemos los smalis que os dejo por aqui538023
Despues vamos a res/values y abrimos el ids.xml
al final del todo antes del resources metemos los ids nuevos
<item type="id" name="trafico">false</item>
<item type="id" name="ffaletetrafico">false</item>
tambien tenemos un style nuevo asi que iremos a res/values styles.xml y lo mismo, antes del resources, al final del todo metemos nuestro estilo nuevo
<style name="TextAppearance.StatusBar.Ffalete" parent="@style/TextAppearance.StatusBar.Clock">
<item name="android:textSize">7.0dip</item>
<item name="android:textStyle">normal</item>
<item name="android:textColor">#ffffffff</item>
<item name="android:textAllCaps">false</item>
</style>
Por que metemos un estilo nuevo? pues sencillo, porque si usamos uno de los que hay tenemos que editar el textsize y no se descentraria otra cosa, por eso lo mas sencillo es poner un estilo nuevo como este y asi podemos ponerle la medida que queramos, en este caso 7 dip, pero bien podrian ser mas o menos. Siempre acorde con los iconos de la cobertura, por que? pues por lo mismo, porque se descentraria y no quedaria bien, o no llegarias a ver el contador si los iconos son grandes o viceversa, si el contador es grande, no se veria la cobertura-
Vale, dicho esto, vamos a cambiar los iconos de la cobertura, ya que con los que trae, como he dicho antes, no se veria el contador. para esto, con photoshop o lo que useis, os vais a res/drawable-xxhdpi y buscais los iconos de la cobertura. Ya os ahorro trabajo, todos los que digan stat_sys_signal_bar5_xxxxxxxxx.png todos!! (son 7) y los dejais de un tamaño de 75x20pixeles. Venga tambien os subo los iconos aqui 538022
bueno, pues creo que esta todo. solo falta compilar y meterlo al telefono. Si todo ha ido bien, tendreis el contador debajo de la cobertura. Tambien se podria poner el contador debajo del reloj, debajo del wifi, o por fuera de la movida, el tema es crear el layout y meter lo que quieras dentro con el contador de datos. Esto ya es cosa de ir investigando un poco ejjeejejej. Eso si, acordarse de reducir los iconos si lo meteis debajo del wifi por ejemplo o reducir el reloj si lo meteis debajo del mismo, ya que sino pasara la que cuento, que no se vera.:risitas::risitas:
Se aceptan aportaciones, Hace tiempo habia un post en el subforo del galaxy s3 que me encantaba, a mi y a mucha gente y no estaria mal tener algo parecido. Algunos ya sabeis del post que hablo.
Voy a empezar este post para poder enseñar, compartir, ayudar o lo que sea con los usuarios que lo deseen. Por favor, abstenerse de ensuciar el post en caso de que no te interese o no te guste el tema, Comentarios del tipo, xposed hace esto, xposed hace lo otro sobran, gracias.
Me gustaria que este post no fuera un tutorial para aprender a compilar y descompilar apks, creo que el que le interese deberia saber buscar informacion acerca del tema para poder hacerlo. Si quereis os pongo otro tutorial sencillo para aprender tambien, pero ya digo que no me gustaria.
Recordar que cada uno es responsable de lo que hace en su telefono, seamos un poco conscientes de lo que hacemos por favor.
Sin mas empezamos.
Vamos a empezar con el systemui que se puede modificar de mogollon de maneras.:ok:
para centrar el reloj
nos vamos a res/layout y abrimos el statusbar.xml, nos encontraremos algo como esto
<?xml version="1.0" encoding="utf-8"?>
<com.android.systemui.statusbar.phone.PhoneStatusBa rView android:orientation="vertical" android:id="@id/status_bar" android:background="@drawable/stat_sys_indi_bg" android:focusable="true" android:fitsSystemWindows="false" android:descendantFocusability="afterDescendants"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui">
<com.lge.systemui.StatusBarBackground android:id="@id/notification_background" android:layout_width="fill_parent" android:layout_height="fill_parent" />
<ImageView android:id="@id/notification_lights_out" 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" android:paddingStart="6.0dip" />
<com.lge.systemui.widget.StatusBarLinearLayout android:orientation="horizontal" android:id="@id/status_bar_contents" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layoutDirection="ltr" android:paddingStart="3.0dip" android:paddingEnd="3.0dip">
<com.lge.systemui.widget.OperatorTextView android:textStyle="bold" android:gravity="center_vertical" android:id="@id/operator_text" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" android:layoutDirection="ltr" android:paddingStart="2.0dip" android:paddingEnd="2.0dip" lge:textStroke="@bool/config_systemui_stroke_effect_text" lge:textStrokeWidth="0.5dip" lge:textStrokeColor="#b2000000"
xmlns:lge="http://schemas.android.com/apk/res/com.android.systemui" />
<LinearLayout android:orientation="horizontal" android:id="@id/notification_icon_area" android:layout_width="0.0dip" android:layout_height="fill_parent" android:layout_weight="1.0" android:layoutDirection="ltr">
<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:layoutDirection="ltr" android:layout_alignParentStart="true" />
</LinearLayout>
<LinearLayout android:orientation="horizontal" android:id="@id/statusIcons" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layoutDirection="ltr" />
<LinearLayout android:orientation="horizontal" android:id="@id/system_icon_area" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layoutDirection="ltr">
<LinearLayout android:orientation="horizontal" android:id="@id/signal_battery_cluster" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layoutDirection="ltr">
<com.lge.systemui.widget.VoLteImageView android:id="@id/volte_icon" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingStart="1.0dip" />
<include android:id="@id/signal_cluster" android:layout_width="wrap_content" android:layout_height="fill_parent" layout="@layout/signal_cluster_view" />
<com.lge.systemui.widget.TextViewStroke android:textSize="13.0dip" android:textColor="#ffffffff" android:gravity="center_vertical" android:id="@id/level_percent" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layoutDirection="ltr" android:paddingStart="1.0dip" android:paddingEnd="1.0dip" lge:textStrokeTicker="@bool/config_systemui_stroke_effect_text" lge:textStrokeWidthTicker="0.5dip" lge:textStrokeColorTicker="#b2000000"
xmlns:lge="http://schemas.android.com/apk/res/com.android.systemui" />
<ImageView android:id="@id/battery" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginStart="1.0dip" />
</LinearLayout>
<com.android.systemui.statusbar.policy.Clock android:textAppearance="@style/TextAppearance.StatusBar.Clock" android:textSize="17.0dip" android:textColor="#ffffffff" android:gravity="center_vertical" android:id="@id/clock" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" android:layout_marginEnd="4.0dip" lge:textStroke="@bool/config_systemui_stroke_effect_text" lge:textStrokeWidth="0.5dip" lge:textStrokeColor="#b2000000"
xmlns:lge="http://schemas.android.com/apk/res/com.android.systemui" />
</LinearLayout>
</com.lge.systemui.widget.StatusBarLinearLayout>
<LinearLayout android:orientation="horizontal" android:id="@id/ticker" android:animationCache="false" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layoutDirection="ltr" android:paddingStart="6.0dip">
<ImageSwitcher android:id="@id/tickerIcon" android:layout_width="@dimen/status_bar_icon_size" android:layout_height="@dimen/status_bar_icon_size" android:layout_marginEnd="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="fitCenter" />
<com.android.systemui.statusbar.AnimatedImageView android:layout_width="@dimen/status_bar_icon_size" android:layout_height="@dimen/status_bar_icon_size" android:scaleType="fitCenter" />
</ImageSwitcher>
<com.android.systemui.statusbar.phone.TickerView android:id="@id/tickerText" android:paddingTop="2.0dip" android:layout_width="0.0dip" android:layout_height="wrap_content" android:layout_weight="1.0" android:paddingEnd="10.0dip">
<com.lge.systemui.widget.TextViewStroke android:textAppearance="@style/TextAppearance.StatusBar.PhoneTicker" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" android:layoutDirection="ltr" lge:textStrokeTicker="@bool/config_systemui_stroke_effect_text" lge:textStrokeWidthTicker="0.5dip" lge:textStrokeColorTicker="#b2000000"
xmlns:lge="http://schemas.android.com/apk/res/com.android.systemui" />
<com.lge.systemui.widget.TextViewStroke android:textAppearance="@style/TextAppearance.StatusBar.PhoneTicker" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" android:layoutDirection="ltr" lge:textStrokeTicker="@bool/config_systemui_stroke_effect_text" lge:textStrokeWidthTicker="0.5dip" lge:textStrokeColorTicker="#b2000000"
xmlns:lge="http://schemas.android.com/apk/res/com.android.systemui" />
</com.android.systemui.statusbar.phone.TickerView>
</LinearLayout>
</com.android.systemui.statusbar.phone.PhoneStatusBa rView>
bien, vamos a centrarnos en la linea del reloj del statusbar.
Como podemos ver el reloj esta metido dentro de com.lge.systemui.widget.StatusBarLinearLayout que es el layout que engloba todos los iconos del statusbar. Para poder centrarlos solo tenemos que crear nuestro propio layout y sacarlo de donde esta. Con esto conseguiremos ponerlo donde queramos.
<?xml version="1.0" encoding="utf-8"?>
<com.android.systemui.statusbar.phone.PhoneStatusBa rView android:orientation="vertical" android:id="@id/status_bar" android:background="@drawable/stat_sys_indi_bg" android:focusable="true" android:fitsSystemWindows="false" android:descendantFocusability="afterDescendants"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui">
<com.lge.systemui.StatusBarBackground android:id="@id/notification_background" android:layout_width="fill_parent" android:layout_height="fill_parent" />
<ImageView android:id="@id/notification_lights_out" 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" android:paddingStart="6.0dip" />
<com.lge.systemui.widget.StatusBarLinearLayout android:orientation="horizontal" android:id="@id/status_bar_contents" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layoutDirection="ltr" android:paddingStart="3.0dip" android:paddingEnd="3.0dip">
<com.lge.systemui.widget.OperatorTextView android:textStyle="bold" android:gravity="center_vertical" android:id="@id/operator_text" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" android:layoutDirection="ltr" android:paddingStart="2.0dip" android:paddingEnd="2.0dip" lge:textStroke="@bool/config_systemui_stroke_effect_text" lge:textStrokeWidth="0.5dip" lge:textStrokeColor="#b2000000"
xmlns:lge="http://schemas.android.com/apk/res/com.android.systemui" />
<LinearLayout android:orientation="horizontal" android:id="@id/notification_icon_area" android:layout_width="0.0dip" android:layout_height="fill_parent" android:layout_weight="1.0" android:layoutDirection="ltr">
<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" />
<include android:id="@id/signal_cluster" android:layout_width="wrap_content" android:layout_height="fill_parent" layout="@layout/signal_cluster_view" />
<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:layoutDirection="ltr" android:layout_alignParentStart="true" />
</LinearLayout>
<LinearLayout android:orientation="horizontal" android:id="@id/statusIcons" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layoutDirection="ltr" />
<LinearLayout android:orientation="horizontal" android:id="@id/system_icon_area" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layoutDirection="ltr">
<LinearLayout android:orientation="horizontal" android:id="@id/signal_battery_cluster" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layoutDirection="ltr">
<com.lge.systemui.widget.VoLteImageView android:id="@id/volte_icon" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingStart="1.0dip" />
<com.lge.systemui.widget.TextViewStroke android:textSize="13.0dip" android:textColor="#ffffffff" android:gravity="center_vertical" android:id="@id/level_percent" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layoutDirection="ltr" android:paddingStart="1.0dip" android:paddingEnd="1.0dip" lge:textStrokeTicker="@bool/config_systemui_stroke_effect_text" lge:textStrokeWidthTicker="0.5dip" lge:textStrokeColorTicker="#b2000000"
xmlns:lge="http://schemas.android.com/apk/res/com.android.systemui" />
<ImageView android:id="@id/battery" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginStart="1.0dip" />
</LinearLayout>
</LinearLayout>
</com.lge.systemui.widget.StatusBarLinearLayout>
<LinearLayout android:gravity="center" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent">
<com.android.systemui.statusbar.policy.Clock android:textAppearance="@style/TextAppearance.StatusBar.Clock" android:textSize="17.0dip" android:textColor="#ffffffff" android:gravity="center_vertical" android:id="@id/clock" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" android:layout_marginEnd="4.0dip" lge:textStroke="@bool/config_systemui_stroke_effect_text" lge:textStrokeWidth="0.5dip" lge:textStrokeColor="#b2000000"
xmlns:lge="http://schemas.android.com/apk/res/com.android.systemui" />
</LinearLayout>
<LinearLayout android:orientation="horizontal" android:id="@id/ticker" android:animationCache="false" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layoutDirection="ltr" android:paddingStart="6.0dip">
<ImageSwitcher android:id="@id/tickerIcon" android:layout_width="@dimen/status_bar_icon_size" android:layout_height="@dimen/status_bar_icon_size" android:layout_marginEnd="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="fitCenter" />
<com.android.systemui.statusbar.AnimatedImageView android:layout_width="@dimen/status_bar_icon_size" android:layout_height="@dimen/status_bar_icon_size" android:scaleType="fitCenter" />
</ImageSwitcher>
<com.android.systemui.statusbar.phone.TickerView android:id="@id/tickerText" android:paddingTop="2.0dip" android:layout_width="0.0dip" android:layout_height="wrap_content" android:layout_weight="1.0" android:paddingEnd="10.0dip">
<com.lge.systemui.widget.TextViewStroke android:textAppearance="@style/TextAppearance.StatusBar.PhoneTicker" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" android:layoutDirection="ltr" lge:textStrokeTicker="@bool/config_systemui_stroke_effect_text" lge:textStrokeWidthTicker="0.5dip" lge:textStrokeColorTicker="#b2000000"
xmlns:lge="http://schemas.android.com/apk/res/com.android.systemui" />
<com.lge.systemui.widget.TextViewStroke android:textAppearance="@style/TextAppearance.StatusBar.PhoneTicker" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" android:layoutDirection="ltr" lge:textStrokeTicker="@bool/config_systemui_stroke_effect_text" lge:textStrokeWidthTicker="0.5dip" lge:textStrokeColorTicker="#b2000000"
xmlns:lge="http://schemas.android.com/apk/res/com.android.systemui" />
</com.android.systemui.statusbar.phone.TickerView>
</LinearLayout>
</com.android.systemui.statusbar.phone.PhoneStatusBa rView>
Como podeis ver he sacado del layout del widget el reloj y le he colocado un layout nuevo por fuera de este para poder colocarlo donde me de la gana, en este caso en el centro.
Estando aqui, se puede aprovechar y cambiar el color del reloj, seria muy sencillo, simplemente cambiar el codigo de color que sale en la linea del reloj, que esta en hexadecimal por el el que queramos y listo. (ffffffff, lo cambiamos por el color que queramos)
Compilamos y a correr, ya tenemos el reloj centrado.
Para cambiar la cortina
Para esto es mucho mas sencillo aun, pero podemos complicarlo un poco y poder tirar de unos modulos para xposed que tengo fabricados que a mi personalmente me encantan,
el metodo sencillo para colocar una imagen en la cortina, seria tan sencillo como ir a res/layout y abrir status_bar_expanded.xml
En la segunda linea del xml nos encontramos algo asi
<com.android.systemui.statusbar.phone.NotificationP anelView android:id="@id/notification_panel" android:background="@color/bg_expanded" android:paddingTop="@dimen/notification_panel_padding_top" android:layout_width="0.0dip" android:layout_height="wrap_content" android:layout_marginStart="@dimen/notification_panel_margin_left"
La parte coloreada en rojo es el fondo de la cortina. si siguieramos la ruta del color nos encontrariamos con que es un fondo semitransparente que bien podriamos modificar a nuestro gusto pero sin poder ponerle una imagen. Lo que nos interesa en poner imagen, asi que cambiariamos la parte coloreada por este sencillo parametro
<com.android.systemui.statusbar.phone.NotificationP anelView android:id="@id/notification_panel" android:background="@drawable/animacion1" android:paddingTop="@dimen/notification_panel_padding_top" android:layout_width="0.0dip" android:layout_height="wrap_content" android:layout_marginStart="@dimen/notification_panel_margin_left"
Si os fijais he cambiado el @color/bg_expanded ( que es el color que comentaba antes, situado en el values) por un drawable que es la imagen que quiero poner. Le puesto animacion1 para poder hacer una cortina animada que mas adelante explicare como hacer.
Bien, una vez echo esto, vamos a la carpeta res/drawable-xxhdpi y metemos dentro un png de una resolucion maxima de 1080x1920 con el nombre que hemos puesto antes, en este caso animacion1.png.
compilamos y a correr, ya tenemos nuestra cortina personalizada.
Cortina animada
ahora bien, si queremos poner una cortina animada, es tan sencillo como añadir un xml nuevo en la carpeta drawable. Vamos a ello.
nos bajamos 537895 que es el xml que contiene la animacion.Nos encontraremos algo como esto
<?xml version="1.0" encoding="utf-8"?>
<animation-list android:oneshot="false"
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:duration="120" android:drawable="@drawable/falete_cortina1" />
</animation-list>
falete_cortina1 es el nombre del png que debemos meter en drawable-xxhdpi como haciamos antes. Asi que crearemos un png de 400x711 pixeles de resolucion como mucho y la pondremos de nombre falete_cortina1.png
En este caso tambien deberemos modificar el statusbar_expanded.xml como haciamos antes, pero como ya lo hicimos y pusimos animacion1, pues ya lo tenemos preparado, sencillo verdad?
compilar y a correr, ya tenemos todo preparado para poner la cortina animada.
aqui solo hemos puesto una imagen porque recientemente cree el modulo de xposed para no tener que sobrecargar el systemui.apk, pero bien se podria hacer todo ahi, tendriamos que meter las imagenes, compilar, descompilar, ampliar el xml de la animacion, meter las imagenes, bla bla bla, mas complicado todo, creo que asi es mucho mas sencillo
Mas adelante os explico como se modificarian los modulos de las cortinas para que podais haceroslas a vuestro gusto. De momento lo dejamos asi, preparado para poder ponerlo.
aqui unas cuantas cortinas aqui (https://www.wuala.com/Ffalrom/chismes%20de%20ffalete/Cortinas%20animadas/?key=E9Ihf4Oopu6Z). Para activarlas, bajarla, instalar como una apk normal y activarla en el xposed. reiniciar y listo. para quitarla, tan sencillo como desactivar el modulo de xposed y reiniciar.
Seguimos pues.
para quitar el botoncito de borrar cuando salen notificaciones
Para esto es algo mas lioso si queremos hacerlo bien, aunque ya tenemos un icono para esto integrado en el systemui vamos a ponerle dos iconos.
nos vamos a res/layout y abrimos status_bar_expanded_setting_layout.xml y nos encontraremos algo asi.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@id/setting_layout_normal" android:background="@drawable/indi_noti_list_title_bg" android:layout_width="fill_parent" android:layout_height="@dimen/setting_layout_height" android:layoutDirection="ltr"
xmlns:android="http://schemas.android.com/apk/res/android">
<TextView android:textSize="16.0dip" android:textStyle="bold" android:textColor="@color/np_date" android:gravity="center_vertical" android:id="@id/notification_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/status_bar_latest_events_title" android:shadowColor="#88000000" android:shadowDx="1.0" android:shadowDy="1.0" android:shadowRadius="1.33" android:layout_centerVertical="true" android:paddingStart="8.659973dip" android:layout_alignParentStart="true" />
<TextView android:textSize="@dimen/setting_divider_clear_text_size" android:textStyle="bold" android:textColor="@color/np_clear_all" android:gravity="center" android:id="@id/clear_all_button" android:background="@drawable/indi_noti_btn_clear" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/status_bar_clear_all_button" android:layout_centerVertical="true" android:contentDescription="@string/accessibility_clear_all_notification" android:paddingStart="@dimen/clear_padding_left" android:paddingEnd="@dimen/clear_padding_right" android:layout_marginEnd="@dimen/clear_margin_right" android:layout_alignParentEnd="true" />
</RelativeLayout>
Nos centramos en la linea marcada en rojo. Este es el boton propiamente dicho, con sus margenes y demas. Bueno, pues borramos la linea, sin miedo, la borramos entera y nos quedara algo asi
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@id/setting_layout_normal" android:background="@drawable/indi_noti_list_title_bg" android:layout_width="fill_parent" android:layout_height="@dimen/setting_layout_height" android:layoutDirection="ltr"
xmlns:android="http://schemas.android.com/apk/res/android">
<TextView android:textSize="16.0dip" android:textStyle="bold" android:textColor="@color/np_date" android:gravity="center_vertical" android:id="@id/notification_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/status_bar_latest_events_title" android:shadowColor="#88000000" android:shadowDx="1.0" android:shadowDy="1.0" android:shadowRadius="1.33" android:layout_centerVertical="true" android:paddingStart="8.659973dip" android:layout_alignParentStart="true" />
</RelativeLayout>
Ahora vamos a colocar el boton que queremos. Abrimos en res/layout status_bar_expanded_header.xml y veremos esto
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:gravity="bottom" android:orientation="horizontal" android:id="@id/header" android:background="@drawable/indi_noti_settings_bg" android:layout_width="fill_parent" android:layout_height="@dimen/notification_panel_header_height" android:baselineAligned="false"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui">
<RelativeLayout android:enabled="false" android:id="@id/datetime" android:background="@drawable/indi_noti_datetime_bg" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1.0" android:paddingStart="6.659973dip" android:paddingEnd="0.0dip">
<com.android.systemui.statusbar.policy.Clock android:textSize="29.0dip" android:textStyle="normal" android:textColor="@color/np_clock" android:id="@id/clock" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="@dimen/notification_panel_clock_padding_top" android:singleLine="true" android:layout_marginEnd="10.0dip" />
<com.android.systemui.statusbar.policy.DateView android:textSize="14.669983dip" android:textStyle="normal" android:textColor="#ffa9adb3" android:id="@id/date" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" android:layout_weight="1.0" android:layout_alignBaseline="@id/clock" android:layout_toEndOf="@id/clock" />
</RelativeLayout>
<Space android:layout_width="0.0dip" android:layout_height="0.0dip" android:layout_weight="1.0" />
<TextView android:textSize="11.0dip" android:textStyle="bold" android:textColor="#ff00a040" android:layout_gravity="center_vertical" android:id="@id/header_debug_info" android:padding="2.0dip" android:visibility="invisible" android:layout_width="0.0dip" android:layout_height="wrap_content" android:fontFamily="sans-serif-condensed" />
<FrameLayout android:id="@id/settings_button_holder" android:layout_width="@dimen/notification_panel_header_height" android:layout_height="@dimen/notification_panel_header_height" android:layout_marginStart="0.0dip" android:layout_marginEnd="11.329987dip">
<ImageView android:id="@id/settings_button" android:layout_width="@dimen/notification_panel_header_height" android:layout_height="@dimen/notification_panel_header_height" android:src="@drawable/ic_notify_settings_set" android:scaleType="center" android:contentDescription="@string/accessibility_system_settings_button" />
<ImageView android:id="@id/notification_button" android:visibility="gone" android:layout_width="@dimen/notification_panel_header_height" android:layout_height="@dimen/notification_panel_header_height" android:src="@drawable/ic_notify_settings_set" android:scaleType="center" android:contentDescription="@string/accessibility_notifications_button" />
</FrameLayout>
</LinearLayout>
bueno, pues modificamos un poco y lo dejamos tal que asi añadiendo la linea del boton
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:gravity="bottom" android:orientation="horizontal" android:id="@id/header" android:background="@drawable/indi_noti_settings_bg" android:layout_width="fill_parent" android:layout_height="@dimen/notification_panel_header_height" android:baselineAligned="false"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui">
<RelativeLayout android:enabled="false" android:id="@id/datetime" android:background="@drawable/indi_noti_datetime_bg" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1.0" android:paddingStart="6.659973dip" android:paddingEnd="0.0dip">
<com.android.systemui.statusbar.policy.Clock android:textSize="29.0dip" android:textStyle="normal" android:textColor="@color/np_clock" android:id="@id/clock" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="@dimen/notification_panel_clock_padding_top" android:singleLine="true" android:layout_marginEnd="10.0dip" />
<com.android.systemui.statusbar.policy.DateView android:textSize="14.669983dip" android:textStyle="normal" android:textColor="#ffa9adb3" android:id="@id/date" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" android:layout_weight="1.0" android:layout_alignBaseline="@id/clock" android:layout_toEndOf="@id/clock" />
</RelativeLayout>
<Space android:layout_width="0.0dip" android:layout_height="0.0dip" android:layout_weight="1.0" />
<ImageView android:id="@id/clear_all_button" android:layout_width="@dimen/notification_panel_header_height" android:layout_height="@dimen/notification_panel_header_height" android:src="@drawable/ic_notify_clear" android:contentDescription="@string/accessibility_home" systemui:glowBackground="@drawable/ic_sysbar_highlight" />
<TextView android:textSize="11.0dip" android:textStyle="bold" android:textColor="#ff00a040" android:layout_gravity="center_vertical" android:id="@id/header_debug_info" android:padding="2.0dip" android:visibility="invisible" android:layout_width="0.0dip" android:layout_height="wrap_content" android:fontFamily="sans-serif-condensed" />
<FrameLayout android:id="@id/settings_button_holder" android:layout_width="@dimen/notification_panel_header_height" android:layout_height="@dimen/notification_panel_header_height" android:layout_marginStart="0.0dip" android:layout_marginEnd="11.329987dip">
<ImageView android:id="@id/settings_button" android:layout_width="@dimen/notification_panel_header_height" android:layout_height="@dimen/notification_panel_header_height" android:src="@drawable/ic_notify_settings_set" android:scaleType="center" android:contentDescription="@string/accessibility_system_settings_button" />
<ImageView android:id="@id/notification_button" android:visibility="gone" android:layout_width="@dimen/notification_panel_header_height" android:layout_height="@dimen/notification_panel_header_height" android:src="@drawable/ic_notify_settings_set" android:scaleType="center" android:contentDescription="@string/accessibility_notifications_button" />
</FrameLayout>
</LinearLayout>
como veis he metido una linea nueva. Aprovecho las medidas de los margenes para dejarlo igual que el boton de los ajustes y que quede todo centrado en su sitio, podria explicaros mas, o hacer mis propios margenes y demas, pero creo que asi es menos lioso todo.
Bueno, podriamos dejarlo aqui, compilar y a correr, pero tambien quiero que al pulsar el boton cambie de color como hace el boton de los ajustes, para darle un toque mas profesional al asunto. Para esto vamos a ello
abrimos res/drawable ic_notify_clear.xml y nos encontraremos con algo asi
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/ic_notify_clear_pressed" />
<item android:drawable="@drawable/ic_notify_clear_normal" />
</selector>
yo aqui ya tengo modificado el asunto. El que esta en rojo es como os encontrareis los dos , bueno, pues cambiais el pressed y lo dejais tal como esta ahi.
ahora vais a res/drawable-xxhdpi y vereis que teneis ese icono (ic_notifi_clear_normal), bueno, pues lo duplicais y con el photoshop o el programa que useis lo editais y lo dejais azul o rojo o como os de la gana. este sera el icono que se vera cuando pulseis el boton para borrar las notificaciones.
Ya esta todo.
compilais y a correr, ya teneis el boton de borrar tipo aosp.
cambiar de posicion la cobertura y el wifi
Bien, con este vamos a cambiar de posicion los iconos del statusbar de la cobertura y el wifi para pasarlos al lado izquierdo. Amos al lio.
nos vamos a res/layout y abrimos el status_bar.xml
nos encontraermos con esto.
<?xml version="1.0" encoding="utf-8"?>
<com.android.systemui.statusbar.phone.PhoneStatusBa rView android:orientation="vertical" android:id="@id/status_bar" android:background="@drawable/stat_sys_indi_bg" android:focusable="true" android:fitsSystemWindows="false" android:descendantFocusability="afterDescendants"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui">
<com.lge.systemui.StatusBarBackground android:id="@id/notification_background" android:layout_width="fill_parent" android:layout_height="fill_parent" />
<ImageView android:id="@id/notification_lights_out" 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" android:paddingStart="6.0dip" />
<com.lge.systemui.widget.StatusBarLinearLayout android:orientation="horizontal" android:id="@id/status_bar_contents" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layoutDirection="ltr" android:paddingStart="3.0dip" android:paddingEnd="3.0dip">
<com.lge.systemui.widget.OperatorTextView android:textStyle="bold" android:gravity="center_vertical" android:id="@id/operator_text" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" android:layoutDirection="ltr" android:paddingStart="2.0dip" android:paddingEnd="2.0dip" lge:textStroke="@bool/config_systemui_stroke_effect_text" lge:textStrokeWidth="0.5dip" lge:textStrokeColor="#b2000000"
xmlns:lge="http://schemas.android.com/apk/res/com.android.systemui" />
<LinearLayout android:orientation="horizontal" android:id="@id/notification_icon_area" android:layout_width="0.0dip" android:layout_height="fill_parent" android:layout_weight="1.0" android:layoutDirection="ltr">
<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:layoutDirection="ltr" android:layout_alignParentStart="true" />
</LinearLayout>
<LinearLayout android:orientation="horizontal" android:id="@id/statusIcons" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layoutDirection="ltr" />
<LinearLayout android:orientation="horizontal" android:id="@id/system_icon_area" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layoutDirection="ltr">
<LinearLayout android:orientation="horizontal" android:id="@id/signal_battery_cluster" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layoutDirection="ltr">
<com.lge.systemui.widget.VoLteImageView android:id="@id/volte_icon" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingStart="1.0dip" />
<include android:id="@id/signal_cluster" android:layout_width="wrap_content" android:layout_height="fill_parent" layout="@layout/signal_cluster_view" />
<com.lge.systemui.widget.TextViewStroke android:textSize="13.0dip" android:textColor="#ffffffff" android:gravity="center_vertical" android:id="@id/level_percent" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layoutDirection="ltr" android:paddingStart="1.0dip" android:paddingEnd="1.0dip" lge:textStrokeTicker="@bool/config_systemui_stroke_effect_text" lge:textStrokeWidthTicker="0.5dip" lge:textStrokeColorTicker="#b2000000"
xmlns:lge="http://schemas.android.com/apk/res/com.android.systemui" />
<ImageView android:id="@id/battery" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginStart="1.0dip" />
</LinearLayout>
<com.android.systemui.statusbar.policy.Clock android:textAppearance="@style/TextAppearance.StatusBar.Clock" android:textSize="17.0dip" android:textColor="#ffffffff" android:gravity="center_vertical" android:id="@id/clock" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" android:layout_marginEnd="4.0dip" lge:textStroke="@bool/config_systemui_stroke_effect_text" lge:textStrokeWidth="0.5dip" lge:textStrokeColor="#b2000000"
xmlns:lge="http://schemas.android.com/apk/res/com.android.systemui" />
</LinearLayout>
</com.lge.systemui.widget.StatusBarLinearLayout>
<LinearLayout android:orientation="horizontal" android:id="@id/ticker" android:animationCache="false" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layoutDirection="ltr" android:paddingStart="6.0dip">
<ImageSwitcher android:id="@id/tickerIcon" android:layout_width="@dimen/status_bar_icon_size" android:layout_height="@dimen/status_bar_icon_size" android:layout_marginEnd="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="fitCenter" />
<com.android.systemui.statusbar.AnimatedImageView android:layout_width="@dimen/status_bar_icon_size" android:layout_height="@dimen/status_bar_icon_size" android:scaleType="fitCenter" />
</ImageSwitcher>
<com.android.systemui.statusbar.phone.TickerView android:id="@id/tickerText" android:paddingTop="2.0dip" android:layout_width="0.0dip" android:layout_height="wrap_content" android:layout_weight="1.0" android:paddingEnd="10.0dip">
<com.lge.systemui.widget.TextViewStroke android:textAppearance="@style/TextAppearance.StatusBar.PhoneTicker" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" android:layoutDirection="ltr" lge:textStrokeTicker="@bool/config_systemui_stroke_effect_text" lge:textStrokeWidthTicker="0.5dip" lge:textStrokeColorTicker="#b2000000"
xmlns:lge="http://schemas.android.com/apk/res/com.android.systemui" />
<com.lge.systemui.widget.TextViewStroke android:textAppearance="@style/TextAppearance.StatusBar.PhoneTicker" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" android:layoutDirection="ltr" lge:textStrokeTicker="@bool/config_systemui_stroke_effect_text" lge:textStrokeWidthTicker="0.5dip" lge:textStrokeColorTicker="#b2000000"
xmlns:lge="http://schemas.android.com/apk/res/com.android.systemui" />
</com.android.systemui.statusbar.phone.TickerView>
</LinearLayout>
</com.android.systemui.statusbar.phone.PhoneStatusBa rView>
Nos fijamos dondeesta la linea de la cobertura (id/signal_cluster) y vemos que la tenemos dentro del layout de la bateria. Lo que queremos es sacarla de ahi para colocarla done queramos, asi que la desplazamos un poco mas arriba y la sacamos de la zona de la bateria. Total que la dejamos tal que por aqui
<?xml version="1.0" encoding="utf-8"?>
<com.android.systemui.statusbar.phone.PhoneStatusBa rView android:orientation="vertical" android:id="@id/status_bar" android:background="@drawable/stat_sys_indi_bg" android:focusable="true" android:fitsSystemWindows="false" android:descendantFocusability="afterDescendants"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui">
<com.lge.systemui.StatusBarBackground android:id="@id/notification_background" android:layout_width="fill_parent" android:layout_height="fill_parent" />
<ImageView android:id="@id/notification_lights_out" 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" android:paddingStart="6.0dip" />
<com.lge.systemui.widget.StatusBarLinearLayout android:orientation="horizontal" android:id="@id/status_bar_contents" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layoutDirection="ltr" android:paddingStart="3.0dip" android:paddingEnd="3.0dip">
<com.lge.systemui.widget.OperatorTextView android:textStyle="bold" android:gravity="center_vertical" android:id="@id/operator_text" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" android:layoutDirection="ltr" android:paddingStart="2.0dip" android:paddingEnd="2.0dip" lge:textStroke="@bool/config_systemui_stroke_effect_text" lge:textStrokeWidth="0.5dip" lge:textStrokeColor="#b2000000"
xmlns:lge="http://schemas.android.com/apk/res/com.android.systemui" />
<LinearLayout android:orientation="horizontal" android:id="@id/notification_icon_area" android:layout_width="0.0dip" android:layout_height="fill_parent" android:layout_weight="1.0" android:layoutDirection="ltr">
<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" />
<include android:id="@id/signal_cluster" android:layout_width="wrap_content" android:layout_height="fill_parent" layout="@layout/signal_cluster_view" />
<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:layoutDirection="ltr" android:layout_alignParentStart="true" />
</LinearLayout>
<LinearLayout android:orientation="horizontal" android:id="@id/statusIcons" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layoutDirection="ltr" />
<LinearLayout android:orientation="horizontal" android:id="@id/system_icon_area" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layoutDirection="ltr">
<LinearLayout android:orientation="horizontal" android:id="@id/signal_battery_cluster" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layoutDirection="ltr">
<com.lge.systemui.widget.VoLteImageView android:id="@id/volte_icon" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingStart="1.0dip" />
<com.lge.systemui.widget.TextViewStroke android:textSize="13.0dip" android:textColor="#ffffffff" android:gravity="center_vertical" android:id="@id/level_percent" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layoutDirection="ltr" android:paddingStart="1.0dip" android:paddingEnd="1.0dip" lge:textStrokeTicker="@bool/config_systemui_stroke_effect_text" lge:textStrokeWidthTicker="0.5dip" lge:textStrokeColorTicker="#b2000000"
xmlns:lge="http://schemas.android.com/apk/res/com.android.systemui" />
<ImageView android:id="@id/battery" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginStart="1.0dip" />
</LinearLayout>
</LinearLayout>
</com.lge.systemui.widget.StatusBarLinearLayout>
<LinearLayout android:gravity="center" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent">
<com.android.systemui.statusbar.policy.Clock android:textAppearance="@style/TextAppearance.StatusBar.Clock" android:textSize="17.0dip" android:textColor="#ffffffff" android:gravity="center_vertical" android:id="@id/clock" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" android:layout_marginEnd="4.0dip" lge:textStroke="@bool/config_systemui_stroke_effect_text" lge:textStrokeWidth="0.5dip" lge:textStrokeColor="#b2000000"
xmlns:lge="http://schemas.android.com/apk/res/com.android.systemui" />
</LinearLayout>
<LinearLayout android:orientation="horizontal" android:id="@id/ticker" android:animationCache="false" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layoutDirection="ltr" android:paddingStart="6.0dip">
<ImageSwitcher android:id="@id/tickerIcon" android:layout_width="@dimen/status_bar_icon_size" android:layout_height="@dimen/status_bar_icon_size" android:layout_marginEnd="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="fitCenter" />
<com.android.systemui.statusbar.AnimatedImageView android:layout_width="@dimen/status_bar_icon_size" android:layout_height="@dimen/status_bar_icon_size" android:scaleType="fitCenter" />
</ImageSwitcher>
<com.android.systemui.statusbar.phone.TickerView android:id="@id/tickerText" android:paddingTop="2.0dip" android:layout_width="0.0dip" android:layout_height="wrap_content" android:layout_weight="1.0" android:paddingEnd="10.0dip">
<com.lge.systemui.widget.TextViewStroke android:textAppearance="@style/TextAppearance.StatusBar.PhoneTicker" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" android:layoutDirection="ltr" lge:textStrokeTicker="@bool/config_systemui_stroke_effect_text" lge:textStrokeWidthTicker="0.5dip" lge:textStrokeColorTicker="#b2000000"
xmlns:lge="http://schemas.android.com/apk/res/com.android.systemui" />
<com.lge.systemui.widget.TextViewStroke android:textAppearance="@style/TextAppearance.StatusBar.PhoneTicker" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" android:layoutDirection="ltr" lge:textStrokeTicker="@bool/config_systemui_stroke_effect_text" lge:textStrokeWidthTicker="0.5dip" lge:textStrokeColorTicker="#b2000000"
xmlns:lge="http://schemas.android.com/apk/res/com.android.systemui" />
</com.android.systemui.statusbar.phone.TickerView>
</LinearLayout>
</com.android.systemui.statusbar.phone.PhoneStatusBa rView>
bueno, con esto lo que conseguimos es sacarlo del layout de la bateria y colocarlo dentro del layout de los iconos de las notificaciones, ya que si lo dejamos fuera no lo veriamos o veriamos como sale un pequeñ icono que indica que las notis estan mas a la izquierda, pero sin posibilidad de verlas.
Bienn,ya tenemos la cobertura y el wifi a la izquierda. ya que estamos aqui aprovechamos y ponemos un contador para la subida y bajada de datos. Podriamos hacerlo de modo sencillo y dejarlo tal como lo hace xposed, pero a mi personalmente me parece demasiado grande y no me gusta, asi que voy a explicar como dejarlo por debajo de la cobertura.
nos vamos a res/layout y abrimos el signal_cluster.xml
nos encontraremos con esto
<?xml version="1.0" encoding="utf-8"?>
<com.android.systemui.statusbar.SignalClusterView android:gravity="center" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layoutDirection="ltr"
xmlns:android="http://schemas.android.com/apk/res/android">
<FrameLayout android:id="@id/wifi_combo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="-2.0dip">
<ImageView android:id="@id/wifi_signal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleType="center" android:layout_centerVertical="true" android:layout_alignParentEnd="true" />
<ImageView android:layout_gravity="bottom|center" android:id="@id/wifi_inout" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</FrameLayout>
<FrameLayout android:id="@id/mobile_combo3" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageView android:id="@id/third_type2" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</FrameLayout>
<View android:id="@id/spacer" android:visibility="gone" android:layout_width="6.0dip" android:layout_height="6.0dip" />
<FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content">
<FrameLayout android:id="@id/mobile_combo2" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageView android:id="@id/third_mobile" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/third_type" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</FrameLayout>
</FrameLayout>
<ImageView android:id="@id/no_sim" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/no_service" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content">
<View android:visibility="invisible" android:layout_width="6.0dip" android:layout_height="6.0dip" />
<FrameLayout android:id="@id/mobile_combo" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageView android:id="@id/mobile_signal" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/mobile_type" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:layout_gravity="end|bottom|center" android:id="@id/mobile_inout" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</FrameLayout>
</FrameLayout>
<ImageView android:id="@id/airplane" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</com.android.systemui.statusbar.SignalClusterView>
aqui os dejo como lo tengo puesto para que funcione, si me pongo a explicar la historia me enrollo demasiado..
<?xml version="1.0" encoding="utf-8"?>
<com.android.systemui.statusbar.SignalClusterView android:gravity="center" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layoutDirection="ltr"
xmlns:android="http://schemas.android.com/apk/res/android">
<FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content">
<View android:visibility="invisible" android:layout_width="6.0dip" android:layout_height="6.0dip" />
<FrameLayout android:id="@id/mobile_combo" android:layout_width="wrap_content" android:layout_height="wrap_content">
<LinearLayout android:gravity="center_vertical" android:orientation="vertical" android:id="@id/ffaletetrafico" android:paddingLeft="6.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent">
<ImageView android:id="@id/mobile_signal" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<com.android.systemui.statusbar.policy.Traffic android:textAppearance="@style/TextAppearance.StatusBar.Ffalete" android:gravity="bottom|right|center" android:id="@id/trafico" android:paddingRight="3.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" />
</LinearLayout>
<ImageView android:id="@id/mobile_type" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:layout_gravity="end|bottom|center" android:id="@id/mobile_inout" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</FrameLayout>
</FrameLayout>
<FrameLayout android:id="@id/wifi_combo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="-2.0dip">
<ImageView android:id="@id/wifi_signal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleType="center" android:layout_centerVertical="true" android:layout_alignParentEnd="true" />
<ImageView android:layout_gravity="bottom|center" android:id="@id/wifi_inout" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</FrameLayout>
<FrameLayout android:id="@id/mobile_combo3" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageView android:id="@id/third_type2" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</FrameLayout>
<View android:id="@id/spacer" android:visibility="gone" android:layout_width="6.0dip" android:layout_height="6.0dip" />
<FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content">
<FrameLayout android:id="@id/mobile_combo2" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageView android:id="@id/third_mobile" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/third_type" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</FrameLayout>
</FrameLayout>
<ImageView android:id="@id/no_sim" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/no_service" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/airplane" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</com.android.systemui.statusbar.SignalClusterView>
La parte importante esta aqui. Como se puede ver, dentro del frame del combo de la cobertura, le meto un layout nuevo para meter el contador y la cobertura juntos uno encima de otro. Si no creara el layout se verian uno al lado del otro y quedaria fatal.
Tambien hay varias cosas nuevas. un par de id, un style nuevo y una linea nueva (com.android.systemui.statusbar.policy.Traffic ) que es el contador de datos propiamente dicho. El contador, no es mio, ni de casualidad vaya, es de xda, pero como no recuerdo quien lo hizo no puedo agradecerselo.
Para insertarlo, es facil, siguiendo la ruta que tiene colocamos unos smalis dentro. esto seria, abrir en smali/com/android/systemui/statusbar/policy y aqui dentro metemos los smalis que os dejo por aqui538023
Despues vamos a res/values y abrimos el ids.xml
al final del todo antes del resources metemos los ids nuevos
<item type="id" name="trafico">false</item>
<item type="id" name="ffaletetrafico">false</item>
tambien tenemos un style nuevo asi que iremos a res/values styles.xml y lo mismo, antes del resources, al final del todo metemos nuestro estilo nuevo
<style name="TextAppearance.StatusBar.Ffalete" parent="@style/TextAppearance.StatusBar.Clock">
<item name="android:textSize">7.0dip</item>
<item name="android:textStyle">normal</item>
<item name="android:textColor">#ffffffff</item>
<item name="android:textAllCaps">false</item>
</style>
Por que metemos un estilo nuevo? pues sencillo, porque si usamos uno de los que hay tenemos que editar el textsize y no se descentraria otra cosa, por eso lo mas sencillo es poner un estilo nuevo como este y asi podemos ponerle la medida que queramos, en este caso 7 dip, pero bien podrian ser mas o menos. Siempre acorde con los iconos de la cobertura, por que? pues por lo mismo, porque se descentraria y no quedaria bien, o no llegarias a ver el contador si los iconos son grandes o viceversa, si el contador es grande, no se veria la cobertura-
Vale, dicho esto, vamos a cambiar los iconos de la cobertura, ya que con los que trae, como he dicho antes, no se veria el contador. para esto, con photoshop o lo que useis, os vais a res/drawable-xxhdpi y buscais los iconos de la cobertura. Ya os ahorro trabajo, todos los que digan stat_sys_signal_bar5_xxxxxxxxx.png todos!! (son 7) y los dejais de un tamaño de 75x20pixeles. Venga tambien os subo los iconos aqui 538022
bueno, pues creo que esta todo. solo falta compilar y meterlo al telefono. Si todo ha ido bien, tendreis el contador debajo de la cobertura. Tambien se podria poner el contador debajo del reloj, debajo del wifi, o por fuera de la movida, el tema es crear el layout y meter lo que quieras dentro con el contador de datos. Esto ya es cosa de ir investigando un poco ejjeejejej. Eso si, acordarse de reducir los iconos si lo meteis debajo del wifi por ejemplo o reducir el reloj si lo meteis debajo del mismo, ya que sino pasara la que cuento, que no se vera.:risitas::risitas: