|
Personalización y temas Galaxy S III Personalización y temas Galaxy S III |
|
Herramientas |
#1
|
||||
|
||||
Personalizar barra de notificaciones. [15/07/13]]
Uno de los puntos fuertes de Android, uno de sus caballos de batalla por decirlo así, es sin duda la barra de personalizaciones. Esta implementación que tanto tiempo lleva con nosotros y que luego fue vilmente copiada por la competencia, es uno de los puntos más cuidados por Google y es una zona que cada versión ha ido viendo mejoras.
Otro punto poderoso del robot verde, es la personalización. Pues vamos a juntar ambos conceptos. Vamos a personalizar la barra de notificaciones, pero no como lo hace la mayoría de gente, que instala apps de terceros que añaden cosas, no, vamos a modificarla de raíz. Para ello, será necesario decompilar y recompilar luego unas apps del sistema, por lo cual dejo un tutorial para decompilar. Y de paso digo que obviamente se necesita root. Aprovecho la introducción para recomendar hacer un backups antes de probar cosas, no sea que os empiece a dar FC algo y os toque perderlo todo. También decir que para modificar los .xml, hay que usar NotePad, un editor de XML o incluso un IDE, no me uséis bloc de notas, por el hamor de Odín. Y para no malgastar el mensaje, también recomendaros a probar y a hacer vuestras chapucillas. Es muy gratificante hacerte tus mods o tematizarte un cacho del móvil. Agradezco a joehanh88 de XDA su tutorial de personalizar el SystemUI y a Grouxho de aquí mismo y Esp-Desarrolladores por enseñarme tantas cosas y tener paciencia conmigo. Advertir que el tuto es para Android 4.1.2 stock de Samsung. Por petición de KingdomXander, aviso que si lo que modifiquéis lo queréis meter por recovery, pensad en tener un recovery avanzado, no el Stock. Y avisar que es posible que os dé problemas en roms Odex. Ale, menos verborrea y más trabajo. Última edición por nachokyle Día 15/07/13 a las 16:54:17. |
Los siguientes 12 usuarios han agradecido a nachokyle su comentario: | ||
|
#2
|
||||
|
||||
Hola a todos, vamos a ver como decompilar y compilar posteriormente un archivo .apk. Los archivos .apk como sabéis son las aplicaciones de Android. El tutorial es para Windows.
Primeramente tenemos que descargar del dropbox de Grouxho el ApkManager, que es la herramienta que usaremos para decompilar y recompilar los apk. Por si él lo quitase o algo, dejo una copia en mi Wuala por si acaso, pero em un principio pillad el de su Dropbox. Creamos una carpeta, que llamaremos Apkmanager o como queráis, y la pondréis en un sitio accesible. Yo la tengo en el escritorio. En ella, descomprimiremos el .zip que nos hemos bajado, y nos creará una serie de carpetas y archivos. Antes de empezar a trabajar, tenemos que buscar en /System/Framework el Framework-res.apk y el Twframework-res.apk de nuestra rom, y los pegaremos en la carpeta Other. Ahora ya podemos trabajar. EL tutorial se bifurca, depende si trabajamos con Apps de sistema o apps normales. Apps sistema: Conseguimos la app y la colocamos en la carpeta "place-apk-here-for-modding". Luego ejecutamos el script.bat, y se nos abre un terminal de Windows. Tenemos unas opciones que elegir, y empezaremos seleccionando el apk que queramos trabajar. Para ello, pulsamos en número 22, que es la opción "set current project". Nos saldrá otra ventana que nos mostrará todas las apps que hay en la carpeta "place-apk-here-for-modding", y con el número correcto elegiremos la que queramos. Volveremos a la pantalla principal, donde elegiremos la opción que queramos. Como queremos decompilar, pulsamos 9 y enter. El Apkmanager decompilará la app, y la tendremos disponible en la carpeta "Projects". Nos dirigimos a "projects", sin cerrar el apkmanager, y hacemos los cambios que queramos. Cuando hayamos editado todo, volvemos al Apkmanager que no hemos cerrado, y pulsamos 11, para volver a compilar. Cuando haya terminado, nos preguntará si es una app de sistema, y aunque lo sea, le decimos que NO. Pulsamos N y podemos cerrar el Apkmanager. Ahora, en "place-apk-here-for-modding" nos ha aparecido un apk igual que el que teníamos trabajado, pero con el prefijo Unsigned. Abrimos el Apk unsigned y el Apk bueno con WinRar. Cuando tengamos ambos abiertos, desde el Unsigned hacia el signed arrastramos lo que hayamos modificado. De esta forma, no se pierde la firma de la rom y no da ningún problema. Si no sabéis que archivos mover exactamente, moved toda la carpeta "Res" y moved el "resources.arsc" de la unsigned a la normal, y ahora, la normal ya está modificada y preparada para instalar. Apps normales: Es justamente lo mismo, pero aquí después de compilar y decirle que no es una app de de sistema, tenemos que darle a la opción 12, que nos firmará la APK. Y ya está, lista para instalar. Una vez explicado esto, al lío. Última edición por nachokyle Día 15/07/13 a las 00:18:14. |
Los siguientes 8 usuarios han agradecido a nachokyle su comentario: | ||
#3
|
||||
|
||||
Antes que nada, decir que para cambiar colores nos hace falta los códigos de los colores HTML. Aquí os dejo una página donde podéis elegir el color que queráis y os dice los códigos HTML: http://html-color-codes.info/codigos...hexadecimales
Y, en los XML que editaremos, los códigos necesitan un prefijo que indica transparencia. 00 es transparente, y ff es opaco. Por ejemplo, si queremos color negro opaco, que su código es #000000, tendríamos que poner #ff000000. Hablo un poco de memoria, pero si no recuerdo mal los prefijos son: FF: opaco. BF: 25% transparente. 7F: 50% transparente. 3F: 75% transparente. 00: 100% transparente. 1) Empezaremos por algo muy simple y muy demandado, que es el cambio de cortina. Extraemos el SystemUI de nuestra rom y lo decompilamos. Nos dirigimos a la ruta Res/Layout y abrimos con NotePad el tw_status_bar_expanded.xml. Ahí dentro, en el principio del XML encontraremos una línea que dice así: Código:
<?xml version="1.0" encoding="utf-8"?> <FrameLayout android:id="@id/notification_panel" android:background="@drawablenotification_panel_bg" android:paddingTop="@dimen/notification_panel_padding_top" … Nos quedaría algo así: Código:
<?xml version="1.0" encoding="utf-8"?> <FrameLayout android:id="@id/notification_panel" android:background="@drawableback" android:paddingTop="@dimen/notification_panel_padding_top”… Recompilamos y finiquitado. También dejo aquí un enlace que enseña a hacer cortinas animadas. A mí personalmente no me gusta y como no me gusta no lo he probado. Así que dejo solo el enlace ya que al no probarlo mucho no puedo explicar. 2) El complemento al cambio de cortina. El complemento es cambiar el closer, o sea, la barra esa de debajo de donde se coge la cortina y se sube y se baja. Es muy simple y no hay que modificar ningún XML. Nos dirigimos a Res/Drawable-XHDPI y buscamos dos imágenes que se llaman “tw_status_bar_close_off.png” y “tw_status_bar_close_on.png”. Las editamos como nos dé la gana y las metemos en la misma ruta, sin modificar el nombre, la extensión ni las medidas. Recompilamos y hecho. 3) Para terminar de niquelar el closer, vamos a ocultar el nombre de la operadora. Nos dirigimos a Res/Values, y abrimos el Styles.xml. Buscamos una línea que ponga: Código:
<style name="TextAppearance.StatusBar.Expanded.Network" parent="@style/TextAppearance.StatusBar.Expanded"> <item name="android:textSize">14.0dip</item> <item name="android:textStyle">normal</item> <item name="android:textColor">#ff000000</item> O sea, nos quedará así: Código:
<style name="TextAppearance.StatusBar.Expanded.Network" parent="@style/TextAppearance.StatusBar.Expanded"> <item name="android:textSize">14.0dip</item> <item name="android:textStyle">normal</item> <item name="android:textColor">#00000000</item> Recompilamos y listo. 4) Cambiando un poco de lugar, vamos a poner el reloj central y del color deseado. Vamos a Res/layout y abrimos tw_status_bar.xml. Buscamos una línea que pone: Código:
<com.android.systemui.statusbar.policy.Clock android:textSize="@dimen/status_bar_clock_text_size" android:textColor="#ff959595" android:ellipsize="none" android:gravity="left|center" android:id="@id/clock" android:paddingLeft="3.0dip… Código:
<com.android.systemui.statusbar.policy.Clock android:textSize="@dimen/status_bar_clock_text_size" android:textColor="#ffcolor" android:ellipsize="none" android:gravity="center" android:id="@id/clock" android:paddingLeft="3.0dip… Última edición por nachokyle Día 15/07/13 a las 00:53:22. |
Los siguientes 8 usuarios han agradecido a nachokyle su comentario: | ||
#4
|
||||
|
||||
5) Ahora cambiaremos el color a la barra de notificaciones. Para ello vamos a la ruta Res/Values y abrimos el Drawable.xml.
Buscamos la línea: Código:
<item type="drawable" name="status_bar_background">#ff1e1e1e</item> Y listo, recompilamos. 6) Vamos a cambiar el color del reloj y la fecha en la barra de notificaciones, pero cuando está bajada. También el color de la propia barra. Vamos a Res/Values y abrimos styles.xml. Buscamos estas dos líneas: Código:
<style name="TextAppearance.StatusBar.Expanded.Clock" parent="@style/TextAppearance.StatusBar.Expanded"> <item name="android:textSize">32.0dip</item> <item name="android:textStyle">normal</item> <item name="android:textColor">#ff000000</item> <item name="android:fontFamily">sans-serif-light</item> </style> <style name="TextAppearance.StatusBar.Expanded.Date" parent="@style/TextAppearance.StatusBar.Expanded"> <item name="android:textSize">12.0dip</item> <item name="android:textStyle">normal</item> <item name="android:textColor">#ff000000</item> <item name="android:textAllCaps">true</item> Para editar el color de la propia barra de arriba, cuando las notificaciones están extendidas, pues vamos a Res/Layout y abrimos tw_status_bar_expanded_header.xml. En la primera línea del XML pone esto: Código:
<LinearLayout android:gravity="center_vertical" android:orientation="horizontal" android:background="#ff000000" android:layout… Una vez cambiados los colores, recompilamos. 7) Quitar la barra de brillo. Si no la queréis, es muy simple. Vamos a Res/Layout y abrimos tw_status_bar_expanded.xml. Buscamos por ahí esta línea: Código:
<LinearLayout android:orientation="vertical" android:id="@id/brightness_controller" android:background="#ff000000" android:layout_width="fill_parent" android:layout_height="56.0dip"… Hecho, recompilamos. 8)Eliminar botón limpiar notificaciones e integrarlo en la cabecera de la barra. Eliminar también la barra azul que pone “notificaciones” o “en curso”. Una cosa aparentemente pequeña, pero que sin duda da otro aire a la barra de tareas, es eliminar eso. Para ello: Vamos a Res/Values y abrimos Dimens.xml. Buscamos la línea: Código:
<dimen name="status_bar_expanded_notification_category_height"> Código:
<dimen name="status_bar_expanded_notification_category_height">0.0dip</dimen> Buscamos un cacho de código que sea así: Código:
<LinearLayout android:orientation="vertical" android:id="@id/notificationCart" android:background="#ff293945" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="@dimen/status_bar_expanded_notification_category_height"> <RelativeLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content"> <TextView android:textSize="@dimen/status_bar_expanded_notification_category_text_size" android:textStyle="bold" android:textColor="@color/notification_category_color" android:gravity="left|center" android:id="@id/latestNotificationText" android:paddingLeft="11.0dip" android:layout_width="180.0dip" android:layout_height="fill_parent" android:text="@string/status_bar_latest_events_title" android:layout_alignParentLeft="true" /> <TextView android:textSize="@dimen/status_bar_expanded_notification_clear_button_text_size" android:textColor="@color/tw_status_bar_clear_btn_text" android:gravity="center" android:id="@id/clear_all_button" android:background="@drawable/tw_btn_default_small" android:padding="0.100000024dip" android:focusable="true" android:clickable="true" android:layout_width="@dimen/status_bar_expanded_clear_button_width" android:layout_height="fill_parent" android:layout_marginRight="4.0dip" android:text="@string/status_bar_clear_all_button" android:layout_alignParentRight="true" android:contentDescription="@string/accessibility_clear_all" /> </RelativeLayout> Código:
<LinearLayout android:orientation="vertical" android:id="@id/notificationCart" android:background="#00000000" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="@dimen/status_bar_expanded_notification_category_height"> <RelativeLayout android:orientation="horizontal" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="wrap_content"> <TextView android:textSize="@dimen/status_bar_expanded_notification_category_text_size" android:textStyle="bold" android:textColor="@color/notification_category_color" android:gravity="left|center" android:id="@id/latestNotificationText" android:paddingLeft="11.0dip" android:visibility="gone" android:layout_width="180.0dip" android:layout_height="fill_parent" android:text="@string/status_bar_latest_events_title" android:layout_alignParentLeft="true" /> <TextView android:textSize="@dimen/status_bar_expanded_notification_clear_button_text_size" android:textColor="@color/tw_status_bar_clear_btn_text" android:gravity="center" android:id="@id/clear_all_button" android:background="@drawable/tw_btn_default_small" android:padding="0.100000024dip" android:focusable="true" android:visibility="gone" android:clickable="true" android:layout_width="@dimen/status_bar_expanded_clear_button_width" android:layout_height="fill_parent" android:layout_marginRight="4.0dip" android:text="@string/status_bar_clear_all_button" android:layout_alignParentRight="true" android:contentDescription="@string/accessibility_clear_all" /> </RelativeLayout> Por último, abrimos el tw_status_bar_expanded_header.xml Tenemos que copiar al archivo que hemos abierto esta línea: Código:
<ImageView android:id="@id/clear_all_button" android:layout_width="48.0dip" android:layout_height="48.0dip" android:src="@drawable/ic_notify_clear_normal" android:scaleType="center" android:contentDescription="@string/accessibility_clear_all" systemui:glowBackground="@drawable/ic_sysbar_highlight" /> Y en Res/Drawable-XHDPI, ponemos un .png de nombre ic_notify_clear_normal y de medidas 64x64. Es el icono que saldrá. Recompilamos y listo. Última edición por nachokyle Día 15/07/13 a las 01:01:00. |
Los siguientes 7 usuarios han agradecido a nachokyle su comentario: | ||
#5
|
||||
|
||||
9) Cambiar los toggles. Para cambiar los toggles solo hay que tener los iconos que vamos a poner, que son unos 50 y pico, y pegarlos con los mismos nombres y extensión que los originales.
Las rutas donde se tienen que pegar son Res/Drawable-XHDPI y Res/ Drawable-sw360dp-xhdpi. Es muy sencillito, recompilamos e ya. 10) Eliminar el texto de los toggles y el estado. Este es precioso a mi ver. Nos quita el nombre de los toggles y la barrita esa de abajo que nos dice si están activos o apagados. También nos elimina el fondo azul y aumentamos el tamaño de los commutadores. Vamos a Res/Layout y abrimos tw_quick_setting_button.xml. Buscamos esta línea: Código:
<ImageView android:layout_gravity="center" android:id="@id/btn_image" android:layout_width="fill_parent" android:layout_height="@dimen/quick_setting_button_image_height" android:layout_marginTop="@dimen/quick_setting_button_margin_top" /> Código:
<ImageView android:layout_gravity="center" android:id="@id/btn_image" android:layout_width="fill_parent" android:layout_height="90.0dip" android:layout_marginTop="0.0dip" /> Código:
<TextView android:textSize="@dimen/quick_setting_button_text_size"… Código:
<TextView android:textSize="@dimen/quick_setting_button_text_size" android:textColor="#00000000" android:gravity="center" android:id="@id/btn_text" android:layout_width="fill_parent" android:layout_height="0.0dip" android:includeFontPadding="false" /> Código:
<ImageView android:layout_gravity="center" android:id="@id/btn_status_image"... Código:
<ImageView android:layout_gravity="center" android:id="@id/btn_status_image" android:paddingLeft="0.0dip" android:paddingTop="0.0dip" android:paddingRight="0.0dip" android:paddingBottom="0.0dip" android:layout_width="fill_parent" android:layout_height="0.0dip" android:scaleType="fitXY" android:drawable="@drawable/tw_quick_panel_off" /> Buscamos unas líneas que empiezan por: Código:
<dimen name="quick_setting_button_ Código:
<dimen name="quick_setting_button_height">90.0dip</dimen> <dimen name="quick_setting_button_image_height">90.0dip</dimen> <dimen name="quick_setting_button_text_height">0.0dip</dimen> <dimen name="quick_setting_button_text_size">0.0dip</dimen> <dimen name="quick_setting_button_status_height">0.0dip</dimen> <dimen name="quick_setting_button_status_padding">2.0dip</dimen> <dimen name="quick_setting_button_margin_top">0.0dip</dimen> Buscamos: Código:
<com.android.systemui.statusbar.policy.quicksetting.QuickSettingPanel android:orientation="horizontal" android:id="@id/quicksetting_container" android:layout_width="wrap_content" android:layout_height="wrap_content"... Por último, buscamos: Código:
<HorizontalScrollView android:id="@id/quicksetting_scroller" android:scrollbars="none" android:layout_width="wrap_content"... 11) Implementar el mod del candado o un Home o Recientes en la barra de notificaciones expandida. Aquí dejo un enlace a un tema de Grouxho donde explica fabulosamente como implementarlos. Es muy simple. http://www.esp-desarrolladores.com/showthread.php?t=929 Última edición por nachokyle Día 15/07/13 a las 01:06:50. |
Los siguientes 7 usuarios han agradecido a nachokyle su comentario: | ||
#6
|
||||
|
||||
Voy a reciclar capturas de mi rom, porque soy tan genio que no las he ido sacando conforme hacía el tutorial.
Aquí vemos como quedan los toggles del paso número 10, también el closer cambiado al igual que el back, que está semitransparente. Tampoco hay rastos del operador y el color del reloj y la data cambiados.
(Click para mostrar/ocultar)
Aquí en pequeño se ve el mod de recientes y el boton clear borrado y puesto en la barra.http://www.esp-desarrolladores.com/a...4&d=1373499013 Última edición por nachokyle Día 15/07/13 a las 01:54:39. |
Los siguientes 4 usuarios han agradecido a nachokyle su comentario: | ||
#7
|
||||
|
||||
Creía que cabían más carácteres
|
#8
|
||||
|
||||
Muy interesante el tuto, pero mi pregunta es si sirve para todo tipo de roms, cm, aokp, etc, o solo es para las stock de samsung?
__________________
L'Ermite666
|
#9
|
||||
|
||||
Este es solo para Stock o basado en stock. En AOSP y demás serán otros archivos. Si te fijas, muchos archivos que salen en el tuto tienen el prefijo TW, que es de Samsung.
|
Gracias de parte de: | ||
#10
|
||||
|
||||
Enhorabuena nacho, ,me parece un tuyo muy completito y sobre todo muy currado.......seguro que ayudarás y sacarás a más de uno de un aprieto, me lo apunto a favoritos....., ya sabes todo lo que este en mis manos te ayudaré! !!
__________________
|
Gracias de parte de: | ||
#11
|
||||
|
||||
Muchas gracias por el aporte. Muy bien explicado todo, si señor.
__________________
AKnoxtumbrate a ello...
|
Gracias de parte de: | ||
#12
|
||||
|
||||
Guau gran tutorial! pensaba que se te olvidaba o que te daria pereza hacerlo jajaja.
Deberia estar en chincheta pues es algo que ayudara a mucha gente como a mi que cuando me saque un hueco lo seguire con una lectura mas profunda paso a paso y lo pondre en practrica. Bueno muchas gracias de nuevo por ayudarme la otra vez con la barra y ahora a verte tomado la molestia de dedicarte a hacer este gran tutorial. P.D:En mi lectura rapida nose si es que me lo he pasado por alto o no esta pero creo que deberia incluir lo de cambiar el modo al que se accede con + home y apagar (que ahora nk me sale su nombre) no vaya a ser que sean novatos como yo y tengan el de fabrica jajaja Si lo tienes incluido me callo es por intentar ayudar en tu tutorial que repito de momento solo le he echado una lectura rapida. |
Gracias de parte de: | ||
#13
|
||||
|
||||
Guau gran tutorial! pensaba que se te olvidaba o que te daria pereza hacerlo jajaja.
Deberia estar en chincheta pues es algo que ayudara a mucha gente como a mi que cuando me saque un hueco lo seguire con una lectura mas profunda paso a paso y lo pondre en practrica. Bueno muchas gracias de nuevo por ayudarme la otra vez con la barra y ahora a verte tomado la molestia de dedicarte a hacer este gran tutorial. P.D:En mi lectura rapida nose si es que me lo he pasado por alto o no esta pero creo que deberia incluir lo de cambiar el modo al que se accede con + home y apagar (que ahora nk me sale su nombre) no vaya a ser que sean novatos como yo y tengan el de fabrica jajaja Si lo tienes incluido me callo es por intentar ayudar en tu tutorial que repito de momento solo le he echado una lectura rapida. El caso es que esto requiere mucho tiempo, mucho decompilar y probar cosas para que todo esté bien y tal, y como encima he estado tiempo fuera pues eso se ha traducido en demora. Vale, luego aviso de eso, que no está. No es necesario porque el recovery no se usa, daré un par de avisos más. |
Gracias de parte de: | ||
#14
|
||||
|
||||
nachokyle he probado con varios tamaños de fotos y siempre me sale la mitad tapada, e probado con 720*1280 , 720*720 , 720*500 y siempre me sale la foto en la misma posicion, como hago para que me cuadre bien? gracias
|
#15
|
||||
|
||||
|
#16
|
||||
|
||||
|
#17
|
||||
|
||||
|
#18
|
||||
|
||||
Pero piensa que tienes que calcular a ojo las medidas. De los 1280 píxeles de alto, quizás los 300 o 400 primeros píxeles están ocupados por los toggles y la barra de brillo, por lo que hay que empezar el dibujo a partir de esa zona, y dejar lo de arriba en blanco (o negro o lo que sea). De paso os comparto la barra de notificaciones de mi rom. Le faltan cuatro cosas que le pondré mañana y cambiar los toggles a unos que me están haciendo, pero grosso modo es eso: |
Gracias de parte de: | ||
#19
|
||||
|
||||
Hola,
Tengo varias dudas. intente descompilar la rom de samsung desde windows y no he podido, asi que lo hice desde ubuntu, pero desde ahi no puedo modificar los .xml, y en windiws no se descompilar la rom para conseguir el systemui Una ayuda por favor!!no tengo ni idea de como seguir Muchas gracias |
|
#20
|
||||
|
||||
Estás aquí | ||||||
|