[TUTO] ░█░ WHATSAPP Architecture by YORZUA© ░█░ - Android Themes

Hi Peeps,
I had to close my thread [APP] ░█░ W H A T S A P P by YORZUA© ░█░ but i don't forget all those who followed me, helped me with their feedbacks, supported me with their good comments and/or donated to me.
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
The purpose of this thread is not to post my versions/updates of my whatsapp mods but to guide you how to mod every single pixel of the whatsapp.apk and be able to create your own versions.
I will add in the future my mods in packages [ DARK - ICS - RED - W8 - Blossom - Notepad - DARK+ICS - BURNED ] in order to help you updating your favorites mods
First of all, you will need to learn how to decompile / compile / sign the application Whatsapp.apk so for those who have no idea how to : please check my tuto How to decompile/recompile/Sign Whatsapp.apk with my kit made for you
All questions about that part MUST be posted on the relevant thread
You will find the full listing of the files we are working with in this tutorial on the 2nd post _ as the list is quite long, i will keep adding articles ( with clear information and screenshots ) on a daily basis
Let's do it in different chapters ( order of chapters may differ according to feedbacks ) :
I. Intro
II. Drawables
III. Gradients & Selectors
IV. Layout
V. Values & Manifest
VI. Tweaks & Updates
Please read carefully and test/do by yourself before to post in order to keep as clean as possible this interactive thread
Good luck and enjoy the cooking ☺☼♪♫​

Index of files
Please find here the full listing of the files you need to change in order to release a whatsapp.apk as i do :
XML's + PNG's + 9.PNG's
\res\drawable-hdpi\
about_logo.png
account_medal.png
account_present.png
add_person_gray.png
add_person_white.png
albumart.png
albumart_small.png
androidface.png
attach_audio.png
attach_contact.png
attach_gallery.png
attach_location.png
attach_location_square.png
attach_video.png
audio_message.png
avatar03.png
avatar_group.png
avatar_group02.png
avatar_self.png
background.jpg
background_landscape.jpg
background_repeat.xml
backpattern.png
backrepeat.xml
blocked_contact.png
blue_button.9.png
blue_button_background.xml
broadcast_cross.png
btn_dropdown.xml
btn_dropdown_normal.png
btn_dropdown_pressed.png
btn_media_next_default.png
btn_media_next_press.png
btn_media_next_selected.png
btn_media_prev_default.png
btn_media_prev_press.png
btn_media_prev_selected.png
btn_share_48.png
btn_show_all_60.png
button_aperture.png
button_attach.png
button_disabled.9.png
button_emoji.png
button_help.png
button_layers.png
button_left.png
button_my_location.png
button_pen.png
button_refresh.png
button_right.png
button_search.png
call.png
camera_crop_height.png
camera_crop_width.png
camera_icon.png
camera_overlay.png
circlepenicon.png
clear.png
clear_search_btn.png
compose.png
contact_by_email.png
contact_lookup_map.png
contactpicker_bar_pattern.png
contactpicker_bar_repeat.xml
contactpicker_button.9.png
contactpicker_button_pressed.9.png
countrypicker_checkmark.png
dark_row.9.png
date_balloon.9.png
div.png
div_small.png
div_vert.png
divider.xml
divider_horizontal_list.png
divider_vertical.png
dropdown_bottom.png
dropdown_middle.png
dropdown_top.png
e001.png
e002.png
e003.png
e004.png
e005.png
e006.png
e007.png
e008.png
e009.png
e00a.png
e00b.png
e00c.png
e00d.png
e00e.png
e00f.png
e010.png
e011.png
e012.png
e013.png
e014.png
e015.png
e016.png
e017.png
e018.png
e019.png
e01a.png
e01b.png
e01c.png
e01d.png
e01e.png
e01f.png
e020.png
e021.png
e022.png
e023.png
e024.png
e025.png
e026.png
e027.png
e028.png
e029.png
e02a.png
e02b.png
e02c.png
e02d.png
e02e.png
e02f.png
e030.png
e031.png
e032.png
e033.png
e034.png
e035.png
e036.png
e037.png
e038.png
e039.png
e03a.png
e03b.png
e03c.png
e03d.png
e03e.png
e03f.png
e040.png
e041.png
e042.png
e043.png
e044.png
e045.png
e046.png
e047.png
e048.png
e049.png
e04a.png
e04b.png
e04c.png
e04d.png
e04e.png
e04f.png
e050.png
e051.png
e052.png
e053.png
e054.png
e055.png
e056.png
e057.png
e058.png
e059.png
e05a.png
e101.png
e102.png
e103.png
e104.png
e105.png
e106.png
e107.png
e108.png
e109.png
e10a.png
e10b.png
e10c.png
e10d.png
e10e.png
e10f.png
e110.png
e111.png
e112.png
e113.png
e114.png
e115.png
e116.png
e117.png
e118.png
e119.png
e11a.png
e11b.png
e11c.png
e11d.png
e11e.png
e11f.png
e120.png
e121.png
e122.png
e123.png
e124.png
e125.png
e126.png
e127.png
e128.png
e129.png
e12a.png
e12b.png
e12c.png
e12d.png
e12e.png
e12f.png
e130.png
e131.png
e132.png
e133.png
e134.png
e135.png
e136.png
e137.png
e138.png
e139.png
e13a.png
e13b.png
e13c.png
e13d.png
e13e.png
e13f.png
e140.png
e141.png
e142.png
e143.png
e144.png
e145.png
e146.png
e147.png
e148.png
e149.png
e14a.png
e14b.png
e14c.png
e14d.png
e14e.png
e14f.png
e150.png
e151.png
e152.png
e153.png
e154.png
e155.png
e156.png
e157.png
e158.png
e159.png
e15a.png
e201.png
e202.png
e203.png
e204.png
e205.png
e206.png
e207.png
e208.png
e209.png
e20a.png
e20b.png
e20c.png
e20d.png
e20e.png
e20f.png
e210.png
e211.png
e212.png
e213.png
e214.png
e215.png
e216.png
e217.png
e218.png
e219.png
e21a.png
e21b.png
e21c.png
e21d.png
e21e.png
e21f.png
e220.png
e221.png
e222.png
e223.png
e224.png
e225.png
e226.png
e227.png
e228.png
e229.png
e22a.png
e22b.png
e22c.png
e22d.png
e22e.png
e22f.png
e230.png
e231.png
e232.png
e233.png
e234.png
e235.png
e236.png
e237.png
e238.png
e239.png
e23a.png
e23b.png
e23c.png
e23d.png
e23e.png
e23f.png
e240.png
e241.png
e242.png
e243.png
e244.png
e245.png
e246.png
e247.png
e248.png
e249.png
e24a.png
e24b.png
e24c.png
e24d.png
e24e.png
e24f.png
e250.png
e251.png
e252.png
e253.png
e301.png
e302.png
e303.png
e304.png
e305.png
e306.png
e307.png
e308.png
e309.png
e30a.png
e30b.png
e30c.png
e30d.png
e30e.png
e30f.png
e310.png
e311.png
e312.png
e313.png
e314.png
e315.png
e316.png
e317.png
e318.png
e319.png
e31a.png
e31b.png
e31c.png
e31d.png
e31e.png
e31f.png
e320.png
e321.png
e322.png
e323.png
e324.png
e325.png
e326.png
e327.png
e328.png
e329.png
e32a.png
e32b.png
e32c.png
e32d.png
e32e.png
e32f.png
e330.png
e331.png
e332.png
e333.png
e334.png
e335.png
e336.png
e337.png
e338.png
e339.png
e33a.png
e33b.png
e33c.png
e33d.png
e33e.png
e33f.png
e340.png
e341.png
e342.png
e343.png
e344.png
e345.png
e346.png
e347.png
e348.png
e349.png
e34a.png
e34b.png
e34c.png
e34d.png
e401.png
e402.png
e403.png
e404.png
e405.png
e406.png
e407.png
e408.png
e409.png
e40a.png
e40b.png
e40c.png
e40d.png
e40e.png
e40f.png
e410.png
e411.png
e412.png
e413.png
e414.png
e415.png
e416.png
e417.png
e418.png
e419.png
e41a.png
e41b.png
e41c.png
e41d.png
e41e.png
e41f.png
e420.png
e421.png
e422.png
e423.png
e424.png
e425.png
e426.png
e427.png
e428.png
e429.png
e42a.png
e42b.png
e42c.png
e42d.png
e42e.png
e42f.png
e430.png
e431.png
e432.png
e433.png
e434.png
e435.png
e436.png
e437.png
e438.png
e439.png
e43a.png
e43b.png
e43c.png
e43d.png
e43e.png
e43f.png
e440.png
e441.png
e442.png
e443.png
e444.png
e445.png
e446.png
e447.png
e448.png
e449.png
e44a.png
e44b.png
e44c.png
e501.png
e502.png
e503.png
e504.png
e505.png
e506.png
e507.png
e508.png
e509.png
e50a.png
e50b.png
e50c.png
e50d.png
e50e.png
e50f.png
e510.png
e511.png
e512.png
e513.png
e514.png
e515.png
e516.png
e517.png
e518.png
e519.png
e51a.png
e51b.png
e51c.png
e51d.png
e51e.png
e51f.png
e520.png
e521.png
e522.png
e523.png
e524.png
e525.png
e526.png
e527.png
e528.png
e529.png
e52a.png
e52b.png
e52c.png
e52d.png
e52e.png
e52f.png
e530.png
e531.png
e532.png
e533.png
e534.png
e535.png
e536.png
e537.png
emoji_bell.png
emoji_bell_green.png
emoji_border.xml
emoji_car.png
emoji_car_green.png
emoji_flower.png
emoji_flower_green.png
emoji_group_bottom.xml
emoji_group_bottom_selected.xml
emoji_group_top.xml
emoji_group_top_selected.xml
emoji_smile.png
emoji_smile_green.png
emoji_triangle.png
envelope.png
expander_close.png
expander_open.png
gradient.xml
gray_bubble.9.png
gray_bubble_body.9.png
gray_bubble_bottom.9.png
gray_bubble_top.9.png
green_bubble.9.png
group_info_chevron_right.png
groups.png
header_grey_gradient.xml
header_repeat.xml
ic_button_add.png
ic_menu_add.png
ic_menu_attach.png
ic_menu_block.png
ic_menu_call.png
ic_menu_contact.png
ic_menu_contactinfo.png
ic_menu_contacts.png
ic_menu_delete.png
ic_menu_group.png
ic_menu_help.png
ic_menu_info.png
ic_menu_media.png
ic_menu_more.png
ic_menu_mute.png
ic_menu_muteoff.png
ic_menu_mylocation.png
ic_menu_new.png
ic_menu_refresh.png
ic_menu_settings.png
ic_menu_share.png
ic_menu_shortcut.png
ic_menu_status.png
ic_menu_wallpaper.png
ic_muted.png
ic_round_more_normal.png
icon.png
icon_more.png
image_message.png
image_overlay.9.png
image_overlay_pressed.9.png
image_overlay_selected.9.png
input_code.png
light_gray_gradient.xml
location_blue.png
location_blue_1.png
location_green.png
location_pink.png
location_red.png
logo.png
menu_divider.png
menuitem_debug.png
message_got_receipt_from_server.png
message_got_receipt_from_target.png
message_unsent.png
msg_read.png
msg_status_client_received.png
msg_status_gray_waiting.png
msg_status_read.png
msg_status_red_waiting.png
msg_status_server_receive.png
msg_status_unread.png
msg_unread.png
notifybar.png
notifybar_error.png
pen_gray.png
people.png
picture_loading.png
platforms.png
powered_by_foursquare_white.png
powered_by_google_on_white.png
red_button.9.png
red_button_background.xml
refresh_btn.png
register_balloon.png
register_error.png
register_phone.png
register_semitrans_pane.9.png
repeatable_conversation_divider.png
search_web.png
selector_conversation_row_highlighted.xml
selector_emoji_bell.xml
selector_emoji_car.xml
selector_emoji_flower.xml
selector_emoji_imageview.xml
selector_emoji_smile.xml
selector_media_next.xml
selector_media_prev.xml
selector_orange_gradient.xml
selector_orange_gradient_bottom.xml
selector_orange_gradient_on_beige.xml
selector_orange_gradient_on_drkgray.xml
selector_orange_gradient_on_gray.xml
selector_orange_gradient_top.xml
selector_picker_table_row.xml
selector_place_overlay.xml
selector_transparent.xml
selector_transparent_gray.xml
shared_contact_btn.png
subheader_pattern.png
subheader_pattern_dark.png
topbar_background.png
topbar_pattern.png
videooverlay.png
wallet.png
-----------------------------------------------------
XML's
\res\layout\
about.xml
about_landscape.xml
account_info.xml
advanced.xml
app_chooser_dialog.xml
app_chooser_row.xml
autocomplete_list_row.xml
block_list.xml
broadcast_message_composer.xml
contact.xml
contact_map_balloon.xml
contact_picker.xml
contact_picker_group_row.xml
contact_picker_help.xml
contact_picker_help_row.xml
contact_picker_row.xml
contact_picker_tell_friends.xml
contacts_list.xml
contacts_row.xml
conversation.xml
conversation_contact_row_left.xml
conversation_contact_row_right.xml
conversation_divider_row.xml
conversation_header.xml
conversation_location_row_left.xml
conversation_location_row_right.xml
conversation_row_media_left.xml
conversation_row_media_right.xml
conversation_text_row_left.xml
conversation_text_row_right.xml
conversation_unread_divider.xml
conversations.xml
conversations_notice_row.xml
conversations_row.xml
conversations_tip_row.xml
country_picker.xml
country_picker_row.xml
cropimage.xml
custom_rounded_corner.xml
delete_account.xml
delete_account_confirmation.xml
describe_problem.xml
download_media_progress.xml
editstatus.xml
edittext_dialog.xml
emoji_edittext_dialog.xml
emoji_list_row.xml
empty_tell_a_friend.xml
eula.xml
group_subject_editor.xml
groupchat_info.xml
groupchat_info_footer.xml
groupchat_info_header.xml
groupchat_map.xml
help.xml
imageactivity.xml
location_picker.xml
location_picker_header.xml
location_picker_progress.xml
location_picker_row.xml
login.xml
media_gallery.xml
media_view.xml
multiline_notification.xml
multiple_contact_picker.xml
multiple_contact_picker_footer.xml
multiple_contact_picker_row.xml
multiple_contact_picker_row_empty.xml
multiple_contact_picker_search.xml
network_usage.xml
overlay_alert.xml
participant_list_row.xml
pickfiletype.xml
popup_notification.xml
push_name_preference_title.xml
recordaudio.xml
registername.xml
registerphone.xml
setstatus.xml
setstatus_row.xml
verify_sms.xml
video_activity.xml
view_profile_photo.xml
view_shared_contact.xml
view_shared_contact_row.xml
wallpaper_item.xml
wallpaper_picker.xml
web_image_picker.xml
-----------------------------------------------------
XML's
\res\values\
colors
dimens
public
strings
styles
-----------------------------------------------------
SMALI's
\smali\com\whatsapp
1,156 files i am not gonna copy here
For your help, i even made a clear tuto for decompiling/compiling/signing Whatsapp and another clear tuto to create your 9.png

Showroom
Shall i show you a small example of what you can achieve by following my whatsapp tuto

I. Intro
Chapter I. Intro​
If you install Whatsapp.apk for the first time, this is the very first image you get in your screen and i will show you how to mod it
The file is located in \Whatsapp\res\layout\eula.xml
• android:background="@drawable/background"
will allow you to change the background by changing to a solid color "#ffrrggbb" or a gradient ="@drawable/gradient" or a transparent background ( will see that in another chapter )
• android:id="@id/eula_title"
this line will allow you to change the first title text
android:textColor="#ffffffff"
android:textSize="20.0sp"
android:textStyle="normal"
android:gravity="center"
will see later for the other options but if you dont like the content of the text, android:text="@string/eula_title" tells you where to change it => in \Whatsapp\res\values\strings.xml OR \res\values-es\strings.xml if your current rom language is set to spanish for example.
Just look for the line eula_title in \res\values-es\strings
<string name="eula_title">¡Bienvenido a WhatsApp BurnedYorzua!</string>
• android:id="@id/logo"
will allow you to change the logo by changing to a solid color "#ffrrggbb" or a gradient ="@drawable/gradient" or a transparent background ( will see that in another chapter )
in this case, android:src="@drawable/about_logo" but can be whatever you want
• android:id="@id/eula_description"
this line will allow you to change the 3 lines text under the logo
android:textSize="17.0sp"
android:textColor="#ffffffff"
android:gravity="center"
• android:id="@id/eula_platform_bar"
will allow you to change the plateforms logo by changing to a solid color "#ffrrggbb" or a gradient ="@drawable/gradient" or a transparent background ( will see that in another chapter )
in this case, android:src="@drawable/platforms" but can be whatever you want
You will see at the end of the line
android:layout_below="@id/eula_description"
which means that the layout force the plateform logo to be below the 3 lines description but up to you if you wanna change the order of the elements
• android:id="@id/eula_view" refering to android:text="@string/eula_terms_and_conditions"
android:textSize="17.0sp"
android:textColor="#ffffffff"
android:gravity="center"
will see later for the other options but if you dont like the content of the text, android:text="@string/eula_title" tells you where to change it => in \Whatsapp\res\values\strings.xml OR \res\values-es\strings.xml if your current rom language is set to spanish for example.
Just look for the line eula_terms_and_conditions in \res\values-es\strings
<string name="eula_terms_and_conditions">Términos y Condiciones</string>
• android:id="@id/eula_bottom_bar"
will allow you to change the color of the bar
android:background="#bbd2323b"
will allow you to change the size of the bar
android:layout_height="9.0dip"
• android:background="#ff000000"
will allow you to change the background by changing to a solid color "#ffrrggbb" or a gradient ="@drawable/gradient" or a transparent background ( will see that in another chapter ) or even a picture ="@drawable/wallpaper001"
• android:id="@id/eula_accept" refering to
android:text="@string/eula_agree"
android:textSize="17.0sp"
android:textStyle="bold"
android:textColor="#ffffffff"
android:gravity="center"
will see later for the other options but if you dont like the content of the text, android:text="@string/eula_agree" tells you where to change it => in \Whatsapp\res\values\strings.xml OR \res\values-es\strings.xml if your current rom language is set to spanish for example.
Just look for the line eula_terms_and_conditions in \res\values-es\strings
<string name="eula_agree">Acepto, deseo continuar</string>
If you decompile, edit eula.xml , recompile and sign successfully your whatsapp.apk ___ congratulations, you can enjoy your first piece of mod
then you could play with the file as you wish

about / about_landscape
We just learned how to change the first screen of whatsapp after 1st installation.
How about a second installation or update ?
You will need to edit about.xml and about_landscape.xml which are very similar to eula.xml
The file is located in \Whatsapp\res\layout\about.xml
• android:background="@drawable/background"
will allow you to change the background by changing to a solid color "#ffrrggbb" or a gradient ="@drawable/gradient" or a transparent background ( will see that in another chapter )
• android:id="@id/eula_title"
this line will allow you to change the first title text
android:textColor="#ffffffff"
android:textSize="20.0sp"
android:textStyle="normal"
android:gravity="center"
will see later for the other options but if you dont like the content of the text, android:text="@string/eula_title" tells you where to change it => in \Whatsapp\res\values\strings.xml OR \res\values-es\strings.xml if your current rom language is set to spanish for example.
Just look for the line eula_title in \res\values-es\strings
<string name="eula_title">¡Bienvenido a WhatsApp BurnedYorzua!</string>
• android:id="@id/logo"
will allow you to change the logo by changing to a solid color "#ffrrggbb" or a gradient ="@drawable/gradient" or a transparent background ( will see that in another chapter )
in this case, android:src="@drawable/about_logo" but can be whatever you want
• android:id="@id/eula_description"
this line will allow you to change the 3 lines text under the logo
android:textSize="17.0sp"
android:textColor="#ffffffff"
android:gravity="center"
• android:id="@id/eula_bottom_bar"
will allow you to change the color of the bar
android:background="#bbd2323b"
will allow you to change the size of the bar
android:layout_height="9.0dip"
• android:background="#ff000000"
will allow you to change the background by changing to a solid color "#ffrrggbb" or a gradient ="@drawable/gradient" or a transparent background ( will see that in another chapter ) or even a picture ="@drawable/wallpaper001"
• android:id="@id/about_contact1" and android:id="@id/about_contact2" refering to
android:text="@string/contact1"
android:text="@string/contact2"
android:textSize="17.0sp"
android:textStyle="bold"
android:textColor="#ffffffff"
android:gravity="center"
will see later for the other options but if you dont like the content of the text, android:text="@string/contact1" tells you where to change it => in \Whatsapp\res\values\strings.xml OR \res\values-es\strings.xml if your current rom language is set to spanish for example.
Just look for the line contact1 and contact2 in \res\values-es\strings
<string name="contact1">Contactar</string>
<string name="contact2">¿Dudas? ¿Comentarios? ¿Necesita ayuda?</string>
If you decompile, edit eula.xml , recompile and sign successfully your whatsapp.apk ___ congratulations, you can enjoy your first piece of mod
◘◘◘ Dont forget to edit about_landscape.xml as well which is the exactly same construction than about.xml
When you rotate your phone, you will see something like this
By changing the background, you can get a nice surprise effect when rotating or just let the same background if you want to.

registerphone / registername
Next screen will redirect you to register your phone number
The file is located in \Whatsapp\res\layout\registerphone.xml
• android:background="@drawable/background_repeat"
will allow you to change the background by changing to a solid color "#ffrrggbb" or a gradient ="@drawable/gradient" or a transparent background ( will see that in another chapter )
background_repeat correspond here to the background_repeat.xml in \Whatsapp\res\drawable-hdpi :
<bitmap android:src="@drawable/backpattern" android:tileMode="repeat"
backpattern.png will be repeated as more as needed to fill the background of the registerphone screen.
• <RelativeLayout style="@style/Header">
<TextView android:ellipsize="end" android:text="@string/register_phone_header" style="@style/Text.Header" />
</RelativeLayout>
<View style="@style/HeaderDivider" />
Each style can be found and modified in the file "styles.xml" located at \Whatsapp\res\values\styles
in this case, the style Header will attribute to the registerphone screen the following :
<item name="android:gravity">center_vertical</item>
<item name="android:background">@drawable/header_repeat</item>
<item name="androidaddingTop">2.0dip</item>
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">@dimen/header_height</item>
You can chose to work with a style or not, you can chose to edit directly a style but be aware that this style might be used by another xml and modifiy consequently both parts.
in this example, the png for my header in the registerphone screen will be
android:background">@drawable/header_repeat which correspond to the header_repeat.xml
<bitmap android:src="@drawable/topbar_pattern" android:tileMode="repeat"
===> if you are following, you could avoid all this by changing from
<RelativeLayout style="@style/Header">
to
<RelativeLayout android:background="@drawable/topbar_pattern"
which is the same, except that the style allows you to add more settings in one command :
style="@style/Header"
is equal to
<item name="android:gravity">center_vertical</item>
<item name="android:background">@drawable/header_repeat</item>
<item name="androidaddingTop">2.0dip</item>
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">@dimen/header_height</item>
Easy, right ?!
Same system for all the styles and you can add your own styles in the styles.xml
For all my versions, i added a couple of new styles in order to implement a diferent layout but will see that in next chapters.
• the text in the header will be defined by the style="@style/Text.Header"
style name="Text.Header" parent="@style/Text">
<item name="android:textSize">19.0sp</item>
<item name="android:typeface">sans</item>
<item name="android:textStyle">bold</item>
<item name="android:textColor">#ffffffff</item>
<item name="android:gravity">center</item>
<item name="android:layout_gravity">left|center</item>
<item name="androidaddingLeft">16.0dip</item>
<item name="androidaddingRight">16.0dip</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:shadowColor">#ff333333</item>
<item name="android:shadowDx">0.0</item>
<item name="android:shadowDy">-1.0</item>
<item name="android:shadowRadius">1.0</item>
• <EditText android:textColor="#ff000000" android:textColorHint="#ff888888" android:gravity="center" android:id="@id/registration_phone"
will allow you to define the color for the digits you will enter in the field
• the text in the screen will be defined by the style="@style/Text.Description"
<style name="Text.Description" parent="@style/Text">
<item name="android:textSize">16.0sp</item>
<item name="android:typeface">sans</item>
<item name="android:textStyle">normal</item>
<item name="android:textColor">#ff33b5e5</item>
<item name="android:gravity">left</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:shadowColor">@color/white</item>
<item name="android:shadowDx">1.0</item>
<item name="android:shadowDy">1.0</item>
<item name="android:shadowRadius">0.0</item>
<item name="android:lineSpacingMultiplier">1.25</item>
<item name="android:textColor">#ff33b5e5</item> gives a ICS text colored for example
◘◘◘ Exactly the same works for the file registername.xml
this screen is the next after registering the phone number and will be modified with the same styles of registerphone.xml if you dont change it.

This is an amazingly detailed guide, thank you! I'll definitely try it out after I sort my papers & finish up my exams.
-----------------------
サンソングガラクシS II からタパトクで書いた。

Wow, you're the fist themer that realizes how big this if for people trying into themeing apks for android!!!
What a wonderful piece of tutorial here, thanks so much!!

Hey yorzua bro, you are a great person it seems. Such a detail guide even a noob can make a wonderful mod with this tutorial but what about people like me who has no time for making all this stuff b'coz of no time. I am doctor by profession and no time at all, working 8 days a week. Plz tell me the solution for person like me.
Sent from my GT-I9000 using Tapatalk

Please keep the thread on topic only
Yorzua said:
Please read carefully and test/do by yourself before to post in order to keep as clean as possible this interactive thread /SIZE][/CENTER]
Click to expand...
Click to collapse
Off-topic included
drshafi said:
Hey yorzua bro, you are a great person it seems. Such a detail guide even a noob can make a wonderful mod with this tutorial but what about people like me who has no time for making all this stuff b'coz of no time. I am doctor by profession and no time at all, working 8 days a week. Plz tell me the solution for person like me.
Click to expand...
Click to collapse
I am working 5 days per week ( 13 hours per day including public transport ) and i have no time but i find it if i really want it.
By the way, i had a solution for you here but not releasing my mods anymore since some leechers published and uploaded my work out there...
Happy theming

Tyrol said:
This is an amazingly detailed guide, thank you! I'll definitely try it out after I sort my papers & finish up my exams.
-----------------------
サンソングガラクシS II からタパトクで書いた。
Click to expand...
Click to collapse
Oh well, that's exactly what I was going to post.
@Yorzua Your work is just too good!!

conversations.xml / conversations_row.xml
Next screen after registering your phone number and your name will be the "Chats" screen
This screen is composed by conversations.xml and conversations_row.xml
To understand all the mechanism of those two xml's, you may preferably have some notions of how works a Layout in android.
As i said, the order of chapters may differ
I. Intro
II. Drawables
III. Gradients & Selectors
IV. Layout
V. Values & Manifest
VI. Tweaks & Updates
If you dont have notions at all about how works a Layout in android, i will try to simplify and clarify as more as possible sticking to the whatsapp architecture.
The "Chats" screen is a great example of simple layout we can work on to make it more unique and less boring than the stock one.
◘◘◘ Conversations.xml will allow you to mod the header part :
header
text
icons
• android:background="@null"
will allow you to change the background by changing to a solid color "#ffrrggbb" or a gradient ="@drawable/gradient" or a transparent background ( will see that in another chapter )
• style="@style/Header"
Each style can be found and modified in the file "styles.xml" located at \Whatsapp\res\values\styles
in this case, the style Header will attribute to the Chats screen the following header settings :
<item name="android:gravity">center_vertical</item>
<item name="android:background">@drawable/header_repeat</item>
<item name="androidaddingTop">2.0dip</item>
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">@dimen/header_height</item>
again, the png for my header in the Chats screen will be
android:background">@drawable/header_repeat which correspond to the header_repeat.xml
<bitmap android:src="@drawable/topbar_pattern" android:tileMode="repeat"
• The next layout ( <LinearLayout> blablablbalbaa </LinearLayout> ) will allow you to set the content of the header for Chats screen
In the stock apk, you get :
<LinearLayout android:gravity="left|center" android:id="@id/header_ll" android:layout_width="fill_parent" android:layout_height="fill_parent">
<TextView android:layout_gravity="left|center" android:text="@string/chats" style="@style/Text.HeaderCentered" />
<ImageView android:layout_gravity="top|right|center" android:id="@id/divider1" android:background="@drawable/divider" android:layout_width="wrap_content" android:layout_height="fill_parent" />
<ImageButton android:layout_gravity="right|center" android:id="@id/button_search" android:background="@null" android:layout_width="@dimen/header_height" android:layout_height="@dimen/header_height" android:src="@drawable/button_search" android:scaleType="center" style="@style/HeaderButton" />
<ImageView android:layout_gravity="top|right|center" android:id="@id/divider1" android:background="@drawable/divider" android:layout_width="wrap_content" android:layout_height="fill_parent" />
<ImageButton android:layout_gravity="right|center" android:id="@id/button_compose_chat" android:background="@null" android:layout_width="@dimen/header_height" android:layout_height="@dimen/header_height" android:src="@drawable/button_pen" android:scaleType="center" style="@style/HeaderButton" />
</LinearLayout>
Which correspond to
In my XL versions, i changed this order for this one
==> Notice that you can erase the dividers between the icons by :
editing the png divider1.png located in \res\drawable-hdpi ( blank png )
or
changing android:background="@drawable/divider" by android:background="@null"
• <ScrollView android:id="@id/conversations_empty" android:background="@drawable/background_repeat"
will allow you to set a background for the Chats screen when not enough conversations are running to fill the screen so a background is required
You can set android:background="@null" for no background
You can even delete this option or to set a solid color "#ffrrggbb" or a gradient ="@drawable/gradient" or a transparent background ( will see that in another chapter )
• the last layout of conversations.xml will allow you to set the welcome screen
LinearLayout androidrientation="vertical" androidaddingLeft="@dimen/horizontal_padding" androidaddingRight="@dimen/horizontal_padding" android:layout_width="fill_parent" android:layout_height="fill_parent">
<ImageView android:layout_gravity="center" androidaddingTop="50.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/circlepenicon" />
<TextView android:textSize="22.0sp" android:textStyle="bold" androidaddingTop="20.0dip" androidaddingBottom="3.0dip" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/welcome" style="@style/Text" />
<TextView android:textSize="14.0sp" android:id="@id/welcome_message" androidaddingBottom="50.0dip" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/welcome_message" style="@style/Text" />
</LinearLayout>
same than usual, you can edit the text
android:textSize="22.0sp"
android:textStyle="bold
you can edit the content of the text
android:text="@string/welcome_message" located in \res\values
in my case,
<string name="welcome_message">Para empezar a enviar mensajes a los contactos que ya tengan WhatsApp en su móvil, toque el icono de la esquina superior derecha.</string>
Congratulations, you just learn how to mod the header for the Chats screen
This method works for all the headers you will find in each screen.
----------------------- ----------------------------
We need now to mod the next part of the screen which are the rows corresponding of the running chats
◘◘◘ Conversations_row.xml will allow you to mod the rows part :
contact picture
name picture
date
last message
• android:layout_height="@dimen/conversations_row_height"
will allow you to change the height of the row which drives you to the dimens.xml located in \res\values
<dimen name="conversations_row_height">67.0dip</dimen>
• android:id="@id/contact_photo" android:layout_width="@dimen/imageview_size" android:layout_height="@dimen/imageview_size"
will allow you to change the height & width of the contact picture of the row which drives you to the dimens.xml located in \res\values
<dimen name="imageview_size">50.0dip</dimen>
==> in this case,the height of the row is 67.0dip so bigger than the height of the contact picture with 50.0dip but you can set the same in order to make perfectly fit the picture inside the row like this
• <com.whatsapp.TextEmojiLabel android:id="@id/conversations_row_contact_name"
will allow you to mod the contact name
android:textSize="18.0sp"
android:textStyle="bold"
android:textColor="#ffffffff"
You will be able to create a style or not
• <TextView android:id="@id/conversations_row_date"
will allow you to mod the date of the conversation
android:textSize="@dimen/conversation_date_size"
android:textColor="#ff999999"
You will be able to create a style or not
• <com.whatsapp.TextEmojiLabel android:id="@id/msg_from_tv"
will allow you to mod the last message sent in the conversation
android:textSize="13.329987sp"
android:textColor="#ff999999"
You will be able to create a style or not
• <com.whatsapp.TextEmojiLabel android:id="@id/single_msg_tv"
same story for this one
android:textSize="13.329987sp"
android:textColor="#ff999999"
You will be able to create a style or not
• <com.whatsapp.UnreadMsgIndicator android:id="@id/conversations_row_message_count"
will allow you to mod the counter for the messages not read yet in the conversation
A style is already setup for this @id ( style="@style/Text" ) but you will be able to create another style or not
Like show the example :
Last point, the dividers between each row can be mod on the end of conversations_row.xml :
<View android:background="@drawable/gradient" android:layout_width="fill_parent" android:layout_height="1.0px" android:layout_alignParentBottom="true" />
<View android:background="@drawable/gradient" android:layout_width="fill_parent" android:layout_height="1.0px" android:layout_alignParentTop="true" />
• android:background="@drawable/gradient"
will allow you to change the background by changing to a solid color "#ffrrggbb" or a gradient ="@drawable/gradient" or a transparent background ( will see that in another chapter )
in my case, i did use diferent solutions for each of my versions
you can create a new xml called for example "gradient.xml " with :
<?xml version="1.0" encoding="utf-8"?>
<shape android:shape="rectangle"
xmlns:android="http://schemas.android.com/apk/res/android">
<gradient android:startColor="#ff000000" android:endColor="#ff000000" android:angle="0.0" android:centerColor="#ffffffff" />
</shape>
==> android:background="@drawable/gradient" will take the values from gradient.xml and gives an interesting result like this :
•◘○ After all those points explained, the most curious of you will ask me where we can mod the dark & light background color to get alternative rows
Well, i will explained it in another chapter but for those who cant wait _ you will find it \res\drawable-hdpi\
selector_orange_gradient_on_beige
selector_orange_gradient_on_gray
Both will allow you to mod the background color changing the last gradient :
<item>
<shape>
<gradient android:startColor="#ff000000" android:endColor="#ff333333" android:angle="90.0" />
</shape>
</item>
</selector>
It can be a simple gradient with 2 colors :
It can be a gradient with 3 colors :
It can be a gradient with 2 similar starting colors in both xmls :
Happy theming

Unable to download latest mod via mediafire. It says file set to private. Help plz
Sent from my GT-I9000 using Tapatalk

No links
drshafi said:
Unable to download latest mod via mediafire. It says file set to private. Help plz
Click to expand...
Click to collapse
This thread is a Tutorial, no link have been posted here to share.
Please read carefully OP before to post ( 2nd warning )

contact_picker.xml / contact_picker_row.xml
You have now few ways from the Chats screen but to keep the dinamic of this tutorial, lets say you want to pick up a contact in your contact list for a new chat :
Next screen will be the "My contacts" screen
As for Chats screen ( header + rows ), this screen is composed by contact_picker.xml and contact_picker_row.xml
If you dont have notions at all about how works a Layout in android, i will try to simplify and clarify as more as possible sticking to the whatsapp architecture.
The "My contacts" screen is a great example of simple layout we can work on to make it more unique and less boring than the stock one.
◘◘◘ contact_picker.xml will allow you to mod the header part :
header
text
icons
• android:background="@null"
will allow you to change the background by changing to a solid color "#ffrrggbb" or a gradient ="@drawable/gradient" or a transparent background ( will see that in another chapter )
• style="@style/Header"
Each style can be found and modified in the file "styles.xml" located at \Whatsapp\res\values\styles
in this case, the style Header will attribute to the Chats screen the following header settings :
<item name="android:gravity">center_vertical</item>
<item name="android:background">@drawable/header_repeat</item>
<item name="androidaddingTop">2.0dip</item>
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">@dimen/header_height</item>
again, the png for my header in the Chats screen will be
android:background">@drawable/header_repeat which correspond to the header_repeat.xml
<bitmap android:src="@drawable/topbar_pattern" android:tileMode="repeat"
• The next layout ( <LinearLayout> blablablbalbaa </LinearLayout> ) will allow you to set the content of the header for Chats screen
In the stock apk, you get :
<LinearLayout android:gravity="left|center" android:id="@id/header_rl" android:layout_width="fill_parent" android:layout_height="fill_parent">
<TextView android:ellipsize="end" android:layout_gravity="left|center" android:text="@string/whatsapp_contacts" android:maxLines="1" android:lines="1" android:singleLine="true" style="@style/Text.HeaderCentered" />
<ImageView android:layout_gravity="top|right|center" android:id="@id/divider1" android:background="@drawable/divider" android:layout_width="wrap_content" android:layout_height="fill_parent" />
<ImageButton android:layout_gravity="right|center" android:id="@id/button_help" android:background="@null" android:layout_width="@dimen/header_height" android:layout_height="@dimen/header_height" android:src="@drawable/button_help" android:scaleType="center" style="@style/HeaderButton" />
<ImageView android:layout_gravity="top|right|center" android:id="@id/divider2" android:background="@drawable/divider" android:layout_width="wrap_content" android:layout_height="fill_parent" />
<ImageButton android:layout_gravity="right|center" android:id="@id/button_search" android:background="@null" android:layout_width="@dimen/header_height" android:layout_height="@dimen/header_height" android:src="@drawable/button_search" android:scaleType="center" style="@style/HeaderButton" />
</LinearLayout>
Which correspond to
In my XL versions, i changed this order for this one
==> Notice that you can erase the dividers between the icons by :
editing the png divider1.png located in \res\drawable-hdpi ( blank png )
or
changing android:background="@drawable/divider" by android:background="@null"
Here is no need to setup a scrollview as the list of contacts should be never empty _ all your whatsapp contacts would/should fill the height of a screen.
If not, the last part of the contact_picker.xml defines what comes in the empty space :
<View style="@style/HeaderDivider" />
<ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="0.0dip" android:cacheColorHint="@color/background" android:divider="@color/divider_gray" android:dividerHeight="1.0px" android:choiceMode="singleChoice" android:layout_weight="1.0" />
<include android:id="@id/contacts_empty" android:layout_below="@id/conversation_header" layout="@layout/empty_tell_a_friend" />
<LinearLayout android:id="@id/footer" android:background="@drawable/contactpicker_bar_repeat" androidaddingTop="4.0dip" androidaddingBottom="4.0dip" android:layout_width="fill_parent" android:layout_height="@dimen/header_height">
<ImageButton android:ellipsize="end" android:id="@id/groups_btn" android:background="@drawable/contactpicker_button" android:layout_width="0.0dip" android:layout_height="fill_parent" android:layout_marginLeft="5.0dip" android:layout_marginRight="2.5dip" android:src="@drawable/groups" android:layout_weight="1.0" />
<ImageButton android:id="@id/contacts_btn" android:background="@drawable/contactpicker_button_pressed" android:layout_width="0.0dip" android:layout_height="fill_parent" android:layout_marginLeft="2.5dip" android:layout_marginRight="5.0dip" android:src="@drawable/people" android:layout_weight="1.0" />
</LinearLayout>
</LinearLayout>
You are now more familiar with terms like
○ android:background="@drawable/
○ android:divider="@color/
○ style="@style/HeaderDivider"
I will explain deeper the rest of the codes in the Chapter IV. Layout
Congratulations, you just learn how to mod the header for the Chats screen
This method works for all the headers you will find in each screen.
----------------------- ----------------------------
We need now to mod the next part of the screen which are the rows corresponding of the contacts list
◘◘◘ Conversations_row.xml will allow you to mod the rows part :
contact picture
contact name
phone type
contact status
• android:layout_height="@dimen/conversations_row_height"
will allow you to change the height of the row which drives you to the dimens.xml located in \res\values
<dimen name="conversations_row_height">67.0dip</dimen>
• android:id="@id/contact_photo" android:layout_width="@dimen/imageview_size" android:layout_height="@dimen/imageview_size"
will allow you to change the height & width of the contact picture of the row which drives you to the dimens.xml located in \res\values
<dimen name="imageview_size">50.0dip</dimen>
==> in this case,the height of the row is 67.0dip so bigger than the height of the contact picture with 50.0dip but you can set the same in order to make perfectly fit the picture inside the row like this
• android:id="@id/contactpicker_row_name"
will allow you to mod the contact name
android:textSize="18.0sp"
android:textStyle="bold"
android:textColor="#ffffffff"
You will be able to create a style or not
• android:id="@id/contactpicker_row_phone_type"
will allow you to mod the type of the contact phone number ( can be mobile/other/etc )
android:textSize="12.0sp"
android:textColor="#ff999999"
android:gravity="right|center"
With the gravity, you can chose where to fit the @id/
You will be able to create a style or not
• android:id="@id/contactpicker_row_status"
will allow you to mod the status set as shown on the screenshot
android:textSize="14.0sp"
android:textStyle="normal"
android:textColor="#ff999999"
You will be able to create a style or not
Last point, the dividers between each row can be mod on the end of contact_picker_row.xml :
</LinearLayout>
<View android:id="@id/contact_picker_divider_lower" android:background="@drawable/gradient" android:layout_width="fill_parent" android:layout_height="1.0px" android:layout_alignParentBottom="true" />
<View android:id="@id/contact_picker_divider_upper" android:background="@drawable/gradient" androidaddingBottom="2.0dip" android:layout_width="fill_parent" android:layout_height="1.0px" android:layout_alignParentTop="true" />
</RelativeLayout>
• android:background="@drawable/gradient"
will allow you to change the background by changing to a solid color "#ffrrggbb" or a gradient ="@drawable/gradient" or a transparent background ( will see that in another chapter )
in my case, i did use diferent solutions for each of my versions
you can create a new xml called for example "gradient.xml " with :
<?xml version="1.0" encoding="utf-8"?>
<shape android:shape="rectangle"
xmlns:android="http://schemas.android.com/apk/res/android">
<gradient android:startColor="#ff000000" android:endColor="#ff000000" android:angle="0.0" android:centerColor="#ffffffff" />
</shape>
==> android:background="@drawable/gradient" will take the values from gradient.xml and gives an interesting result like this :
Or no divider at all :
•◘○ After all those points explained, the most curious of you will ask me where we can mod the dark & light background color to get alternative rows
Well, i will explained it in another chapter but for those who cant wait _ you will find it \res\drawable-hdpi\
selector_orange_gradient_on_beige
selector_orange_gradient_on_gray
Both will allow you to mod the background color changing the last gradient :
<item>
<shape>
<gradient android:startColor="#ff000000" android:endColor="#ff333333" android:angle="90.0" />
</shape>
</item>
</selector>
It can be a simple gradient with 2 colors :
It can be a gradient with 3 colors :
It can be a gradient with 2 similar starting colors in both xmls :
Happy theming

Yorzua said:
This thread is a Tutorial, no link have been posted here to share.
Please read carefully OP before to post ( 2nd warning )
Click to expand...
Click to collapse
Hey yorzua bro i know that i have to post in relevant thread but your Whatsapp mod thread is closed now and i desperately want the latest mod of yours that is why i posted here. Sorry for that but truly loving your mods
Sent from my GT-I9000 using Tapatalk

dead links, cant view any images

fananthony said:
dead links, cant view any images
Click to expand...
Click to collapse
Images show up just fine for me.
-----------------------
サンソングガラクシS II からタパトクで書いた。

II. Drawables
Drawables are an important part to do not forget for themers and Whatsapp.apk contains 634 png and 9.png files to mod with graphic tools.
For those who are afraid to deal with 9.png files, i did post a full tutorial which explain you clearly the steps to create a new one or to mod an existing one :
How to create your 9.png !
Here is the main process :
I will guide you into the famous 9.png creation
First rule before to start how to learn to theme your device :
Always make a backup of the files you are about to edit or do a nandroid backup.
If anything goes wrong you will get a bootloop.
☺ TOOLS you must have ☺
1. PHOTOSHOP / GIMP http://www.gimp.org/downloads
or a good alternative for those who are rookies in Adobe products : PAINT.NET http://www.paint.net
or any other Graphics editor you like to use of your choice.
2. DRAW 9-PATCH http://developer.android.com/sdk/index.html
You will find it in your SDK starter package ( android sdk/tools )
The Draw 9-patch tool allows you to easily create a NinePatch graphic using a WYSIWYG editor.
3. xUltimate-d9pc.exe http://lmgtfy.com/?q=xUltimate-d9pc
Basically you will need to compile the edited 9.png to Draw9Patch Compiler
*****
Now let's play with your pics in the graphic editor of your choice :
your 9.png's files would be in <drawable/drawable-hdpi> folder' apk
When you are done editing your image,
you can open it in the draw9patch tool to verify that it stretches properly.
Here is the most important part of the 9.png creation.
You need to define 2 parts :
* Stretch part ( always left and up side )
* Content part ( always right and bottom side )
When you are done stretching your image,
you can open it in the 9.png compiler tool to compile it properly.
you notice the 1pixel border created for the stretcheable 9.png
Place your files in example1/drawable-hdpi
Execute the xUltimate-d9pc.exe
If you defined properly your 9.png,
you must find no errors and you can hear a "peeep"
Compiled ready files are in /Done folder
When you are done compiling your image,
you can see that the 1pixel border disappeared.
Use 7-ZIP http://www.7-zip.org
(an open source file archiver with a high compression ratio)
to drag your files into the apk !
Source : androidbyyorzua
Congatulations, you can enjoy your work ​
-----------------------------------------------------------------
Stock Whatsapp.apk contains in total 15 9.png's files _ here are the ones you can start on :
date_balloon.9
(this one define the date/actions bubble chat for every single/group chat )
gray_bubble.9
(this one define the bubble chat for your contact replies/answers )
gray_bubble_body.9
gray_bubble_bottom.9
gray_bubble_top.9
(those 3 define the bubble chat for the group chat )
green_bubble.9
(this one define the bubble chat for your replies/answers )
Here is an example of group chat with gray_bubble_body.9 / gray_bubble_bottom.9 / gray_bubble_top.9 all made separately
You can see the bubbles doesnt exactly fit all 3 together so i strongly suggest you to work those 3 files at the same time :
Here the result is much better
Obviously, you are free to add more 9.png files to Whatsapp.apk as i do for most of my versions ( depending on the design you want to achieve, png are not sufficient as they are not stretchable by definition )
If it is the case, i will show you how to add those additional drawables in another article
Be aware that drawables values ( color/transparency ) are independent from xml's/smali's setup but position/background/size/text must be considered as for final result in the screen.
Especially for 9.png which are stretchable graphics, you should pay attention to all the parameters and not only to the graphic edition when creating them with Photoshop/Gimp/etc.
Even backgrounds may give a total diferent result to your graphics :
Textures would be very nice to add for the bubbles but extremely tricky when it comes to stretch the workable surface :
Forget inside shadows as you may get this result :
9.png's are the tricky part but you should pay attention to the rest of png's which are the major part of whatsapp drawables.
The header may be a solid color defined by the previous xml's explained in my articles but could be a nice customized png :
Same for the rest of the icons
Emoji's are nice to mod even if you will be the only one to see the result in the bubbles _ both contacts must have the same whatsapp mod to see the same emoji !
Whatsapp.apk display 3 diferent whatsapp logos which are nice to mod for a great touch :
Note that the 2 files "background" and "background_landscape" are not png but JPG files (480x800) so don't forget to save them as *.jpg to enjoy the result :
Not much to explain for the rest except that stock whatsapp.apk gives you a pretty ugly menu icons which doesnt really fit with android 4.0 ICS look so feel free to mod the files starting by :
"ic_menu.....png"
Here is the stock menu :
and here is my modded menu :
This is pretty much everything in whatsapp _ still so many projects and ideas i have got but had to close my own whatsapp thread after my work uploaded without my permission all around the web ...
I still get my [Graphics] ░█░ Design Factory ░█░ thread open so feel free to ask for any advice on graphics if you feel it
Please don't ask here for special graphic requests _ keep the thread clean for those who follows the full picture [ thank you ]
Happy theming, happy modding

Thanks for the guide dude! I'm doing well theming it to somewhat match the ICS Messaging app
I know your guide is not finished but could you point me out to where i can change the font colors for the chat messages? (During chat with a person)
I want to try theming the 9.pngs for the bubbles but the colors are clashing with the default font

Related

(08-15)Noobs guide to changing the Status bar font color

I was having a very difficult finding any information on how to modify the font color in the status bar so I decided it would be best to document it...here on xda.
What's covered in this thread:
How to edit the font color on the status bar.
How to make the status bar transparent
Credit:
Gruesomewolf For giving me the initial instructions on how to make background and status bar transparent.
JsChiSurf For guiding me through what I was doing wrong in order to make the status bar transparent.
xml items to modify the font in the status bar
Located in SystemUI.apk
layout>status_bar_expanded.xml
*This changes the Gingeritis 3D BETA VII font color and font size (Or Sprint if EVO)
<TextView android:textAppearance="@style/TextAppearance.StatusBar.Title" android:textSize="21.0px" android:textColor="#ff58aad0"
For EVO/EVO 3D the line code is:
<com.htc.widget.HtcBlinkingTextView android:textAppearance="?android:textAppearanceLarge" android:textSize="@dimen/status_bar_title_font_size" android:textColor="#ff58AAD0"
For the EVO/EVO 3D Clear button:
<TextView android:textSize="@dimen/clear_button_font_size" android:textColor="#ff58aad0"
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
layout>quick_settings.xml
*To change the color of the quick setting font color in the status bar
<TextView android:textAppearance="@style/TextAppearance.StatusBar.Title" android:textSize="21.0px" android:textColor="#ff58aad0"
values>Drawables
*To change the color of the Status bar Nofication Font
item type="drawable" name="APKTOOL_DUMMY_015c">false</item>
<item type="drawable" name="shade_bgcolor">#ff282828</item>
<item type="drawable" name="notification_header_text_color">#ff58aad0</item> <<<<----This changes the Text, "Notification seen in the top of the status bar while under Notifications
<item type="drawable" name="notification_number_text_color">#ff000000</item> <<Change back to white
<item type="drawable" name="list_item_background">#ffffffff</item>
<item type="drawable" name="list_item_background_gray">#fff2f2f2</item>
values>Colors
*Changes the primary and secondary status bar font color
<color name="white">#ff58aad0</color> <<<<<----This changes what the font color is when pressed on the status bar
<color name="black">#ff000000</color>
<color name="half_white">#7fffffff</color>
<color name="half_black">#7f000000</color>
<color name="primary_text_color">#ffffffff</color> <<<<---Primary Font Color
<color name="secondary_text_color">#ff000000</color> <<<<----Secondary Font Color
values>styles
*Changes the status bar font from bold to normal (What says Ginergitis 3D V1.0/Sprint) If you don't want it bold. It looks better bolded
*It also changes the bold appearance of the secondary font. They both look better bolded
<style name="TextAppearance.StatusBar.Title" parent="@android:style/TextAppearance.StatusBar">
<item name="android:textAppearance">?android:textAppearanceSmall</item>
<item name="android:textSize">15.0sp</item>
<item name="android:textStyle">bold</item> <<<<-----change to normal for none bold font
<item name="android:textColor">@drawable/notification_header_text_color</item>
End Result of changing colors
As I learn more about the status bar, I'll be updating this thread.
How to make the status bar transparent
Decompile the SystemUI.apk, the smali edits to enable transparency are as fallows
Open up "StatusBarService.smali", located in /smali/com/android/systemui/statusbar/"
Look for this line:
Code:
.line 504 .local v7, view:Lcom/android/systemui/statusbar/StatusBarView;
Directly below that are these lines:
Code:
const/4 v1, 0x2
iput v1, p0, Lcom/android/systemui/statusbar/StatusBarService;->mPixelFormat:I
.line 506
Delete those lines
Several lines below that you should find this line:
Code:
iget v5, p0, Lcom/android/systemui/statusbar/StatusBarService;->mPixelFormat:I
Change that to this
Code:
const/4 v5, -0x3
Next find this line:
Code:
.line 1731
const/4 v5, 0x2
Change it to: (note this line should be under .method onBarViewAttached()V)
Code:
.line 1731
const/4 v5, -0x3
Smali editing is complete!
Then we have to do some xml editing!
Look for "status_bar_tracking.xml", found in /res/layout <<<<Should be status_bar_expanded.xml
Line:
Code:
<View android:id="@id/background" android:background="@drawable/list_item_background"
change to:
Code:
<View android:background="@drawable/status_bar_background"
After find this line:
Code:
<View android:id="@id/tab_header" android:background="@drawable/list_item_background"
and again change to this
Code:
<View android:background="@drawable/status_bar_background"
Done!! Recompile .apk
Im sure by now you can see that we will now be able to simply make the .png named status_bar_backround transparent and thats that! Hope this helps!
EDIT:
status_bar_expanded.xml is what you need to edit. BTW, you do not reference the .9 when referencing .pngs. The system handles this automatically.
The background is hard coded in status_bar_expanded, and you have to re-arrange things.
list_item_background is what controls the default background / color for the notifications. It is fixed to a color. You can change the color, or even change it to point to an image if you want, such as the image you are attempting to modify, or assign it a full transparency if you don't want an image in the background, but rather, just for it to be clear, "#00000000".
Change the Quick Settings status bar to Transparent
Open up quick_setttings.xml found in res/layout/
Look for this line:
Code:
<LinearLayout android:orientation="vertical" android:background="@drawable/list_item_background" android:layout_width="fill_parent" android:layout_height="wrap_content">
Change "list_item_background to status_bar_background
It should look like this:
Code:
<LinearLayout android:orientation="vertical" android:background="@drawable/status_bar_background" android:layout_width="fill_parent" android:layout_height="wrap_content">
FAQ
Q:I placed @drawable/status_bar_background to anyplace it said @drawable/list_item_background.
However, my transparent png is located in SystemUI.apk/drawable-hdpi. Will the system still find it even though the code says, "drawable?"
A: Your close. It all depends on how your XML is laid out as it relates to parents / children, and their respective backgrounds, etc. It seems you should get want you want.
in terms of hdpi folders, etc, this too is automatically chosen by the phone, based on its resolution, etc, and you always reference simply as 'drawable' in your XML.
Q:Also, my png is named: status_bar_item_background_normal.9.png. Which is different from "status_bar_background." Will the system know what png I'm wanting to use even though it's not named the same?
A: status_bar_background is typically just the curtain, again, based on how your XML is laid out, meaning the background beneath the notifications but above the "drag bar".
Disclaimer:
If you have a customized .9 png (be careful, you must use care when editing .9 pngs as they have meta information on how they can be stretched), you can change the background to point to the exact name (less the .9.png extension, instead of status_bar_background) and see what happens.
You may also want to consider decompiling some of the SystemUI.apk files I recently posted, as I had to re-arrange some of the background settings to get things to show how I wanted, and it may help you see what I did as an example.
How to Remap the clear button:
Note: The below picture represents the clear button remap before liamstears edited it. With the below code, the clear button will be fixed and the blank status bar should no longer appear.
Credit:liamstears
Found in:res/layout/status_bar_expanded.xml
Code:
<?xml version="1.0" encoding="utf-8"?>
<com.android.systemui.statusbar.ExpandedView android:orientation="horizontal" android:focusable="true" android:descendantFocusability="afterDescendants"
xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content">
<LinearLayout android:gravity="center_vertical" android:orientation="horizontal" android:background="@drawable/status_bar_header_background" android:paddingRight="@dimen/clear_button_padding_right" android:layout_width="fill_parent" android:layout_height="wrap_content">
<com.android.systemui.statusbar.CarrierLabel android:gravity="center_vertical" android:layout_gravity="center_vertical" android:orientation="vertical" android:id="@id/carrierLabel" android:paddingLeft="5.0dip" android:paddingTop="1.0dip" android:paddingBottom="1.0dip" android:layout_width="0.0dip" android:layout_height="wrap_content" android:layout_weight="1.0">
<com.htc.widget.HtcBlinkingTextView android:textAppearance="?android:textAppearanceLarge" android:textSize="@dimen/status_bar_title_font_size" android:textColor="#ffffffff" android:layout_gravity="center_vertical" android:id="@id/plmnLabel" android:paddingLeft="4.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<TextView android:textAppearance="?android:textAppearanceLarge" android:textSize="@dimen/status_bar_title_font_size" android:textColor="#ffffffff" android:layout_gravity="center_vertical" android:id="@id/spnLabel" android:paddingLeft="4.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</com.android.systemui.statusbar.CarrierLabel>
</LinearLayout>
<FrameLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1.0">
<ScrollView android:id="@id/scroll" android:fadingEdge="none" android:layout_width="fill_parent" android:layout_height="fill_parent" android:overScrollMode="ifContentScrolls">
<com.android.systemui.statusbar.NotificationLinearLayout android:orientation="vertical" android:id="@id/notificationLinearLayout" android:layout_width="fill_parent" android:layout_height="wrap_content">
<TextView android:textAppearance="@style/TextAppearance.StatusBar.Title" android:id="@id/noNotificationsTitle" android:background="@drawable/title_bar_portrait" android:paddingLeft="14.0px" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/status_bar_no_notifications_title" />
<TextView android:textAppearance="@style/TextAppearance.StatusBar.Title" android:id="@id/ongoingTitle" android:background="@drawable/title_bar_portrait" android:paddingLeft="14.0px" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/status_bar_ongoing_events_title" />
<LinearLayout android:orientation="vertical" android:id="@id/ongoingItems" android:layout_width="fill_parent" android:layout_height="wrap_content" android:drawable="@drawable/list_item_background" />
<TextView android:textAppearance="@style/TextAppearance.StatusBar.Title" android:id="@id/latestTitle" android:background="@drawable/title_bar_portrait" android:paddingLeft="14.0px" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/status_bar_latest_events_title" />
<LinearLayout android:orientation="vertical" android:id="@id/latestItems" android:layout_width="fill_parent" android:layout_height="wrap_content" android:drawable="@drawable/list_item_background" />
<TextView android:textSize="@dimen/clear_button_font_size" android:textColor="#ffffffff" android:layout_gravity="center" android:id="@id/clear_all_button" android:background="@drawable/btn_default_small" android:layout_width="fill_parent" android:layout_height="40.0dip" android:text="@string/status_bar_clear_all_button" style="?android:buttonStyle" />
</com.android.systemui.statusbar.NotificationLinearLayout>
</ScrollView>
<ImageView android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/title_bar_shadow" android:scaleType="fitXY" />
</FrameLayout>
</LinearLayout>
<ImageView android:id="@id/tab_divider" android:layout_width="2.0px" android:layout_height="fill_parent" android:src="@drawable/notification_separator" android:scaleType="fitXY" />
</com.android.systemui.statusbar.ExpandedView>
The main line that makes this work is as follows:
Code:
<TextView android:textSize="@dimen/clear_button_font_size" android:textColor="#ffffffff" android:layout_gravity="center" android:id="@id/clear_all_button" android:background="@drawable/btn_default_small" android:layout_width="fill_parent" android:layout_height="40.0dip" android:text="@string/status_bar_clear_all_button" style="?android:buttonStyle" />
Once again good job man!
btw the original instructions for transparency can be found here. I believe they were the same ones wolf gave you ;-)
http://forum.xda-developers.com/showpost.php?p=15199389&postcount=1237
and what is this about jschisurf? He's still around! woot woot
Dude what's that theme that your using? It looks awesome!
Sent from my ADR6300 using XDA App
tommytomatoe said:
Once again good job man!
btw the original instructions for transparency can be found here. I believe they were the same ones wolf gave you ;-)
http://forum.xda-developers.com/showpost.php?p=15199389&postcount=1237
and what is this about jschisurf? He's still around! woot woot
Click to expand...
Click to collapse
Awesome thread you posted. Thanks. I'm sure I missed something because the quick setttings status bar isn't transparent like the notification bar is. I'm sure I'll figure out what I did wrong after reading your post, thanks.

[Q/A] Theming questions

I know this isn't the question/answer section, but it is the theming section. This will probably also get lost in all the other threads, but I figured there are enough people that have asked questions it might be a good idea to make this thread. The idea is, post a question, any question, about theming and me or someone else will answer it. I'm not a theming genius but I know a bit about theming and there are many more people that know much more than I do that might be able to help. This can also be a discussion place for people to figure out how to solve issues that no one is quite sure how to solve yet. I will post a few of the posts that I can find that answer some of the questions people have asked as a basis to get started.
Some people don't know where to start, so here are the "tools of the trade."​
Graphics Editing Software
___________________________________________
You will need some sort of image manipulation or graphics editing software. There are some free options out there and some not so free, but you can usually find a quality program to fit your budget.
This s a list of good programs that I know of, but I have only actually used GIMP and Photoshop.
-GIMP (FREE - Linux/Windows/Mac)
-Photoshop (PAID - Windows/Mac) Here's a quick tip if you want to use Photoshop.
-PaintShop Pro (PAID - Windows)
-Pixelmator (PAID - Mac)
-Paint.NET (FREE - Windows)
Android SDK
___________________________________________
The Android SDK contains a set of tools that are essential to theming.
Get the SDK here.
(will update in the future with what these tools are and how to use them)
Tools you will need:
- Draw 9-Patch (/tools directory of the sdk)
- DDMS (/tools directory of the sdk)
- Zipalign (/tools directory of the sdk)
- ADB (/platform-tools directory of the sdk)
APK Manager (apk tool)
___________________________________________
APK Manager is a simple to use, easy to understand tool that utilizes apk tool, zipalign, and a bunch of other tools. I recommend using this as it is easier to use for newer people, but I prefer to use apktool as it is more versatile.
I always had problems with the apk tool that APK Manager 4.9 comes with, so if it doesn't work for you (mainly on Samsung ROMs as far as I know) you may want to replace the apktool.jar in the /other directory of the APK Manager with this apktool.jar.
7-zip - WinRAR
___________________________________________
This is definitely a must. Windows has a built in .zip browser but I strongly recommend using 7-zip or WinRAR. I personally like 7-zip more, but that is all personal preference. You can open APK files as an archive, without having to decompile it. This allows you to do quick .png editing, or you can even replace post-compiled xml with other post-compiled xml if you so desire.
OptiPNG
___________________________________________
This isn't essential but it is something I strongly recommend as a "quality" standpoint. OptiPNG allows you to optimize the .png's in your theme by recompressing the image files down to a smaller size, allowing them to be loaded faster. Don't worry though, no information or quality is lost in the process.
Notepad ++
___________________________________________
This is another essential tool for theming. Notepad ++ is by-far the best text-editing program on the market for Windows. At least, in my opinion. It is also free. Basically if you want to do any xml editing, you need this tool. You can also do just about anything else that you want to do with it...​
Q:
Could someone please tell me where the background color can be modified for the menu button (wallpaper, settings, search, etc)? I have been looking everywhere for this, but I am not finding it.
Click to expand...
Click to collapse
A:
There are a few things to look for to get the look that you want.
in /res/values/styles.xml depending on what you have for this set of xml determines which .png's the framework is using:
Code:
<style name="Theme.IconMenu" parent="@style/Theme">
<item name="windowAnimationStyle">@style/Animation.OptionsPanel</item>
<item name="background">@null</item>
<item name="itemTextAppearance">@style/TextAppearance.Widget.IconMenu.Item</item>
<item name="horizontalDivider">@drawable/divider_horizontal_bright</item>
<item name="verticalDivider">@drawable/divider_vertical_bright</item>
<item name="itemBackground">@drawable/menu_selector</item>
<item name="itemIconDisabledAlpha">?disabledAlpha</item>
<item name="moreIcon">@drawable/ic_menu_more</item>
</style>
but if you are using an existing theme that is darker then the chances are it will be something like this:
Code:
<style name="Theme.IconMenu" parent="@style/Theme">
<item name="windowAnimationStyle">@style/Animation.OptionsPanel</item>
<item name="background">@null</item>
<item name="itemTextAppearance">@style/TextAppearance.Widget.IconMenu.Item</item>
<item name="horizontalDivider">@drawable/divider_horizontal_dark</item>
<item name="verticalDivider">@drawable/divider_vertical_dark</item>
<item name="itemBackground">@drawable/menu_selector</item>
<item name="itemIconDisabledAlpha">?disabledAlpha</item>
<item name="moreIcon">@drawable/ic_menu_more</item>
</style>
Now with that said, if it is using the first case, you will be looking for files named "divider_horizontal_bright.9.png" and "divider_vertical_bright.9.png". They are .9.png's so deal with them accordingly. Now if you have the second case then you are going to look for "divider_horizontal_dark.9.png" and "divider_vertical_dark.9.png".
Edit those to get your desired effect, but those are only the dividers of the menu.
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Now I'm going to go back over the xml to show you what I'm looking at.
Code:
<item name="horizontalDivider">[COLOR="Blue"]@drawable/divider_horizontal_bright[/COLOR]</item>
<item name="verticalDivider">[COLOR="Blue"]@drawable/divider_vertical_bright[/COLOR]</item>
Code:
<item name="horizontalDivider">[COLOR="Red"]@drawable/divider_horizontal_dark[/COLOR]</item>
<item name="verticalDivider">[COLOR="Red"]@drawable/divider_vertical_dark[/COLOR]</item>
Those two items determine which .png the framework is looking at, and using that will tell you what to look for when you are editing your theme.
Now lets look at a much more rather obscure portion of the xml, but it still tells you where to look. Under "<style name="Theme">" near the beginning of the styles.xml, there is a long list of items pointing to different .png's in the framework. The one we are interested in is:
Code:
<item name="panelBackground">[COLOR="Purple"]@drawable/menu_background[/COLOR]</item>
<item name="panelFullBackground">[COLOR="Purple"]@drawable/menu_background_fill_parent_width[/COLOR]</item>
This tells you what to look for to edit the background of the menu, and the "top" horizontal bar if you want one.
So look for "menu_background.9.png" and "menu_background_fill_parent_width.9.png". Edit them to have the same look, because the "menu_background_fill_parent_width.9.png" is what you get when you press the menu button, and the "menu_background.9.png" is what you get when you press the "more" button. Again, these are .9.png's so edit them accordingly. If you have any more questions, please ask! I tried to make this as clear as I possibly could.
Also, you don't really NEED to decompile the framework to do it, I just wanted you to maybe learn something instead of just following instructions like must people do.
Click to expand...
Click to collapse
Click to expand...
Click to collapse
Continued from last post:
Q:
I have been searching how to make the status bar transparent but I can't seem to find a way to do it. I have managed to get my drop down notification screen transparent but no luck with the status bar.
Click to expand...
Click to collapse
A:
Decompile SystemUI.apk, in smali/com/android/systemui/statusbar/StatusBarService.smali
search for
Code:
const/4 v5, 0x2
and replace it with
Code:
const/4 v5, -0x3
Recompile SystemUI.apk, and you should be up and running.
(someone replied to that one and said it didn't work but the OP thanked my post and never said there was a problem, so it may have just been a user error. I have never personally had to do this myself)
Click to expand...
Click to collapse
Click to expand...
Click to collapse
Q:
can someone tell me how to change the font colour for notifications in the drop down?
Click to expand...
Click to collapse
A:
1. In framework-res.apk/res/layout/status_bar_latest_event_content.xml there are two things to look at; the line with
Code:
android:id="@id/title"
controls the title of the notification. "android:textColor" is what you need to modify, and the format of the number is "#AARRGGBB"
2. Then there is the line with
Code:
android:id="@id/text"
which controls the description of the notification. Do the same thing you did with the title.
Here's a screenshot, the numbers correspond with the item that I talked about above.
Click to expand...
Click to collapse
Click to expand...
Click to collapse
Q:
I cannot get the status bar to change at all. I've got a status bar image sitting in framework-res.apk, SystemUI.apk, and it is still solid black. I cannot figure out what I need to change to use the custom image.
Click to expand...
Click to collapse
A:
look in your System.apk, /res/layout/status_bar.xml. Now the second line down will probably look something like this:
Code:
<com.android.systemui.statusbar.StatusBarView android:orientation="vertical" [U][B]android:background="#ff000000"[/B][/U]android:focusable="true" android:descendantFocusability="afterDescendants"
I put in bold what we are worried about. Basically, it doesn't really matter WHAT it is (even though if its black it will be that) as long as its not
Code:
android:background="@drawable/statusbar_background"
But you aren't done yet. The second to last line should look something like this:
Code:
<com.android.systemui.statusbar.DateView android:textAppearance="@android:style/TextAppearance.StatusBar.Icon" android:gravity="left|center" android:id="@id/date" [U][B]android:background="#ff000000"[/B][/U] android:paddingLeft="6.0px" android:paddingRight="6.0px" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" />
Again, change the bolded part to
Code:
android:background="@drawable/statusbar_background"
Click to expand...
Click to collapse
Click to expand...
Click to collapse
I think this is a good idea. Count me in for support.
Sent from my GT-I9000 using XDA App
Glad to have you on board.
No way we can let this thread just die so I'll ask a question.
I'm trying to find the images to change the color of the volume sliders and progress bars. Not the progress animation but the green bars themselves and the slider buttons. I've attached a screenshot to show what I mean.
And thanks for making yourselves available for supporting us!
Those are not an image. They are an xml edit. In your decompiled fwres, you need to navigate to res/drawable/progress_horizontal. In there you are going to look for the last 6 hex code values. They should look like this.
Code:
<item android:id="@id/secondaryProgress">
<clip>
<shape>
<corners android:radius="4.659973dip" />
<gradient android:startColor="#50537cb2" android:endColor="#802b415e" android:angle="270.0" android:centerColor="#8096b6e0" />
</shape>
</clip>
</item>
<item android:id="@id/progress">
<clip>
<shape>
<corners android:radius="4.659973dip" />
<gradient android:startColor="#ff537cb2" android:endColor="#ff2b415e" android:angle="270.0" android:centerColor="#ff96b6e0" />
</shape>
The values create a gradient. The starting color is the top of your bar, ending the bottom, and center....well the center. You can make all three the same color to have it a solid, or play around with it to get a 3D feel. The code I posted is what we use for Mosaic. Edit both sets. You will find one more set in this xml but they are the values for the gray background...you can play with that as well if you wanna have fun.
Yup! And here is the one I use for Blue Darkness too, just for reference:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@id/background">
<shape>
<corners android:radius="2.659973dip" />
<gradient android:startColor="#ff000000" android:endColor="#ff000000" android:angle="270.0" android:centerColor="#00000000" />
</shape>
</item>
<item android:id="@id/secondaryProgress">
<clip>
<shape>
<corners android:radius="2.659973dip" />
<gradient android:startColor="#00000000" android:endColor="#00000000" android:angle="270.0" android:centerColor="#80084eff" />
</shape>
</clip>
</item>
<item android:id="@id/progress">
<clip>
<shape>
<corners android:radius="2.659973dip" />
<gradient android:startColor="#00000000" android:endColor="#00000000" android:angle="270.0" android:centerColor="#ff2b79fb" />
</shape>
</clip>
</item>
</layer-list>
BUT you can use images, but you have to do it correctly. Take a look at Honeycomb progress bars if you are interested.
Awesome, very helpful as always. Now how about the buttons on the sliders?
Jirv311 said:
Awesome, very helpful as always. Now how about the buttons on the sliders?
Click to expand...
Click to collapse
They are images in the few-res. Not at my computer right now but they are there.
sent using a phone from the future.
Jirv311 said:
Awesome, very helpful as always. Now how about the buttons on the sliders?
Click to expand...
Click to collapse
/res/drawable-hdpi/seek_thumb_normal.png and seek_thumb_pressed.png
NunHugger said:
They are images in the few-res. Not at my computer right now but they are there.
sent using a phone from the future.
Click to expand...
Click to collapse
bryman27 said:
/res/drawable-hdpi/seek_thumb_normal.png and seek_thumb_pressed.png
Click to expand...
Click to collapse
Yup, thank you both. I found those almost right after I posted. That's why I like this thread.
This is such an excellent thread. I wish this was around when I still had the time (and the drive) to theme.
Sent from my Captivate
great info here, though to a noob not wanting to do xml editing, all the changes discussed sofar can be done on the UOT kitchen, by uploading the system ui / framwork youre working on and clicking some check-boxes and selecting colors from a color chooser. super easy. http://uot.dakra.lt/
but dont get me wrong I LOVE the Q/A thing youre doing here, just might be scary to some, and there are other simpler options.
UOT is good, don't get me wrong but you cannot do the advanced things that really make a quality theme in it. It is much better to learn the xml and how to manipulate it to get what you want. I am learning more about the xml everyday as I work on my theme, but that's part of what theming is. Still wish I could have the knowledge and talent that some of these other themers have.
I know this is my thread, but I can still ask questions right?
In a newly flashed ROM this isn't a problem, but for someone like me I tend to have it. I want to know how to make the wallpaper go back to the default wallpaper after you flash the theme. Now I did some digging around and found that removing /data/data/com.android.settings/files/wallpaper will set the wallpaper back to default if the user is using a normal wallpaper. Does anyone know how to set it back to default if they are using a live wallpaper?
DemonWav said:
I know this is my thread, but I can still ask questions right?
In a newly flashed ROM this isn't a problem, but for someone like me I tend to have it. I want to know how to make the wallpaper go back to the default wallpaper after you flash the theme. Now I did some digging around and found that removing /data/data/com.android.settings/files/wallpaper will set the wallpaper back to default if the user is using a normal wallpaper. Does anyone know how to set it back to default if they are using a live wallpaper?
Click to expand...
Click to collapse
Try removing /data/system/wallpaper_info.xml
bryman27 said:
Try removing /data/system/wallpaper_info.xml
Click to expand...
Click to collapse
No, that didn't do it. I've been looking for what controls the Live Wallpaper so maybe I can change something there, but I'm not completely sure where to look.
DemonWav said:
No, that didn't do it. I've been looking for what controls the Live Wallpaper so maybe I can change something there, but I'm not completely sure where to look.
Click to expand...
Click to collapse
I noticed the same thing. When a Live Wallpaper is set, the wallpaper_info.xml doesn't seem to exist.
---------- Post added at 07:57 AM ---------- Previous post was at 07:56 AM ----------
Not sure if this is a theme question or not. I am using the AOSP lockscreen mod and for whatever reason, a lockscreen wallpaper will not set. It just takes on whatever the homescreen wallpaper is. Anybody know how to fix this?
wow great thread...been looking for something like this from some time....
EDIT: I think this should be sticky...
I figure I'll ask this on the very slim chance I do decide to try and theme again...
What are the tools of trade? i.e. What programs do I need to have readily available?

[GUIDE] Pattern Lock Tweaks - Wallpaper Brightness, Pattern Lock Dots, etc.

This is a summary of a Galaxy S II thread, but it should be applicable to other Android phones with a pattern lock. Some of this info is elsewhere in bits and pieces, but enough of it is new to warrant a full post. Plus it is helpful to have it all in one place.
Pattern Lock Wallpaper Brightness
Normally the pattern lock wallpaper is not as bright as the original image-- there's a dim or dark filter over it. To change this, decompile framework-res.apk (use apktool or apk_manager), and edit res\layout\keyguard_screen_unlock_portrait.xml.
On line 4, change android:background="#70000000" to android:background="@color/transparent"
Compile framework-res.apk and put it back into system\framework. Reboot and you should see that the pattern lock wallpaper is the same brightness as the original image! You can also try changing the "#70000000" to another hex color code for different effects.
Alternative by LfcFan1977:
LfcFan1977 said:
I am using a Htc Desire on dGB aosp rom but just to add to this thread. In the keyguard_screen_unlock_portrait.xml, I changed:
android:background="#70000000" to android:background="@drawable/patternlock_background"
Added an image called patternlock_background.png to the drawable-hdpi folder.
Click to expand...
Click to collapse
Pattern Lock Wallpaper Sizing
ICWiener_ said:
Hi,
a few month ago I investigated the size of the background image to fit the pattern dots, and after a few experiments I saw that android was doing a bit of resizing, even if the image was exactly the screen size.
What worked for me, is to make an image smaller than 800 in height (763px to be precise) and 480 in width (regular width of 1 screen). But when done editing, I stretch its height back to 800. Then, when applying within gallery ("use as..."), it stretch it back to undeformed.
I made a template in photoshop, for those who are interested, also with my actual pattern background. Still can't post urls here, so...it's hosted at mediafire.com :
Code:
/?fo04gtvp82y1xw1 (the template)
/?82txu5qxdea6usb (the background)
Click to expand...
Click to collapse
Pattern Lock Dots
I found the pattern lock dots to be too large and dark, covering up most of the wallpaper. I wanted to make the dots smaller and more transparent so that I could see the wallpaper but still see where the dot locations are.
The images for the pattern lock dots are in the framework-res.apk, under res\drawable-hdpi. These are png images so if you just want to change the dots, you do not need to use apktool to decompile framework-res.apk. Just open framework-res.apk with 7zip and replace the images directly.
These are the images you need to edit:
btn_code_lock_default.png -- This is the white dot in the middle
indicator_code_lock_point_area_default.png -- This is the dark circular background of the dot
Here are some replacement png's you can try: http://forum.xda-developers.com/showpost.php?p=17806354&postcount=5
For this one, I reduced both the white middle dot and the outer ring by 50%. Then I increased the transparency of both and made the outer ring a lighter gray.
I am not a Photoshop wiz, so I recommend Paint.NET as a free image editor that is relatively simple to use and works well with transparency.
Some other pattern lock dot images you can change (thanks ICWiener_):
ICWiener_ said:
The pngs that shows up when the pattern is the wrong one :
indicator_code_lock_point_area_red.png (the circle around)
indicator_code_lock_drag_direction_red_up.png (the arrow showing the direction)
And if you use "visible pattern" in the options, these are the green ones :
indicator_code_lock_point_area_green.png
indicator_code_lock_drag_direction_green_up.png
btn_code_lock_touched.png (the small dot in the center, touched version)
Click to expand...
Click to collapse
Pattern Lock Clock font
The clock font on the pattern lock screen is Clockopia.ttf located in /system/fonts. Replacing this file will replace the font. You can also use the Font Changer app, available on XDA or Market: http://forum.xda-developers.com/showthread.php?t=874658 (You'll find Clockopia in the "Advanced" tab of Font Changer.)
However, simply replacing Clockopia with a normal font results in placement issues. This thread on Rootzwiki gives a good description of the Clockopia alignment problem and how to fix it. Basically, use a font editor to replace the glyphs in the Clockopia.ttf with the glyphs from your favorite font.
As an example, here is a Roboto font replacement for Clockopia, where I replaced each of the Clockopia glyphs with the ones from Roboto. This font now aligns perfectly on the pattern lockscreen.
Pattern Lock Path Color [HELP NEEDED]
Big thanks to pendo for figuring out the pattern lock path color (the white semi-transparent line when you drag a pattern, if you have "Visible Pattern" enabled in Settings.) And also to LfcFan1977 for following up on this.
pendo said:
Decompile framework.jar and look in smali/com/android/internal/widget/LockPatternView.smali and look for a line like this
Code:
iget-object v2, p0, Lcom/android/internal/widget/LockPatternView;->mPathPaint:Landroid/graphics/Paint;
const/4 v3, -0x1
The "-0x1" is what you'd want to change. That's white. You should be able to just set any hex value you want.
Click to expand...
Click to collapse
LfcFan1977 said:
I could only get black 0x0 or white -0x1 until I changed it to the following:
Code:
.line 266
iget-object v2, p0, Lcom/android/internal/widget/LockPatternView;->mPathPaint:Landroid/graphics/Paint;
const/4 v3, [COLOR="Red"]0x0[/COLOR]
invoke-virtual {v2, v3}, Landroid/graphics/Paint;->setColor(I)V
.line 267
iget-object v2, p0, Lcom/android/internal/widget/LockPatternView;->mPathPaint:Landroid/graphics/Paint;
const/16 v3, [COLOR="Red"]0x0[/COLOR]
invoke-virtual {v2, v3}, Landroid/graphics/Paint;->setAlpha(I)V
Which gave me full transparency.
Click to expand...
Click to collapse
Sample Pattern Lock Screen
Here is a nice example of a custom pattern lock screen by LfcFan1977.
LfcFan1977 said:
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Click to expand...
Click to collapse
It would be great to see some wallpapers that incorporate the pattern lock into their design. There could be some pretty cool ideas by mixing a pattern lock wallpaper with custom pattern dots and lines.
Editing the Text / Information on the Pattern Lock Screen
Thanks to byrong for putting together a detailed reference on editing the various text elements on the pattern lock screen: [MOD] Pattern Lock screen - remove/add information Check out his thread for a great graphic on what parts of the XML match up with the various text elements.
To edit the text, decompile framework-res.apk (use apktool or apk_manager), and edit res\layout\keyguard_screen_unlock_portrait.xml.
In my case, I wanted to just add an extra line to the pattern lock screen to give my contact info, in case I lost my phone and somebody wanted to return it to me. So I just added an extra LinearLayout text block underneath the pattern lock dots, with smaller font size for a cleaner look.
Here is my change highlighted in red:
Code:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@id/patternlockscreenwallpaper_root" android:layout_width="fill_parent" android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<com.android.internal.widget.LinearLayoutWithDefaultTouchRecepient android:gravity="center_horizontal" android:orientation="vertical" android:background="@color/transparent" android:layout_width="fill_parent" android:layout_height="fill_parent">
<RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content">
<TextView android:textAppearance="?textAppearanceMedium" android:ellipsize="marquee" android:gravity="bottom|right|center" android:id="@id/carrier" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="6.0dip" android:layout_marginRight="8.0dip" android:singleLine="true" android:layout_toRightOf="@id/time" android:layout_alignParentTop="true" android:layout_alignParentRight="true" />
<com.android.internal.widget.DigitalClock android:id="@id/time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="20.0dip" android:layout_marginTop="15.0dip" android:layout_alignParentLeft="true" android:layout_alignParentTop="true">
<TextView android:textAppearance="?textAppearanceMedium" android:textSize="56.0sp" android:ellipsize="none" android:gravity="bottom" android:id="@id/timeDisplay" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="6.0dip" android:singleLine="true" android:shadowColor="#c0000000" android:shadowDx="0.0" android:shadowDy="0.0" android:shadowRadius="3.0" />
<TextView android:textAppearance="?textAppearanceMedium" android:textSize="18.0sp" android:ellipsize="none" android:gravity="bottom" android:id="@id/am_pm" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_marginLeft="4.0dip" android:singleLine="true" android:shadowColor="#c0000000" android:shadowDx="0.0" android:shadowDy="0.0" android:shadowRadius="3.0" />
</com.android.internal.widget.DigitalClock>
<TextView android:textAppearance="?textAppearanceMedium" android:id="@id/date" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="24.0dip" android:layout_below="@id/time" />
</RelativeLayout>
<View android:id="@id/divider" android:background="@drawable/divider_horizontal_dark" android:layout_width="fill_parent" android:layout_height="1.0dip" android:layout_marginTop="8.0dip" android:layout_marginBottom="8.0dip" />
<LinearLayout android:gravity="left" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="12.0dip" android:layout_marginTop="0.0dip">
<TextView android:textAppearance="?textAppearanceMedium" android:textSize="18.0sp" android:id="@id/status1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawablePadding="4.0dip" />
<TextView android:textAppearance="?textAppearanceMedium" android:textSize="18.0sp" android:id="@id/statusSep" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5.0dip" android:layout_marginRight="5.0dip" />
<TextView android:textAppearance="?textAppearanceMedium" android:textSize="18.0sp" android:id="@id/status2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawablePadding="4.0dip" android:layout_alignParentTop="true" />
</LinearLayout>
<com.android.internal.widget.LockPatternView android:id="@id/lockPattern" android:layout_width="fill_parent" android:layout_height="0.0dip" android:layout_marginTop="2.0dip" android:layout_weight="1.0" android:aspect="@string/lock_pattern_view_aspect" />
[COLOR="Red"]<LinearLayout android:gravity="center_horizontal" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="0.0dip" android:layout_marginTop="0.0dip">
<TextView android:textAppearance="?textAppearanceMedium" android:textSize="14.0sp" android:text="If found, please contact me at [email protected]" android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawablePadding="4.0dip" />
</LinearLayout>[/COLOR]
<FrameLayout android:layout_width="fill_parent" android:layout_height="wrap_content">
<RelativeLayout android:id="@id/footerNormal" android:layout_width="fill_parent" android:layout_height="fill_parent">
<Button android:id="@id/emergencyCallAlone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/lockscreen_emergency_call" android:drawableLeft="@drawable/ic_emergency" android:drawablePadding="8.0dip" android:layout_centerInParent="true" style="@style/Widget.Button.Transparent" />
</RelativeLayout>
<LinearLayout android:gravity="center" android:orientation="horizontal" android:id="@id/footerForgotPattern" android:layout_width="fill_parent" android:layout_height="fill_parent">
<Button android:id="@id/emergencyCallTogether" android:layout_width="0.0dip" android:layout_height="fill_parent" android:layout_marginLeft="4.0dip" android:layout_marginTop="4.0dip" android:layout_marginRight="2.0dip" android:layout_marginBottom="4.0dip" android:text="@string/lockscreen_emergency_call" android:drawableLeft="@drawable/ic_emergency" android:drawablePadding="8.0dip" android:layout_weight="1.0" style="@style/Widget.Button.Transparent" />
<Button android:id="@id/forgotPattern" android:visibility="invisible" android:layout_width="0.0dip" android:layout_height="fill_parent" android:layout_marginLeft="2.0dip" android:layout_marginTop="4.0dip" android:layout_marginRight="4.0dip" android:layout_marginBottom="4.0dip" android:layout_weight="1.0" style="@style/Widget.Button.Transparent" />
</LinearLayout>
</FrameLayout>
</com.android.internal.widget.LinearLayoutWithDefaultTouchRecepient>
</RelativeLayout>
Again, check out byrong's thread for more details and options.
[Reserved for future use.]
Pattern Lock Path Color [HELP NEEDED]
Here are some files I hope will shed light on what controls the white semi-transparent line that appears when we draw/finger drag a pattern.
See screenshot in [OP].
In the keyguard_screen_unlock_portrait.xml on line 18 is the following code which I assume is linked to the process.
If that is part of the process then I am confused as to why the end of that line does not appear in keyguard_screen_unlock_landscape.xml.
Code:
<com.android.internal.widget.LockPatternView android:id="@id/lockPattern" android:layout_width="fill_parent" android:layout_height="0.0dip" android:layout_marginTop="2.0dip" android:layout_weight="1.0" android:aspect="@string/lock_pattern_view_aspect" />
I have been looking at the source code LockPatternView here and a third of the way down there is reference to R.styleable.LockPatternView_aspect and all the images used for the lockpattern.
Amongst that is
Code:
mPathPaint.setColor(Color.WHITE); // TODO this should be from the style
but by this time I am completely lost and plucking at straws.
Any help would be very much appreciated.
keyguard_screen_unlock_portrait.xml
keyguard_screen_unlock_landscape.xml
LockPatternView.smali
LinearLayoutWithDefaultTouchRecepient.smali
Good info, thanks for posting this. Looking forward to the color answer. Someone has to have changed this before!
do you think there's any way we would be able to use the Samsung lock screen for the galaxy s2 (I like the messaging and music integration) but with a secondary lock with a pattern for example without a 3rd party app?
Do you not just need to press Menu - Settings - Location & security - Set up screen lock - Pattern.
Sorry if I have completely misunderstood you.
no, I'm looking for a sort of "double lock" without the use of a third party app. I remember my HTC hero back then had this feature where you would unlock the phone then enter the password. I think even iphones have the same feature.
I only need it now because syncing email requires that I have the security lock on the device
[Solved] Transparent drag/draw line
Big thanks to Pendo for pointing me right to the correct spot.
pendo said:
Decompile framework.jar and look in smali/com/android/internal/widget/LockPatternView.smali and look for a line like this
Code:
iget-object v2, p0, Lcom/android/internal/widget/LockPatternView;->mPathPaint:Landroid/graphics/Paint;
const/4 v3, -0x1
The "-0x1" is what you'd want to change. That's white. You should be able to just set any hex value you want.
Click to expand...
Click to collapse
Superb, thanks Pendo.
I could only get black 0x0 or white -0x1 until I changed it to the following:
Code:
.line 266
iget-object v2, p0, Lcom/android/internal/widget/LockPatternView;->mPathPaint:Landroid/graphics/Paint;
const/4 v3, [COLOR="Red"]0x0[/COLOR]
invoke-virtual {v2, v3}, Landroid/graphics/Paint;->setColor(I)V
.line 267
iget-object v2, p0, Lcom/android/internal/widget/LockPatternView;->mPathPaint:Landroid/graphics/Paint;
const/16 v3, [COLOR="Red"]0x0[/COLOR]
invoke-virtual {v2, v3}, Landroid/graphics/Paint;->setAlpha(I)V
Which gave me full transparency.
Need to have a play around with is some more because I could not get different colours to either show or even compile most times.
Again, that you very much for the help.
Got the pattern lock color change to work in a theme for my droid X. Thanks for this!
Helpful guide to changing the text displayed [MOD] Pattern Lock screen - remove/add information
New one
patternlock_background.png - 480x762
btn_code_lock_default.png - Transparent
btn_code_lock_touched.png - Fingerprint
indicator_code_lock_point_area_default.png - Transparent
indicator_code_lock_point_area_green.png - Transparent
indicator_code_lock_point_area_red.png - Transparent
indicator_code_lock_drag_direction_green_up.png - Semi transparent small white blurred dot
indicator_code_lock_drag_direction_red_up.png - Semi transparent small white blurred dot
ic_emergency.png - white
The drag/draw line described in post #9 is transparent.
Anybody know what the emergency call button is named?
On screen it is a semi transparent rectangle. To change its appearance I have added a red retangle to the patternlock_background.png but I would like to edit the actual button to match the other red parts of the screen.
Request from manishdev
I was asked to shared the imaged I used to create my patternlock screens.
It is a bit of a jumbled zip file but it should help recreate what I've done.
It contains two xml files but the are just added as a guide, they are in no way to be used as a straight swap with the ones in your framework-res.
Hope it is of use.
download zip
It's been a while since I visited this thread, but I updated the earlier posts with pendo and LfcFan's updates on the pattern lock path color, and also byrong's reference to the pattern lock text. Thanks to everybody for their great work and contributions!
I have been looking forever for this info...THANKS!!
Question though...When I open keyguard_screen_unlock_portrait.xml, no matter whether I use Notepad++, UltraEdit, and Dreamweaver, they all open with partial text and mostly jumbled code/images..etc.
Also, line 4 does have a little text, but it's not related. The closest text I can find to "android:background=..." is line 16 but it has the above jumbled code and an http address.
I'm on Skyrocket i727 4.0.3..
Am I just not opening/viewing the xml correctly?
I changed it to txt and uploaded in case anyone can take a look..
@BRIMS7ON3
You need to decompile framework-res to be able to edit an xml file.
Search for decompile or apktool. It takes a bit of work to set it all up but well worth the effort.
LfcFan1977 said:
You need to decompile framework-res to be able to edit an xml file.
Search for decompile or apktool. It takes a bit of work to set it all up but well worth the effort.
Click to expand...
Click to collapse
I opened it in 7-zip, then extracted the xml. I take it neither doing that nor unzipping it get the same results?
Sent from my SAMSUNG-SGH-I727 using xda premium
@BRIMS7ON3
BRIMS7ON3 said:
I opened it in 7-zip, then extracted the xml. I take it neither doing that nor unzipping it get the same results?
Sent from my SAMSUNG-SGH-I727 using xda premium
Click to expand...
Click to collapse
No, unzipping/extracting is ok for .png edits but for .9.png images, xml files and smali files, the only option is to decompile.
well aint that cute
thank you
p.s. do you maybe know how to change the pattern lock path size ? To make it thinner.
All I know is that will be in smali/com/android/internal/widget/LockPatternView.smali
Hi guys, i have two questions
- how do you decompile framework.jar ? I have tried by opening it with winrar but i have found only a preloaded-classes file and a meta-inf directory with a manifest.mf file. Nothing about the path you describe to change the color of the line you drag when unlock the screen
- how do you modify the png with the green and red circles ? With adobe photoshop i have to change the settings to rgb color but after that i obtain a very ugly image with black background.
Thanks for the help

[GUIDE][4.4.x][4.2.x]Theming Android SystemUI

This is a simple guide to understand how to theme systemui.apk on 4.4.x OR 4.2.x, this guide will work for any rom having aosp like user interface. Before you start reading this, you have to set up apktool correctly. Just to check if your apktool is correctly installed, you can decompile my DarkL rom's systemui.apk and then recompile it without making any changes, if it compiles successfully then you are ready to try this tutorial.
Also, you need notepad++ to edit xml or smali line by line and you need gimp to edit transparent pngs.
Now we will learn easy things first then move to more advanced things, so lets start with statusbar icons first, I'll add more things in this tutorial in coming days, Sorry, I'm lazy to type
1.Changing statusbar icons (Signal, wifi, alarm, vibration or silent icons etc.)-
First decompile your systemui and go to "/systemui/res/" folder.
Changing the statusbar icons is easiest, these are pngs located in /res/drawable-hdpi/ OR /res/drawable-xhdpi/ depending on your device resolution, if it's 480*800 then your device is hdpi else if your resolution is 1280*720 then your device is xhdpi. You need to make changes in the correct folder.
Now open your folder /res/drawable-hdpi/ OR /res/drawable-xhdpi/ and look for pngs starting with name "stat_sys_.....png"
For wifi icon, we have "stat_sys_wifi_signal_1_fully.png" , "stat_sys_wifi_signal_2_fully.png" and so on, till "stat_sys_wifi_signal_4_fully.png".
For signal icons, we have "stat_sys_gemini_signal_1_orange.png" , 2_orange , 3_orange and so on, If your device is dual sim, you have multi colored signals, orange, purple, green, blue, look for the appropriate png and edit/replace it.
View attachment 3208547
Similarly, all the icons appearing in your statusbar are present here, all start with "stat_sys_.....png" you can edit these pngs or replace them from an existing theme or rom.
Warning - Ask permissions from the developer of that rom/theme !!
Just to learn things, you can use my DarkL rom's systemui.apk and take pngs from it
2.Changing notification drawer background-
The semi transparent background of your notification drawer is a png located in /res/drawable-hdpi/ or /res/drawable-xhdpi/ according to your device resolution. You need to make changes in the correct folder for your device.
Now find "notification_panel_bg.9.png" in your folder, this is the notification background, I recommend you to rename it to "notification_panel_bg.png" because .9 pngs have a border and are tricky to edit.
Now right click on this png and edit it with gimp, erase it and fill any color you want to.
View attachment 3208550
3.Customizing quicksettings tiles (icons, background and gaps)-
Firstly, to change quicksettings icons like wifi, data, rotation, bluetooth etc. Go to correct folder according to your device /res/drawable-xhdpi/ OR /res/drawable-hdpi/ now you need to replace/edit the pngs starting with "ic_qs_....png" , all of them are for quicksettings.
View attachment 3208555
Similarly, all the icons appearing in your statusbar are present here, all start with "ic_qs_.....png" you can edit these pngs or replace them from an existing theme or rom.
Warning - Ask permissions from the developer of that rom/theme !!
Just to learn things, you can use my DarkL rom's systemui.apk and take pngs from it
Now, to change background of tiles, you have to edit "/res/drawable/qs_tile_background.xml", you need to know the hex codes of your desired color to edit them, use this website to convert RGB to hex or reverse.
Now open "/res/drawable/qs_tile_background.xml" and look for the two hex codes, first one is for pressed tile, second one is for normal tile. Erase the last 6 characters here and Put your own 6 character hex code of any color.
View attachment 3208558
Now to edit dimensions in systemui like gaps between quicksettings tiles and size of recent apps, open "/res/values/dimens.xml"
This file contains the size of various things, you can play with the values and maybe discover something awesome, below are few things you can try, just alter the blue colored value.
These two lines are for changing the size of recent apps-
Code:
[COLOR="red"] <dimen name="status_bar_recents_thumbnail_width">164.0dip</dimen>
<dimen name="status_bar_recents_thumbnail_height">145.0dip</dimen>[/COLOR]
This line for changing gap between two notifications-
Code:
[COLOR="red"] <dimen name="notification_divider_height">3.0dip</dimen>[/COLOR]
(To remove gap, put 0.0dip)
This line for changing gap between quicksettings tiles-
Code:
[COLOR="red"]<dimen name="quick_settings_cell_gap">3.0dip</dimen>[/COLOR]
Similarly, you can try changing anything here to resize various things in your notifications and quicksettings, It's time consuming but interesting.
4.Changing layout of clock in notification header-
Usually, the notification header of stock rom's systemui has clock in this format-
View attachment 3208560
I feel that It's a bit too long, So I'll tell a method to make it double line-
View attachment 3208574
To do this, firstly you need to increase the height of notification header, go to "res/values/dimens.xml" and find this line-
Code:
[COLOR="red"]<dimen name="notification_panel_header_height">40.0dip</dimen>[/COLOR]
Change the value here to 56dpi
Now, to make the clock double line, open "/res/layout/status_bar_expanded_header.xml" and find this code-
Code:
<LinearLayout android:enabled="false" android:gravity="center_vertical" android:orientation="vertical" android:id="@id/datetime" android:paddingLeft="3.0dip" android:paddingRight="0.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent">
<com.android.systemui.statusbar.policy.Clock android:textAppearance="@style/TextAppearance.StatusBar.Expanded.Clock" android:id="@id/clock" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="2.0dip" android:singleLine="true" />
<com.android.systemui.statusbar.policy.DateView android:textAppearance="@style/TextAppearance.StatusBar.Expanded.Date" android:id="@id/date" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="2.0dip" android:singleLine="true" />
</LinearLayout>
See the tags LinearLayout, Just change it to RelativeLayout both above and below.
Code:
<RelativeLayout android:enabled="false" android:gravity="center_vertical" android:orientation="vertical" android:id="@id/datetime" android:paddingLeft="3.0dip" android:paddingRight="0.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent">
<com.android.systemui.statusbar.policy.Clock android:textAppearance="@style/TextAppearance.StatusBar.Expanded.Clock" android:id="@id/clock" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="2.0dip" android:singleLine="true" />
<com.android.systemui.statusbar.policy.DateView android:textAppearance="@style/TextAppearance.StatusBar.Expanded.Date" android:id="@id/date" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="2.0dip" android:singleLine="true" />
</RelativeLayout>
Thank you for reading, more things I'll add later, too tired to type more.
Reserved
More to come
Very Nice guide.
Regards
Nice work, looking forward for more such helpful guides. :good:
How can I change the navbar (background & icons)?
If I am only interested in changing the icons (such as alarm icon, Bluetooth icon) , do I need to decompile the APK?
I tried to drag the pngs I wanted into the appropriate folder.
I can see that it is working, but not sure if it has any adverse effects.
Any advice?
albel said:
If I am only interested in changing the icons (such as alarm icon, Bluetooth icon) , do I need to decompile the APK?
I tried to drag the pngs I wanted into the appropriate folder.
I can see that it is working, but not sure if it has any adverse effects.
Any advice?
Click to expand...
Click to collapse
Yes, but drag and drop has limitations, you can only replace normal pngs but not .9 pngs, It's fine for you since statusbar icons are normal pngs only, they are not .9 pngs.
Mmmh!!! this is quiet new and much detailed. Big ups for the guide.
nicely done..thanks for your brilliant work..keep it up
Request
Can you add method to add brightness slider?
mr-illusionist said:
Can you add method to add brightness slider in kitkat roms?
Click to expand...
Click to collapse
Yes, I'll write about adding features in second post soon, I've also attached my rom's SystemUI.apk, you can decompile it and see /res/xml/notification_header_expanded.xml till then.
Plz can you add some information about . changing position of signal bars and WiFi from right to left ??
If yes then it will be very great of you .... Thanks in advance
Sent from my UF2021 using XDA Free mobile app
please i want to change this color
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
to this
wish xml file must be changed ?
sorry for my english
umangleekha said:
Yes, I'll write about adding features in second post soon, I've also attached my rom's SystemUI.apk, you can decompile it and see /res/xml/notification_header_expanded.xml till then.
Click to expand...
Click to collapse
Waiting for it bro. :good:
Do you have any method to insert brightness slider bar on systemui?
Subscribed..!! Thanx for this wonderful guide.. Waiting for the next part..

android.support.design.widget.AppBarLayout cannot be cast to android.view.ViewGroup.

Hello everyone,I am a Android beginner.When I run my project I have trouble in the Android Studio.And when the project is rendering, here are the notes:Rendering Problems Exception raised during rendering: android.support.design.widget.AppBarLayout cannot be cast to android.view.ViewGroup .And I check some information I don't find any answer.
And here are my activity_main.xml
Code:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="/apk/res/android"
xmlns:app="/apk/res-auto"
xmlns:tools="/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context="com.example.iqiqi.myapplication.MainActivity">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>
<include layout="@layout/content_main" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
android:src="@android:drawable/ic_dialog_email" />
</android.support.design.widget.CoordinatorLayout>
Here are the style.xml.
Code:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
</resources>
Here are the details.
Code:
java.lang.ClassCastException: android.support.design.widget.AppBarLayout cannot be cast to android.view.ViewGroup
at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:836)
at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:70)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:811)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:838)
at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:70)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:811)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
at android.view.LayoutInflater.inflate(LayoutInflater.java:394)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:223)
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:426)
at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:350)
at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:510)
at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:498)
at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:888)
at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:498)
at com.android.tools.idea.rendering.RenderTask.access$600(RenderTask.java:72)
at com.android.tools.idea.rendering.RenderTask$3.call(RenderTask.java:610)
at com.android.tools.idea.rendering.RenderTask$3.call(RenderTask.java:607)
at com.android.tools.idea.rendering.RenderService.runRenderAction(RenderService.java:362)
at com.android.tools.idea.rendering.RenderTask.render(RenderTask.java:607)
at com.android.tools.idea.rendering.RenderTask.render(RenderTask.java:629)
at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager.doRender(AndroidLayoutPreviewToolWindowManager.java:652)
at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager.access$1700(AndroidLayoutPreviewToolWindowManager.java:80)
at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager$7$1.run(AndroidLayoutPreviewToolWindowManager.java:594)
at com.intellij.openapi.progress.impl.CoreProgressManager$2.run(CoreProgressManager.java:152)
at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:452)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:402)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:54)
at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:137)
at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager$7.run(AndroidLayoutPreviewToolWindowManager.java:589)
at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:320)
at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:310)
at com.intellij.util.ui.update.MergingUpdateQueue$2.run(MergingUpdateQueue.java:254)
at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:269)
at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:227)
at com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:217)
at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238)
at com.intellij.util.Alarm$Request$1.run(Alarm.java:351)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
And I don't know how to solve this,please tell me,thanks...
same problem, same error
Was an answer ever found for this issue? I have the exact same error list.
edit: finally found the solution and it was stupidly easy. This seems like a major flaw to have a major part of the software not working until you change a setting. https://www.youtube.com/watch?v=nYYP_G7V5NU
I encountered similar issues
Even I faced similar issue when I was working with coordinator layout, app bar layout, nested scroll view and bottom sheet.
I did lot of research on this. Some combination of views don't work as expected with coordinator layout.
Second point is if you override any framework or call back methods, make sure you call super method so that all the required setup for the frame work is done properly.
Those two points fixed my issues.
Hopefully that helps you or some one come here in search of the solution

Categories

Resources