[Galaxy S II Themes and Apps] davidwilson83:
G'Day XDA,

I wanted to share with you a few quick and easy mods that I found while modding my phone. Here we go...

[SIZE=+2]AOSP STYLE CLEAR-ALL BUTTON IN EXPANDED STATUS BAR on SAMSUNG ROMs[/SIZE]

Original:

Mod:

Ok first things first, you need to decompile SystemUI.apk (I will assume that you know how to copy the apk from your phone using a root explorer and decompile using a program like APK Tool).

Once it has decompiled successfully, open up /res/layout/tw_status_bar_expanded_header.xml and you will see this:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:gravity="center_vertical" android:orientation="horizontal" android:background="#ff000000" android:layout_width="fill_parent" android:layout_height="39.0dip" android:baselineAligned="false"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui">
<com.android.systemui.statusbar.policy.Clock android:textAppearance="@style/TextAppearance.StatusBar.Expanded.Clock" android:textColor="#ffffffff" android:id="@id/clock" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="4.0dip" android:layout_marginTop="-3.0dip" android:singleLine="true" systemui:ampmSmall="true" />
<com.android.systemui.statusbar.policy.DateView android:textAppearance="@style/TextAppearance.StatusBar.Expanded.Date" android:textColor="#ffcbcbcb" android:ellipsize="none" android:id="@id/date" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="8.0dip" android:layout_marginRight="4.0dip" android:maxLines="2" />
<com.android.systemui.statusbar.RotationToggle android:id="@id/rotation_lock_button" android:visibility="gone" android:clickable="true" android:layout_width="32.0dip" android:layout_height="32.0dip" android:layout_margin="8.0dip" android:button="@drawable/ic_notify_rotation" android:contentDescription="@string/accessibility_rotation_lock_off" />
<Space android:layout_width="0.0dip" android:layout_height="0.0dip" android:layout_weight="1.0" />
<ImageView android:layout_width="1.0dip" android:layout_height="25.0dip" android:layout_marginTop="7.0dip" android:layout_marginBottom="7.0dip" android:src="@drawable/tw_quick_panel_plnm_setting_dv" />
<RelativeLayout android:id="@id/settings_button" android:background="@drawable/tw_quick_panel_setting_button_bg" android:focusable="true" android:visibility="visible" android:layout_width="@dimen/status_bar_expanded_setting_width" android:layout_height="39.0dip">
<ImageView android:id="@id/settings_button_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/tw_quickpanel_icon_settings" android:scaleType="center" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:contentDescription="@string/accessibility_settings_button" />
</RelativeLayout>
</LinearLayout>

Now you need to delete everything after the line which starts with <com.android.systemui.statusbar.RotateToggle and replace it with the following code:

<ImageView android:id="@id/settings_button" android:layout_width="48.0dip" android:layout_height="48.0dip" android:src="@drawable/ic_notify_quicksettings" android:scaleType="center" android:contentDescription="@string/accessibility_settings_button" />
<Space android:layout_width="0.0dip" android:layout_height="0.0dip" android:layout_weight="1.0" />
<ImageView android:id="@id/clear_all_button" android:layout_width="48.0dip" android:layout_height="48.0dip" android:src="@drawable/ic_notify_clear" android:scaleType="center" android:contentDescription="@string/accessibility_clear_all" />
</LinearLayout>

So your finished file should look exactly like this:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:gravity="center_vertical" android:orientation="horizontal" android:background="#ff000000" android:layout_width="fill_parent" android:layout_height="39.0dip" android:baselineAligned="false"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui">
<com.android.systemui.statusbar.policy.Clock android:textAppearance="@style/TextAppearance.StatusBar.Expanded.Clock" android:textColor="#ffffffff" android:id="@id/clock" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="4.0dip" android:layout_marginTop="-3.0dip" android:singleLine="true" systemui:ampmSmall="true" />
<com.android.systemui.statusbar.policy.DateView android:textAppearance="@style/TextAppearance.StatusBar.Expanded.Date" android:textColor="#ffcbcbcb" android:ellipsize="none" android:id="@id/date" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="8.0dip" android:layout_marginRight="4.0dip" android:maxLines="2" />
<com.android.systemui.statusbar.RotationToggle android:id="@id/rotation_lock_button" android:visibility="gone" android:clickable="true" android:layout_width="32.0dip" android:layout_height="32.0dip" android:layout_margin="8.0dip" android:button="@drawable/ic_notify_rotation" android:contentDescription="@string/accessibility_rotation_lock_off" />
<ImageView android:id="@id/settings_button" android:layout_width="48.0dip" android:layout_height="48.0dip" android:src="@drawable/ic_notify_quicksettings" android:scaleType="center" android:contentDescription="@string/accessibility_settings_button" />
<Space android:layout_width="0.0dip" android:layout_height="0.0dip" android:layout_weight="1.0" />
<ImageView android:id="@id/clear_all_button" android:layout_width="48.0dip" android:layout_height="48.0dip" android:src="@drawable/ic_notify_clear" android:scaleType="center" android:contentDescription="@string/accessibility_clear_all" />
</LinearLayout>

What this does is it moves the settings icon from the far right to the left next to the date (notice the first line we deleted started with <Space and the line we replaced it with was <ImageView android:id="@id/settings_button") and also adds the clear all button (@id/clear_all_button) to the top right.

Now save tw_status_bar_expanded_header.xml and close it.

So now the clear all button is going to be showing on the top right of the status bar, but there will also be a clear all button in the notification area, like this picture:

So we need to open up tw_status_bar_expanded.xml and look for the following line:

<TextView android:textSize="@dimen/status_bar_expanded_notification_clear_button_text_size" android:textColor="@color/tw_status_bar_clear_btn_text" android:gravity="center" android:id="@id/clear_all_button" android:background="@drawable/tw_btn_default_small" android:padding="0.100000024dip" android:focusable="true" android:clickable="true" android:layout_width="@dimen/status_bar_expanded_clear_button_width" android:layout_height="fill_parent" android:layout_marginRight="4.0dip" android:text="@string/status_bar_clear_all_button" android:layout_alignParentRight="true" android:contentDescription="@string/accessibility_clear_all" />

and delete it.

The reason why we delete that is because it is the button which has the text Clear All that appears on the right side of the Notifications header when you have notifications, which we don't need as there is already a nice AOSP style button we can press in the top right of the expanded status bar :) .

Now save tw_status_bar_expanded.xml and close it.

Now recompile SystemUI.apk, and either change it's name by removing the 'unsigned' from the start of it's name, push it to your device (don't forget to change permissions to RW-R--R--) and reboot OR take those 2 files from the newly compiled unsignedSystemUI.apk and put them in a VRTheme zip, flash them in recovery and VOILA! I have included a VRTheme Zip to this post called 'AOSP Clear All Button' which you can download and flash in recovery as well.

Easy, even for a noob like me :) Enjoy.

[SIZE=+2]EDIT CLEAR ALL BUTTON TO INCLUDE FOCUS OPTION[/SIZE]

You can also do a minor change to an xml file and add an icon to SystemUI.apk to allow for a 'focus' option of the new clear all button that you have re-added.

In your APK Tool directory in /projects/SystemUI.apk navigate to /res/drawable and open up ic_notify_clear.xml you will see this:

<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/ic_notify_clear_pressed" />
<item android:drawable="@drawable/ic_notify_clear_normal" />
</selector>

So this means the button acts in a very basic way. When the button appears in the expanded status bar, you will be looking at the icon ic_notify_clear_normal.png which is in the /res/drawable-hdpi folder, and when you press it, it changes to the icon ic_notify_clear_pressed.png which is also in the /res/drawable-hdpi folder. What we want to do is add some more code in there to allow for the icon to change to a third icon when we press and hold (focus) on it,

So you need to change the content of ic_notify_clear.xml to the following:

<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/ic_notify_clear_pressed" />
<item android:state_window_focused="false" android:state_enabled="true" android:drawable="@drawable/ic_notify_clear_normal" />
<item android:state_window_focused="false" android:state_enabled="false" android:drawable="@drawable/ic_notify_clear_normal" />
<item android:state_pressed="true" android:drawable="@drawable/ic_notify_clear_pressed" />
<item android:state_focused="true" android:state_enabled="true" android:drawable="@drawable/ic_notify_clear_focus" />
<item android:state_enabled="true" android:drawable="@drawable/ic_notify_clear_normal" />
<item android:state_focused="true" android:drawable="@drawable/ic_notify_clear_focus" />
<item android:drawable="@drawable/ic_notify_clear_normal" />
</selector>

So what this does is it tells the SystemUI.apk to change the icon we see when we press and hold on the clear all button from the normal ic_notify_clear_press.png to a new icon which I have called ic_notify_clear_focus.png which you will need to create using an icon editor. I use Greenfish Icon Editor Pro but lots of people use Photoshop as well.

To create the icon, I opened up ic_notify_clear_pressed.png from the /res/drawable-hdpi folder and added more of a glow effect to it. I have attached a copy of it to the post. You can create your own though, if you want to. What you will need to do it copy it into the /res/drawable-hdpi folder and after changing the ic_notify_clear.xml from the /res/drawable folder you will then need to save the file, close it and recompile the apk.

Now if you want to push it back into /system/app on your phone then do that (don't forget to change permissions to RW-R--R--) but if, like me, you wish to flash it in recovery using a VRTheme zip file, then you will need to do a few steps. Firstly, out of the newly recompile unsignedSystemUI.apk you will need take the new icon you created and put it into /vrtheme/preload/symlink/system/app/SystemUI.apk/res/drawable-hdpi in the VRTheme zip file and you will also need to take the ic_notify_clear.xml that you edited out of the recompiled apk and put it into /vrtheme/preload/symlink/system/app/SystemUI.apk/res/drawable in the zip file. Then you will need to close the zip file.

Now the next thing we have to do is take the resources.arsc file from our newly re-compiled unsignedSystemUI.apk and save it on the computer somewhere (I usually put it on the desktop so I know where it is and then delete it afterwards) and then you will need to us a zip program like WinRar to open up the VRTheme zip file. I don't use 7Zip for this part because I can't get it to simply store a file instead of compressing it. So we need to use WinRar to open up the VRTheme zip file and navigate to /vrtheme/preload/symlink/system/app/SystemUI.apk and you will see the res folder in the window. Now drag the resources.arsc file that you saved into the window and when the box comes up that asks you how you want to compress it, you need to change it to the 'store' option so that it doesn't compress the resources.arsc file at all.

I can't include the resources.arsc file as if you have any other mods or icons or anything in your SystemUI.apk, it will be incompatible with the resources.arsc file from my System UI.apk. I have, however, included a VRTHeme zip file to this post called 'Clear All Button Focus' which has the icon and xml file that we edited earlier, that you can add your resources.arsc file to and flash in recovery.

Enjoy! :)

[SIZE=+2]AOSP SIGNAL & WIFI INDICATORS[/SIZE]

Another quick and easy mod that I found was the layout of the signal & wifi indicators in the status bar.

Original

Mod

In SystemUI.apk/res/layout open up tw_signal_cluster view. You will see this.

<?xml version="1.0" encoding="utf-8"?>
<com.android.systemui.statusbar.SignalClusterView android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android">
<FrameLayout android:gravity="center" android:id="@id/wifi_combo" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageView android:id="@id/wifi_signal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleType="center" android:layout_alignParentRight="true" android:layout_centerVertical="true" />
<ImageView android:layout_gravity="center" android:id="@id/wifi_inout" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</FrameLayout>
<View android:id="@id/spacer" android:visibility="gone" android:layout_width="6.0dip" android:layout_height="6.0dip" />
<LinearLayout android:gravity="center" android:orientation="horizontal" android:id="@id/new_mobile_combo" android:layout_width="wrap_content" android:layout_height="wrap_content">
<FrameLayout android:id="@id/separate_mobile" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageView android:id="@id/separate_mobile_type" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/separate_mobile_inout" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</FrameLayout>
<FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content">
<FrameLayout android:gravity="center" android:id="@id/mobile_combo" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageView android:id="@id/mobile_signal" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/mobile_type" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:layout_gravity="bottom|right|center" android:id="@id/mobile_inout" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/mobile_roaming" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</FrameLayout>
</FrameLayout>
</LinearLayout>
<ImageView android:id="@id/airplane" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</com.android.systemui.statusbar.SignalClusterView>

The first line we need to edit is this:

<FrameLayout android:gravity="center" android:id="@id/wifi_combo" android:layout_width="wrap_content" android:layout_height="wrap_content">

Directly after the android:layout_height="wrap_content" and before the > we need to add android:layout_marginRight="0.0dip" .

So now that line should look like this:

<FrameLayout android:gravity="center" android:id="@id/wifi_combo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="0.0dip">

The next line we need to edit is this:

<ImageView android:layout_gravity="center" android:id="@id/wifi_inout" android:layout_width="wrap_content" android:layout_height="wrap_content" />

In the very first part of the line android:layout_gravity="center" we need to add bottom| directly before center" . Directly after android:layout_height="wrap_content" we need to add android:layout_marginLeft="-6.0dip" before the last />

So now that line should look like this:

<ImageView android:layout_gravity="bottom|center" android:id="@id/wifi_inout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="-6.0dip" />

Now we need to focus on this section here:

<FrameLayout android:id="@id/separate_mobile" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageView android:id="@id/separate_mobile_type" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/separate_mobile_inout" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</FrameLayout>
<FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content">
<FrameLayout android:gravity="center" android:id="@id/mobile_combo" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageView android:id="@id/mobile_signal" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/mobile_type" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:layout_gravity="bottom|right|center" android:id="@id/mobile_inout" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/mobile_roaming" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</FrameLayout>
</FrameLayout>

We need to change that whole section with this:

<RelativeLayout android:gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content">
<FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true">
<FrameLayout android:gravity="center" android:id="@id/mobile_combo" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageView android:id="@id/mobile_signal" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/mobile_type" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:layout_gravity="bottom|right|center" android:id="@id/mobile_inout" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/mobile_roaming" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</FrameLayout>
</FrameLayout>
<FrameLayout android:id="@id/separate_mobile" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true">
<ImageView android:id="@id/separate_mobile_type" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:layout_gravity="bottom|right|center" android:id="@id/separate_mobile_inout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="0.8000001dip" />
</FrameLayout>
</RelativeLayout>

Your fully edited tw_signal_cluster_view.xml should now look like this:

<?xml version="1.0" encoding="utf-8"?>
<com.android.systemui.statusbar.SignalClusterView android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android">
<FrameLayout android:gravity="center" android:id="@id/wifi_combo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="0.0dip">
<ImageView android:id="@id/wifi_signal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleType="center" android:layout_alignParentRight="true" android:layout_centerVertical="true" />
<ImageView android:layout_gravity="bottom|center" android:id="@id/wifi_inout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="-6.0dip" />
</FrameLayout>
<View android:id="@id/spacer" android:visibility="gone" android:layout_width="6.0dip" android:layout_height="6.0dip" />
<LinearLayout android:gravity="center" android:orientation="horizontal" android:id="@id/new_mobile_combo" android:layout_width="wrap_content" android:layout_height="wrap_content">
<RelativeLayout android:gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content">
<FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true">
<FrameLayout android:gravity="center" android:id="@id/mobile_combo" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageView android:id="@id/mobile_signal" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/mobile_type" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:layout_gravity="bottom|right|center" android:id="@id/mobile_inout" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:id="@id/mobile_roaming" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</FrameLayout>
</FrameLayout>
<FrameLayout android:id="@id/separate_mobile" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true">
<ImageView android:id="@id/separate_mobile_type" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<ImageView android:layout_gravity="bottom|right|center" android:id="@id/separate_mobile_inout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="0.8000001dip" />
</FrameLayout>
</RelativeLayout>
</LinearLayout>
<ImageView android:id="@id/airplane" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</com.android.systemui.statusbar.SignalClusterView>

That's it for the coding. You will also need to replace a number of icons in /res/drawable-hdpi which start with stat_sys. I have included them in a zip file called AOSP Signal Icons Only which is attached to this post.

Just put them all into /res/drawable-hdpi then recompile and enjoy. I have also attached a VRTheme zip file called AOSP Signal & Wifi Indicators.zip which you can flash from recovery.

That's it. See, easy as! Enjoy :)

[SIZE=+2]Credits:[/SIZE]

Spannaa - For all your help and support. Taught me everything I know and always helps no matter what. There should be more people like him on this forum. He is also a very knowledgeable themer, go and look at his thread [THEME][NeatROM 4.7 XWLSS] Blue Ginger Plus theme with 23 toggles

Google - For creating Android

Samsung - For making our beloved Galaxy S II

Faryaab - For making the AOSP ROM Super Nexus which I have used as a benchmark. Find it here: [ROM][AOSP][JB][4.1.2][JZO54K] SuperNexus - I9100 - BUILD 5 [17-10-12]