[AT&T, Rogers, Bell, Telus Samsung Galaxy S III] loserskater:
Now for SystemUI.apk

Navigate to /res/layout/tw_status_bar.xml

<?xml version="1.0" encoding="utf-8"?>
<com.android.systemui.statusbar.phone.PhoneStatusBarView android:orientation="vertical" android:id="@id/status_bar" android:background="@drawable/status_bar_background" android:focusable="true" android:fitsSystemWindows="true" android:descendantFocusability="afterDescendants"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui">
<ImageView android:id="@id/notification_lights_out" android:paddingLeft="6.0dip" android:paddingBottom="2.0dip" android:visibility="gone" android:layout_width="@dimen/status_bar_icon_size" android:layout_height="fill_parent" android:src="@drawable/ic_sysbar_lights_out_dot_small" android:scaleType="center" />
[COLOR="SeaGreen"]<RelativeLayout android:id="@id/icons" android:paddingLeft="0.0dip" android:paddingRight="2.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent">[/COLOR]
[COLOR="Red"]<com.android.systemui.statusbar.policy.ClockLeft android:textSize="@dimen/status_bar_clock_text_size" android:textColor="#ff9a9a9a" android:ellipsize="none" android:gravity="left|center" android:id="@id/left_clock" android:paddingLeft="4.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" android:includeFontPadding="false" android:layout_alignParentLeft="true" />[/COLOR]
[COLOR="SeaGreen"]<LinearLayout android:orientation="horizontal" android:id="@id/left_icons" android:paddingLeft="4.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_toLeftOf="@id/center_clock" android:layout_toRightOf="@id/left_clock" android:layout_alignWithParentIfMissing="true">[/COLOR]
<TextView android:textSize="15.0dip" android:gravity="center_vertical" android:id="@id/carrierLabel" android:visibility="visible" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" />
<ImageView android:id="@id/operatorLogoIcon" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="fill_parent" android:src="@drawable/tw_stat_notify_operator_logo" />
<ImageView android:id="@id/doNotDisturbIcon" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/tw_dnd" android:alpha="0.7" android:scaleX="0.85" android:scaleY="0.85" />
<com.android.systemui.statusbar.StatusBarIconView android:id="@id/moreIcon" android:visibility="gone" android:layout_width="@dimen/status_bar_icon_size" android:layout_height="fill_parent" android:src="@drawable/stat_notify_more" />
<com.android.systemui.statusbar.phone.IconMerger android:gravity="center_vertical" android:orientation="horizontal" android:id="@id/notificationIcons" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_alignParentLeft="true" />
</LinearLayout>
[COLOR="Red"]<com.android.systemui.statusbar.policy.ClockCenter android:textSize="@dimen/status_bar_clock_text_size" android:textColor="#ff9a9a9a" android:ellipsize="none" android:gravity="left|center" android:id="@id/center_clock" android:paddingLeft="3.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" android:layout_centerInParent="true" />[/COLOR]
<LinearLayout android:orientation="horizontal" android:id="@id/right_icons" android:paddingRight="4.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_alignParentRight="true">
<LinearLayout android:gravity="center_vertical" android:orientation="horizontal" android:id="@id/statusIcons" android:layout_width="wrap_content" android:layout_height="fill_parent" />
<LinearLayout android:gravity="center" android:orientation="horizontal" android:id="@id/signal_battery_cluster" android:paddingLeft="2.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent">
<include android:id="@id/signal_cluster" android:layout_width="wrap_content" android:layout_height="wrap_content" layout="@layout/tw_signal_cluster_view" />
<include android:id="@id/battery_cluster" android:layout_width="wrap_content" android:layout_height="wrap_content" layout="@layout/battery_cluster_view" />
<TextView android:textSize="18.0dip" android:textColor="#ff9a9a9a" android:layout_gravity="center" android:id="@id/battery_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/status_bar_network_name_separator" />
<ImageView android:gravity="center" android:id="@id/battery" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</LinearLayout>
<com.android.systemui.statusbar.policy.Clock android:textSize="@dimen/status_bar_clock_text_size" android:textColor="#ff9a9a9a" android:ellipsize="none" android:gravity="left|center" android:id="@id/clock" android:paddingLeft="3.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" android:includeFontPadding="false" />
</LinearLayout>
[COLOR="SeaGreen"]</RelativeLayout>[/COLOR]
<LinearLayout android:orientation="horizontal" android:id="@id/ticker" android:paddingLeft="6.0dip" android:animationCache="false" android:layout_width="fill_parent" android:layout_height="fill_parent">
<ImageSwitcher android:id="@id/tickerIcon" android:layout_width="@dimen/status_bar_icon_size" android:layout_height="@dimen/status_bar_icon_size" android:layout_marginRight="4.0dip">
<com.android.systemui.statusbar.AnimatedImageView android:layout_width="@dimen/status_bar_icon_size" android:layout_height="@dimen/status_bar_icon_size" android:scaleType="centerInside" />
<com.android.systemui.statusbar.AnimatedImageView android:layout_width="@dimen/status_bar_icon_size" android:layout_height="@dimen/status_bar_icon_size" android:scaleType="centerInside" />
</ImageSwitcher>
<com.android.systemui.statusbar.phone.TickerView android:id="@id/tickerText" android:paddingTop="2.0dip" android:paddingRight="10.0dip" android:layout_width="0.0dip" android:layout_height="wrap_content" android:layout_weight="1.0">
<TextView android:textAppearance="@style/TextAppearance.StatusBar.PhoneTicker" android:id="@id/ticker_text_view_old" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" />
<TextView android:textAppearance="@style/TextAppearance.StatusBar.PhoneTicker" android:id="@id/ticker_text_view_new" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" />
</com.android.systemui.statusbar.phone.TickerView>
</LinearLayout>
</com.android.systemui.statusbar.phone.PhoneStatusBarView>

Navigate to /red/values/ids.xml

Remove the line in blue and add the line in red:

[COLOR="Blue"]<item type="id" name="center_clock_layout">false</item>[/COLOR]
[COLOR="Red"]<item type="id" name="left_clock">false</item>[/COLOR]

STOP!!!!

STOP!!!!

We need to grab some IDs before we continue.

Try to compile. If it fails, try adding in the blue line from the step above (center_clock_layout).

Now decompile again and navigate to /res/values/public.xml.

Search for the following three ID's:

(Make sure you're getting the ones with type="id")

clock
center_clock
left_clock

Now copy the id's somewhere.

Ok, let's continue...

Navigate to /smali/com/android/systemui/statusbar/phone/PhoneStatusBar.smali

.field private mCarrierLabelHeight:I

.field private mCarrierLabelVisible:Z
[COLOR="Blue"]
.field mCenterClockLayout:Landroid/widget/LinearLayout;
[/COLOR]
.field mChoreographer:Landroid/view/Choreographer;

.field mClearButton:Landroid/view/View;

method makeStatusBarView:

iget-object v9, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;

const v10, 0x7f0d0035

invoke-virtual {v9, v10}, Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;->findViewById(I)Landroid/view/View;

move-result-object v9

check-cast v9, Landroid/widget/LinearLayout;

iput-object v9, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mIcons:Landroid/widget/LinearLayout;

[COLOR="blue"]iget-object v9, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;

const v10, 0x7f0d0121

invoke-virtual {v9, v10}, Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;->findViewById(I)Landroid/view/View;

move-result-object v9

check-cast v9, Landroid/widget/LinearLayout;

iput-object v9, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mCenterClockLayout:Landroid/widget/LinearLayout;[/COLOR]

.line 622
iget-object v9, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;

const v10, 0x7f0d003e

invoke-virtual {v9, v10}, Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;->findViewById(I)Landroid/view/View;

move-result-object v9

iput-object v9, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mTickerView:Landroid/view/View;

method showClock

REPLACE THE ENTIRE METHOD WITH THIS:

.method public showClock(Z)V
.locals 11
.parameter "show"

.prologue
const/16 v8, 0x8

const/4 v7, 0x0

const/4 v6, 0x1

.line 146
iget-object v9, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;

if-nez v9, :cond_1

.line 165
:cond_0
:goto_0
return-void

.line 147
:cond_1
iget-object v9, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;

const v10, 0x7f0d003f # "clock"

invoke-virtual {v9, v10}, Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;->findViewById(I)Landroid/view/View;

move-result-object v2

.line 148
.local v2, clock:Landroid/view/View;
iget-object v9, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;

const v10, 0x7f0d0124 # "center_clock"

invoke-virtual {v9, v10}, Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;->findViewById(I)Landroid/view/View;

move-result-object v0

.line 149
.local v0, cclock:Landroid/view/View;
iget-object v9, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;

const v10, 0x7f0d0123 # "left_clock"

invoke-virtual {v9, v10}, Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;->findViewById(I)Landroid/view/View;

move-result-object v3

.line 150
.local v3, lclock:Landroid/view/View;
iget-object v9, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mContext:Landroid/content/Context;

invoke-virtual {v9}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;

move-result-object v9

const-string v10, "clock_style"

invoke-static {v9, v10, v6}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I

move-result v9

if-ne v9, v6, :cond_4

move v5, v6

.line 152
.local v5, rightClock:Z
:goto_1
iget-object v9, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mContext:Landroid/content/Context;

invoke-virtual {v9}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;

move-result-object v9

const-string v10, "clock_style"

invoke-static {v9, v10, v6}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I

move-result v9

.line 153
const/4 v10, 0x2

.line 152
if-ne v9, v10, :cond_5

move v1, v6

.line 154
.local v1, centerClock:Z
:goto_2
iget-object v9, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mContext:Landroid/content/Context;

invoke-virtual {v9}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;

move-result-object v9

const-string v10, "clock_style"

invoke-static {v9, v10, v6}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I

move-result v9

.line 155
const/4 v10, 0x3

.line 154
if-ne v9, v10, :cond_6

move v4, v6

.line 156
.local v4, leftClock:Z
:goto_3
if-eqz v5, :cond_2

if-eqz v2, :cond_2

.line 157
if-eqz p1, :cond_7

move v6, v7

:goto_4
invoke-virtual {v2, v6}, Landroid/view/View;->setVisibility(I)V

.line 159
:cond_2
if-eqz v1, :cond_3

if-eqz v0, :cond_3

.line 160
if-eqz p1, :cond_8

move v6, v7

:goto_5
invoke-virtual {v0, v6}, Landroid/view/View;->setVisibility(I)V

.line 162
:cond_3
if-eqz v4, :cond_0

if-eqz v3, :cond_0

.line 163
if-eqz p1, :cond_9

:goto_6
invoke-virtual {v3, v7}, Landroid/view/View;->setVisibility(I)V

goto :goto_0

.end local v1 #centerClock:Z
.end local v4 #leftClock:Z
.end local v5 #rightClock:Z
:cond_4
move v5, v7

.line 150
goto :goto_1

.restart local v5 #rightClock:Z
:cond_5
move v1, v7

.line 152
goto :goto_2

.restart local v1 #centerClock:Z
:cond_6
move v4, v7

.line 154
goto :goto_3

.restart local v4 #leftClock:Z
:cond_7
move v6, v8

.line 157
goto :goto_4

.line 160
:cond_8
const/4 v6, 0x4

goto :goto_5

:cond_9
move v7, v8

.line 163
goto :goto_6
.end method

WAIT!!!

WAIT!!!

Remeber those id's you grabbed earlier? Here's where we put them. Look through the method you just added and replace the id's with the ones you copied!

Now search for

mIcons:Landroid/widget/LinearLayout;

and replace every instance with

mIcons:Landroid/widget/RelativeLayout;

method makeStatusBarView

iget-object v9, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mNotificationIcons:Lcom/android/systemui/statusbar/phone/IconMerger;

iget-object v10, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mMoreIcon:Landroid/view/View;

invoke-virtual {v9, v10}, Lcom/android/systemui/statusbar/phone/IconMerger;->setOverflowIndicator(Landroid/view/View;)V

.line 621
iget-object v9, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;

const v10, 0x7f0d0035

invoke-virtual {v9, v10}, Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;->findViewById(I)Landroid/view/View;

move-result-object v9

[COLOR="red"]check-cast v9, Landroid/widget/RelativeLayout;[/COLOR]

iput-object v9, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mIcons:Landroid/widget/RelativeLayout;

.line 622
iget-object v9, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;

const v10, 0x7f0d003e

invoke-virtual {v9, v10}, Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;->findViewById(I)Landroid/view/View;

move-result-object v9

Navigate to /smali/com/android/systemui/statusbar/phone/PhoneStatusBar$MyTicker.smali

Now search for

mIcons:Landroid/widget/LinearLayout;

and replace every instance with

mIcons:Landroid/widget/RelativeLayout;

Navigate to /smali/com/android/systemui/statusbar/phone/PhoneStatusBarView.smali

Search for

leftIconsControl:Landroid/widget/LinearLayout$LayoutParams;

and replace every instance with

leftIconsControl:Landroid/widget/RelativeLayout$LayoutParams;

Do the same thing and replace

rightIconsControl:Landroid/widget/LinearLayout$LayoutParams;

with

rightIconsControl:Landroid/widget/RelativeLayout$LayoutParams;

One last one. Replace

check-cast v0, Landroid/widget/LinearLayout$LayoutParams;

with

check-cast v0, Landroid/widget/RelativeLayout$LayoutParams;

Navigate to /smali/com/android/systemui/statusbar/BaseStatusBar.smali

If you haven't implemented the trancparency mod, place the following method after ".method public setMaxBrightness(I)V"

method setStatusBarParams

REPLACE THE ENTIRE METHOD WITH THIS:

.method protected setStatusBarParams(Landroid/view/View;)V
.locals 4

iget-object v1, p0, Lcom/android/systemui/statusbar/BaseStatusBar;->mContext:Landroid/content/Context;

invoke-virtual {v1}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;

move-result-object v1

const-string v2, "statusbar_color"

const/high16 v3, -0x100

invoke-static {v1, v2, v3}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I

move-result v0

invoke-virtual {p1, v0}, Landroid/view/View;->setBackgroundColor(I)V

return-void
.end method

Now download the zip attached to this post and copy the smali folder, overwriting if it asks.

If you haven't implemented the transparency mod, You only need to add a couple things.

Navigate to /smali/com/android/systemui/statusbar/phone/PhoneStatusbar.smali

Lcom/android/systemui/statusbar/phone/PhoneStatusBar$BrightnessEnableObserver;,
Lcom/android/systemui/statusbar/phone/PhoneStatusBar$BatteryTextObserver;,
Lcom/android/systemui/statusbar/phone/PhoneStatusBar$FastColorDrawable;,
Lcom/android/systemui/statusbar/phone/PhoneStatusBar$MyTicker;,
[COLOR="Red"]Lcom/android/systemui/statusbar/phone/PhoneStatusBar$SettingsObserver;,[/COLOR]
Lcom/android/systemui/statusbar/phone/PhoneStatusBar$NotificationClicker;,
Lcom/android/systemui/statusbar/phone/PhoneStatusBar$H;,
Lcom/android/systemui/statusbar/phone/PhoneStatusBar$ExpandedDialog;

.method static synthetic access$3400(Lcom/android/systemui/statusbar/phone/PhoneStatusBar;ILandroid/view/animation/Animation$AnimationListener;)Landroid/view/animation/Animation;
.locals 1

invoke-direct {p0, p1, p2}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->loadAnim(ILandroid/view/animation/Animation$AnimationListener;)Landroid/view/animation/Animation;

move-result-object v0

return-object v0
.end method

[COLOR="Red"].method static synthetic access$3401(Lcom/android/systemui/statusbar/phone/PhoneStatusBar;Landroid/view/View;)V
.locals 0

invoke-virtual {p0, p1}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->setStatusBarParams(Landroid/view/View;)V

return-void
.end method[/COLOR]

.method static synthetic access$3500(Lcom/android/systemui/statusbar/phone/PhoneStatusBar;)V
.locals 0

invoke-direct {p0}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->playTraySound()V

return-void
.end method

method updateResources

invoke-virtual {v0, v3}, Landroid/content/Context;->getText(I)Ljava/lang/CharSequence;

move-result-object v3

invoke-virtual {v2, v3}, Landroid/view/View;->setContentDescription(Ljava/lang/CharSequence;)V

invoke-virtual {p0}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->loadDimens()V

[COLOR="Red"]iget-object v2, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;

invoke-virtual {p0, v2}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->setStatusBarParams(Landroid/view/View;)V[/COLOR]

return-void
.end method

method makeStatusBarView

invoke-virtual {v9, v10}, Lcom/android/systemui/statusbar/policy/NotificationRowLayout;->setLongPressListener(Landroid/view/View$OnLongClickListener;)V

iget-object v9, p0, Lcom/android/systemui/statusbar/BaseStatusBar;->mPile:Lcom/android/systemui/statusbar/policy/NotificationRowLayout;

iput-object v9, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mExpandedContents:Landroid/view/View;

[COLOR="Red"]new-instance v9, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$SettingsObserver;

new-instance v10, Landroid/os/Handler;

invoke-direct {v10}, Landroid/os/Handler;-><init>()V

invoke-direct {v9, p0, v10}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$SettingsObserver;-><init>(Lcom/android/systemui/statusbar/phone/PhoneStatusBar;Landroid/os/Handler;)V

invoke-virtual {v9}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$SettingsObserver;->observe()V[/COLOR]

goto/16 :goto_5

:cond_f
const/16 v9, 0x8

goto/16 :goto_6

method public start()V

iput-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mWindowManager:Landroid/view/IWindowManager;

invoke-super {p0}, Lcom/android/systemui/statusbar/BaseStatusBar;->start()V

invoke-direct {p0}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->addNavigationBar()V

[COLOR="red"]new-instance v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$SettingsObserver;

iget-object v1, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mHandler:Lcom/android/systemui/statusbar/BaseStatusBar$H;

invoke-direct {v0, p0, v1}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$SettingsObserver;-><init>(Lcom/android/systemui/statusbar/phone/PhoneStatusBar;Landroid/os/Handler;)V

invoke-virtual {v0}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$SettingsObserver;->observe()V[/COLOR]

new-instance v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBarPolicy;

iget-object v1, p0, Lcom/android/systemui/SystemUI;->mContext:Landroid/content/Context;

invoke-direct {v0, v1}, Lcom/android/systemui/statusbar/phone/PhoneStatusBarPolicy;-><init>(Landroid/content/Context;)V

iput-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mIconPolicy:Lcom/android/systemui/statusbar/phone/PhoneStatusBarPolicy;

return-void
.end method