[Guide][KitKat][Xperia] Guide How to add Flip Animation Quick Settings

Search This thread

Adi Aisiteru Reborn

Senior Member
Apr 3, 2013
1,770
4,830
Bandar Lampung
Guide Smali How to add Flip Animation Quick Settings

Flip Animation Quick Settings , Youtube https://www.youtube.com/watch?v=DBBEsLk6ti4&feature=youtu.be

REQUIREMENT :
- ApkTool RC
- Notepad++
- Xperia KitKat
- Brain
- Patient
- Experience


STEP -1
Decompile SystemUI.apk
Download attached resources and sources, merge to your decompiled systemui

STEP -2
SystemUI.apk/res/layout/

Code:
somc_statusbar_notification_tools_button.xml
or
Code:
status_bar_notification_tools_button.xml

add the red line
Code:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:gravity="center" android:orientation="vertical" android:id="@id/tools_button_layout" android:background="@drawable/somc_quick_settings_tool_button_bg" [COLOR="Red"]android:clickable="true"[/COLOR] android:layout_width="wrap_content" android:layout_height="wrap_content" android:minHeight="1.0dip"
  xmlns:android="http://schemas.android.com/apk/res/android">
    <FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content">
        <ImageView android:id="@id/tools_button_img" android:layout_width="@dimen/qs_tile_icon_size" android:layout_height="@dimen/qs_tile_icon_size" android:scaleType="center" android:contentDescription="@null" />
        <ImageView android:id="@id/tools_button_anim" android:visibility="invisible" android:layout_width="fill_parent" android:layout_height="wrap_content" android:scaleType="center" android:contentDescription="@null" />
    </FrameLayout>
    <TextView android:textSize="@dimen/status_bar_tools_button_label_text_size" android:gravity="top|center" android:id="@id/tools_button_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="@dimen/status_bar_tools_button_margin_bottom" android:lines="2" android:scrollHorizontally="false" android:includeFontPadding="false" />
</LinearLayout>

go to
com/sonymobile/systemui/statusbar/tools/ToolsButton.smali
Add the red line
Code:
# static fields
.field private static final TAG:Ljava/lang/String;


# instance fields
[COLOR="Red"].field private mHandler:Landroid/os/Handler;[/COLOR]

.field private mAccentColor:I

.field private mAnimationFrames:Ljava/util/ArrayList;
    .annotation system Ldalvik/annotation/Signature;

Add the red line and pay attention to the register number in blue hint, each device can be different ,
it can be v3, v2, .. you must adapt it.
Code:
.method public constructor <init>(Landroid/content/Context;)V
    .locals 9
    .param p1, "context"    # Landroid/content/Context;

    .prologue
    const/4 v8, 0x1

    const/4 v7, 0x0

    const/4 v6, -0x1

    const/4 v5, 0x0

    invoke-direct {p0, p1}, Landroid/widget/FrameLayout;-><init>(Landroid/content/Context;)V

    const/high16 v3, -0x80000000

    iput v3, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mState:I

    iput v7, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mCurrentAnimationImage:I

    iput-object v5, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mAnimationFrames:Ljava/util/ArrayList;

    new-instance v3, Landroid/util/SparseArray;

    const/16 v4, 0xa

    invoke-direct {v3, v4}, Landroid/util/SparseArray;-><init>(I)V

    iput-object v3, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mBitmaps:Landroid/util/SparseArray;

    iput-boolean v7, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mButtonClicked:Z

    iput v7, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mButtonType:I

    iput-object p1, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mContext:Landroid/content/Context;

    new-instance [COLOR="Blue"]v3[/COLOR], Landroid/util/SparseArray;

    invoke-direct {[COLOR="Blue"]v3[/COLOR]}, Landroid/util/SparseArray;-><init>()V

    iput-object [COLOR="Blue"]v3[/COLOR], p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mStateIcons:Landroid/util/SparseArray;

    [COLOR="Red"]new-instance [COLOR="Blue"]v3[/COLOR], Landroid/os/Handler;

    invoke-direct {[COLOR="Blue"]v3[/COLOR]}, Landroid/os/Handler;-><init>()V

    iput-object [COLOR="Blue"]v3[/COLOR], p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mHandler:Landroid/os/Handler;[/COLOR]

    new-instance [COLOR="Blue"]v3[/COLOR], Landroid/util/SparseIntArray;

    invoke-direct {[COLOR="Blue"]v3[/COLOR]}, Landroid/util/SparseIntArray;-><init>()V

    iput-object [COLOR="Blue"]v3[/COLOR], p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mStateContentDescription:Landroid/util/SparseIntArray;

    new-instance v2, Landroid/widget/FrameLayout$LayoutParams;

    invoke-direct {v2, v6, v6}, Landroid/widget/FrameLayout$LayoutParams;-><init>(II)V

    .local v2, "params":Landroid/widget/FrameLayout$LayoutParams;
    invoke-static {p1}, Landroid/view/LayoutInflater;->from(Landroid/content/Context;)Landroid/view/LayoutInflater;

    move-result-object v1

    .local v1, "inflater":Landroid/view/LayoutInflater;
    const [COLOR="Blue"]v3[/COLOR], 0x7f04001d

    invoke-virtual {v1, [COLOR="Blue"]v3[/COLOR], v5}, Landroid/view/LayoutInflater;->inflate(ILandroid/view/ViewGroup;)Landroid/view/View;

    move-result-object [COLOR="Blue"]v3[/COLOR]

    check-cast [COLOR="Blue"]v3[/COLOR], Landroid/widget/LinearLayout;

    iput-object [COLOR="Blue"]v3[/COLOR], p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mVerticalLayout:Landroid/widget/LinearLayout;

    [COLOR="Red"]iget-object [COLOR="Blue"]v3[/COLOR], p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mVerticalLayout:Landroid/widget/LinearLayout;

    invoke-virtual {[COLOR="Blue"]v3[/COLOR], p0}, Landroid/widget/LinearLayout;->setOnClickListener(Landroid/view/View$OnClickListener;)V

    iget-object [COLOR="Blue"]v3[/COLOR], p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mVerticalLayout:Landroid/widget/LinearLayout;

    invoke-virtual {[COLOR="Blue"]v3[/COLOR], p0}, Landroid/widget/LinearLayout;->setOnLongClickListener(Landroid/view/View$OnLongClickListener;)V
[/COLOR]

Next
add the red mehod
Code:
.method private enableButton(Z)V
    .locals 1
    .param p1, "enable"    # Z

    .prologue
    if-eqz p1, :cond_0

    move-object v0, p0

    .local v0, "enableButton":Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;
    :goto_0
    invoke-virtual {p0, v0}, Landroid/view/View;->setOnClickListener(Landroid/view/View$OnClickListener;)V

    invoke-virtual {p0, v0}, Landroid/view/View;->setOnLongClickListener(Landroid/view/View$OnLongClickListener;)V

    invoke-virtual {p0, v0}, Landroid/view/View;->setOnTouchListener(Landroid/view/View$OnTouchListener;)V

    return-void

    .end local v0    # "enableButton":Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;
    :cond_0
    const/4 v0, 0x0

    goto :goto_0
.end method

[COLOR="Red"].method private mOnLongClickVerticalLayout()V
    .locals 6

    .prologue
    iget-object v0, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mVerticalLayout:Landroid/widget/LinearLayout;

    return-void
.end method[/COLOR]

.method private setImageBitmap(Landroid/widget/ImageView;Landroid/graphics/Bitmap;Z)V
    .locals 2
    .param p1, "imageView"    # Landroid/widget/ImageView;
    .param p2, "bitmap"    # Landroid/graphics/Bitmap;
    .param p3, "colorize"    # Z

    .prologue

    invoke-virtual {p1, p2}, Landroid/widget/ImageView;->setImageBitmap(Landroid/graphics/Bitmap;)V

    const v0, -0x55555556

    invoke-static {p3}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;

    move-result-object v1

    invoke-virtual {p1, v0, v1}, Landroid/view/View;->setTag(ILjava/lang/Object;)V

Next find this line
Code:
# virtual methods
and add all red method
Code:
# virtual methods
[COLOR="Red"].method public flip()V
    .locals 2

    .prologue
    const/4 v0, 0x0

    invoke-virtual {p0, v0}, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->flipTile(I)V

    return-void
.end method

.method public flipTile(I)V
    .locals 1
    .param p1, "delay"    # I

    .prologue
    .line 159
    const/4 v0, 0x1

    invoke-virtual {p0, p1, v0}, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->flipTile(IZ)V

    .line 160
    return-void
.end method

.method public flipTile(IZ)V
    .locals 5
    .param p1, "delay"    # I
    .param p2, "flipRight"    # Z

    .prologue
    .line 163
    invoke-virtual {p0}, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->isFlipTilesEnabled()Z

    move-result v2

    if-nez v2, :cond_0

    .line 190
    :goto_0
    return-void

    .line 164
    :cond_0
    iget-object v3, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mContext:Landroid/content/Context;

    if-eqz p2, :cond_1

    const v2, 0x7f05001c

    :goto_1
    invoke-static {v3, v2}, Landroid/animation/AnimatorInflater;->loadAnimator(Landroid/content/Context;I)Landroid/animation/Animator;

    move-result-object v0

    check-cast v0, Landroid/animation/AnimatorSet;

    .line 167
    .local v0, "anim":Landroid/animation/AnimatorSet;
    iget-object v2, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mVerticalLayout:Landroid/widget/LinearLayout;

    invoke-virtual {v0, v2}, Landroid/animation/AnimatorSet;->setTarget(Ljava/lang/Object;)V

    .line 168
    const-wide/16 v2, 0xc8

    invoke-virtual {v0, v2, v3}, Landroid/animation/AnimatorSet;->setDuration(J)Landroid/animation/AnimatorSet;

    .line 169
    new-instance v2, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton$31;

    invoke-direct {v2, p0}, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton$31;-><init>(Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;)V

    invoke-virtual {v0, v2}, Landroid/animation/AnimatorSet;->addListener(Landroid/animation/Animator$AnimatorListener;)V

    .line 182
    new-instance v1, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton$32;

    invoke-direct {v1, p0, v0}, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton$32;-><init>(Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;Landroid/animation/AnimatorSet;)V

    .line 189
    .local v1, "doAnimation":Ljava/lang/Runnable;
    iget-object v2, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mHandler:Landroid/os/Handler;

    int-to-long v3, p1

    invoke-virtual {v2, v1, v3, v4}, Landroid/os/Handler;->postDelayed(Ljava/lang/Runnable;J)Z

    goto :goto_0

    .line 164
    .end local v0    # "anim":Landroid/animation/AnimatorSet;
    .end local v1    # "doAnimation":Ljava/lang/Runnable;
    :cond_1
    const v2, 0x7f05001b

    goto :goto_1
.end method

.method public isFlipTilesEnabled()Z
    .locals 3

    .prologue
    const/4 v0, 0x1

    .line 154
    iget-object v1, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mContext:Landroid/content/Context;

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

    move-result-object v1

    const-string v2, "quick_settings_tiles_flip"

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

    move-result v1

    if-ne v1, v0, :cond_0

    :goto_0
    return v0

    :cond_0
    const/4 v0, 0x0

    goto :goto_0
.end method[/COLOR]

.method protected varargs addState(ILjava/lang/Integer;Lcom/sonymobile/systemui/statusbar/tools/ToolsButton$ToolsIcon;[Lcom/sonymobile/systemui/statusbar/tools/ToolsButton$ToolsIcon;)V
    .locals 2
    .param p1, "stateId"    # I
    .param p2, "stringId"    # Ljava/lang/Integer;
    .param p3, "stateIcon"    # Lcom/sonymobile/systemui/statusbar/tools/ToolsButton$ToolsIcon;
    .param p4, "animationIcons"    # [Lcom/sonymobile/systemui/statusbar/tools/ToolsButton$ToolsIcon;

    .prologue

    iget-object v0, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mStateIcons:Landroid/util/SparseArray;

    invoke-virtual {v0, p1, p3}, Landroid/util/SparseArray;->put(ILjava/lang/Object;)V

    iget-object v0, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mStateContentDescription:Landroid/util/SparseIntArray;

    invoke-virtual {p2}, Ljava/lang/Integer;->intValue()I

next search this method and add the red line
Code:
.method public onClick(Landroid/view/View;)V
    .locals 2
    .param p1, "view"    # Landroid/view/View;

    .prologue
    iget-object v0, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mAnimationView:Landroid/widget/ImageView;

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

    move-result v0

    if-nez v0, :cond_0

    iget v0, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mButtonType:I

    const/4 v1, 0x2

    if-ne v0, v1, :cond_1

    :cond_0
    invoke-virtual {p0}, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->onAction()V

    [COLOR="Red"]invoke-virtual {p0}, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->flip()V[/COLOR]

    const/4 v0, 0x1

    iput-boolean v0, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mButtonClicked:Z
	
    :cond_1
    return-void
.end method

.method public onLongClick(Landroid/view/View;)Z
    .locals 2
    .param p1, "view"    # Landroid/view/View;

    .prologue
    const/4 v0, 0x0

    .local v0, "clickHandled":Z
    iget-object v1, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mAnimationView:Landroid/widget/ImageView;

    invoke-virtual {v1}, Landroid/view/View;->getVisibility()I

    move-result v1

    if-eqz v1, :cond_0

    invoke-virtual {p0}, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->onLongClickPopup()Z

    move-result v1

    if-eqz v1, :cond_1

    const/4 v0, 0x1

    :cond_0
    :goto_0
    [COLOR="Red"]invoke-direct {p0}, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mOnLongClickVerticalLayout()V[/COLOR]

    return v0

    :cond_1
    const/4 v0, 0x0

    goto :goto_0
.end method

Compile your systemUI
STEP-3
Decompile the newly recompiled again
next go to systemui/res/values/public.xml

Code:
<public type="anim" name="wallpaper_recents_launch_from_launcher_exit" id="0x7f05001a" />
    [COLOR="Blue"]<public type="anim" name="flip_left" id="[COLOR="Red"]0x7f??????[/COLOR]" />[/COLOR]
    [COLOR="Blue"]<public type="anim" name="flip_right" id="[COLOR="Red"]0x7f??????[/COLOR]" />[/COLOR]
    <public type="xml" name="somc_skin_permissions" id="0x7f060000" />
next go to
com/sonymobile/systemui/statusbar/tools/ToolsButton.smali
serach this method
Code:
.method public flipTile(IZ)V
    .locals 5
    .param p1, "delay"    # I
    .param p2, "flipRight"    # Z

    .prologue
    .line 163
    invoke-virtual {p0}, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->isFlipTilesEnabled()Z

    move-result v2

    if-nez v2, :cond_0

    .line 190
    :goto_0
    return-void

    .line 164
    :cond_0
    iget-object v3, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mContext:Landroid/content/Context;

    if-eqz p2, :cond_1

    const v2, [COLOR="Red"]0x7f05001c[/COLOR]

    :goto_1
    invoke-static {v3, v2}, Landroid/animation/AnimatorInflater;->loadAnimator(Landroid/content/Context;I)Landroid/animation/Animator;

    move-result-object v0

    check-cast v0, Landroid/animation/AnimatorSet;

    .line 167
    .local v0, "anim":Landroid/animation/AnimatorSet;
    iget-object v2, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mVerticalLayout:Landroid/widget/LinearLayout;

    invoke-virtual {v0, v2}, Landroid/animation/AnimatorSet;->setTarget(Ljava/lang/Object;)V

    .line 168
    const-wide/16 v2, 0xc8

    invoke-virtual {v0, v2, v3}, Landroid/animation/AnimatorSet;->setDuration(J)Landroid/animation/AnimatorSet;

    .line 169
    new-instance v2, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton$31;

    invoke-direct {v2, p0}, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton$31;-><init>(Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;)V

    invoke-virtual {v0, v2}, Landroid/animation/AnimatorSet;->addListener(Landroid/animation/Animator$AnimatorListener;)V

    .line 182
    new-instance v1, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton$32;

    invoke-direct {v1, p0, v0}, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton$32;-><init>(Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;Landroid/animation/AnimatorSet;)V

    .line 189
    .local v1, "doAnimation":Ljava/lang/Runnable;
    iget-object v2, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mHandler:Landroid/os/Handler;

    int-to-long v3, p1

    invoke-virtual {v2, v1, v3, v4}, Landroid/os/Handler;->postDelayed(Ljava/lang/Runnable;J)Z

    goto :goto_0

    .line 164
    .end local v0    # "anim":Landroid/animation/AnimatorSet;
    .end local v1    # "doAnimation":Ljava/lang/Runnable;
    :cond_1
    const v2, [COLOR="Red"]0x7f05001b[/COLOR]

    goto :goto_1
.end method
change the red value in the smali
according to the value you got in your own public.xml

const v2, 0x7f05001c
with
Code:
[COLOR="Blue"]<public type="anim" name="flip_right" id="[COLOR="Red"]0x7f??????[/COLOR]" />[/COLOR]

and
const v2, 0x7f05001b
with
Code:
[COLOR="Blue"]<public type="anim" name="flip_left" id="[COLOR="Red"]0x7f??????[/COLOR]" />[/COLOR]

Done and compile your systemUI

Credits :
- Sony
- Darck CM
- CyanogenMod
 

Attachments

  • Resources_and_Sources_SystemUI.apk.zip
    3.8 KB · Views: 295
Last edited:

G.Pawar

Senior Member
Oct 26, 2014
295
115
28
Hey bro I already this tutorial but get smali error and I don't know about smali code ....
If you don't mind could you make this in my systemUI.apk


Sent from my D2105 using XDA Free mobile app
 
Last edited:

G.Pawar

Senior Member
Oct 26, 2014
295
115
28
Do you try at xe1 dual and get error ? i will try in myy xe1 single soon :D
OK...but tell me its work or not in ur xe1 single

Send From Xperia E1 Dual

---------- Post added at 11:08 AM ---------- Previous post was at 11:07 AM ----------

rayanbg_ hey you have any idea about small app for xperia e1 phone

Send From Xperia E1 Dual
 

hazikh

Senior Member
Feb 8, 2013
62
22
wow.....thanks master!!!
from galaxy w then lenovo and now sony...... you're the best...... :D :good:
 

moonryder

Senior Member
Apr 24, 2014
1,359
746
southern
hi,

i am on KitSlim Evo9 (Stock modified and rooted .108 firmware).
I tried your method, but got a big problem:

STEP -2
SystemUI.apk/res/layout/somc_statusbar_notification_tools_button.xml
add the red line

In my case there is no such xml :confused:
All other steps are easy to do...

What to do now or is it impossible then to add flip tiles?
 

moonryder

Senior Member
Apr 24, 2014
1,359
746
southern
oke here is yours
Code:
status_bar_notification_tools_button.xml
if something wrong, try to skip that step
i tried it this afternoon, and the result was an invisible status- and navbar.
Will try it without that step and report later.

EDIT:
- tried it without step 1: same result, status- and navbar are invisible
- tried it complete one more time with "status_bar_notification_tools_button_xml": the functionality of the tiles are ok, but on each press the error "SystemUI has stopped" popped up.

So i think this mod is impossible with KitSlim - very pity...
 
Last edited:

Adi Aisiteru Reborn

Senior Member
Apr 3, 2013
1,770
4,830
Bandar Lampung
i tried it this afternoon, and the result was an invisible status- and navbar.
Will try it without that step and report later.

EDIT:
- tried it without step 1: same result, status- and navbar are invisible
- tried it complete one more time with "status_bar_notification_tools_button_xml": the functionality of the tiles are ok, but on each press the error "SystemUI has stopped" popped up.

So i think this mod is impossible with KitSlim - very pity...

here test it, and post logcat if you get SystemUI force closes
 
  • Like
Reactions: moonryder

Top Liked Posts

  • There are no posts matching your filters.
  • 12
    Guide Smali How to add Flip Animation Quick Settings

    Flip Animation Quick Settings , Youtube https://www.youtube.com/watch?v=DBBEsLk6ti4&feature=youtu.be

    REQUIREMENT :
    - ApkTool RC
    - Notepad++
    - Xperia KitKat
    - Brain
    - Patient
    - Experience


    STEP -1
    Decompile SystemUI.apk
    Download attached resources and sources, merge to your decompiled systemui

    STEP -2
    SystemUI.apk/res/layout/

    Code:
    somc_statusbar_notification_tools_button.xml
    or
    Code:
    status_bar_notification_tools_button.xml

    add the red line
    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout android:gravity="center" android:orientation="vertical" android:id="@id/tools_button_layout" android:background="@drawable/somc_quick_settings_tool_button_bg" [COLOR="Red"]android:clickable="true"[/COLOR] android:layout_width="wrap_content" android:layout_height="wrap_content" android:minHeight="1.0dip"
      xmlns:android="http://schemas.android.com/apk/res/android">
        <FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content">
            <ImageView android:id="@id/tools_button_img" android:layout_width="@dimen/qs_tile_icon_size" android:layout_height="@dimen/qs_tile_icon_size" android:scaleType="center" android:contentDescription="@null" />
            <ImageView android:id="@id/tools_button_anim" android:visibility="invisible" android:layout_width="fill_parent" android:layout_height="wrap_content" android:scaleType="center" android:contentDescription="@null" />
        </FrameLayout>
        <TextView android:textSize="@dimen/status_bar_tools_button_label_text_size" android:gravity="top|center" android:id="@id/tools_button_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="@dimen/status_bar_tools_button_margin_bottom" android:lines="2" android:scrollHorizontally="false" android:includeFontPadding="false" />
    </LinearLayout>

    go to
    com/sonymobile/systemui/statusbar/tools/ToolsButton.smali
    Add the red line
    Code:
    # static fields
    .field private static final TAG:Ljava/lang/String;
    
    
    # instance fields
    [COLOR="Red"].field private mHandler:Landroid/os/Handler;[/COLOR]
    
    .field private mAccentColor:I
    
    .field private mAnimationFrames:Ljava/util/ArrayList;
        .annotation system Ldalvik/annotation/Signature;

    Add the red line and pay attention to the register number in blue hint, each device can be different ,
    it can be v3, v2, .. you must adapt it.
    Code:
    .method public constructor <init>(Landroid/content/Context;)V
        .locals 9
        .param p1, "context"    # Landroid/content/Context;
    
        .prologue
        const/4 v8, 0x1
    
        const/4 v7, 0x0
    
        const/4 v6, -0x1
    
        const/4 v5, 0x0
    
        invoke-direct {p0, p1}, Landroid/widget/FrameLayout;-><init>(Landroid/content/Context;)V
    
        const/high16 v3, -0x80000000
    
        iput v3, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mState:I
    
        iput v7, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mCurrentAnimationImage:I
    
        iput-object v5, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mAnimationFrames:Ljava/util/ArrayList;
    
        new-instance v3, Landroid/util/SparseArray;
    
        const/16 v4, 0xa
    
        invoke-direct {v3, v4}, Landroid/util/SparseArray;-><init>(I)V
    
        iput-object v3, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mBitmaps:Landroid/util/SparseArray;
    
        iput-boolean v7, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mButtonClicked:Z
    
        iput v7, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mButtonType:I
    
        iput-object p1, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mContext:Landroid/content/Context;
    
        new-instance [COLOR="Blue"]v3[/COLOR], Landroid/util/SparseArray;
    
        invoke-direct {[COLOR="Blue"]v3[/COLOR]}, Landroid/util/SparseArray;-><init>()V
    
        iput-object [COLOR="Blue"]v3[/COLOR], p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mStateIcons:Landroid/util/SparseArray;
    
        [COLOR="Red"]new-instance [COLOR="Blue"]v3[/COLOR], Landroid/os/Handler;
    
        invoke-direct {[COLOR="Blue"]v3[/COLOR]}, Landroid/os/Handler;-><init>()V
    
        iput-object [COLOR="Blue"]v3[/COLOR], p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mHandler:Landroid/os/Handler;[/COLOR]
    
        new-instance [COLOR="Blue"]v3[/COLOR], Landroid/util/SparseIntArray;
    
        invoke-direct {[COLOR="Blue"]v3[/COLOR]}, Landroid/util/SparseIntArray;-><init>()V
    
        iput-object [COLOR="Blue"]v3[/COLOR], p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mStateContentDescription:Landroid/util/SparseIntArray;
    
        new-instance v2, Landroid/widget/FrameLayout$LayoutParams;
    
        invoke-direct {v2, v6, v6}, Landroid/widget/FrameLayout$LayoutParams;-><init>(II)V
    
        .local v2, "params":Landroid/widget/FrameLayout$LayoutParams;
        invoke-static {p1}, Landroid/view/LayoutInflater;->from(Landroid/content/Context;)Landroid/view/LayoutInflater;
    
        move-result-object v1
    
        .local v1, "inflater":Landroid/view/LayoutInflater;
        const [COLOR="Blue"]v3[/COLOR], 0x7f04001d
    
        invoke-virtual {v1, [COLOR="Blue"]v3[/COLOR], v5}, Landroid/view/LayoutInflater;->inflate(ILandroid/view/ViewGroup;)Landroid/view/View;
    
        move-result-object [COLOR="Blue"]v3[/COLOR]
    
        check-cast [COLOR="Blue"]v3[/COLOR], Landroid/widget/LinearLayout;
    
        iput-object [COLOR="Blue"]v3[/COLOR], p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mVerticalLayout:Landroid/widget/LinearLayout;
    
        [COLOR="Red"]iget-object [COLOR="Blue"]v3[/COLOR], p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mVerticalLayout:Landroid/widget/LinearLayout;
    
        invoke-virtual {[COLOR="Blue"]v3[/COLOR], p0}, Landroid/widget/LinearLayout;->setOnClickListener(Landroid/view/View$OnClickListener;)V
    
        iget-object [COLOR="Blue"]v3[/COLOR], p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mVerticalLayout:Landroid/widget/LinearLayout;
    
        invoke-virtual {[COLOR="Blue"]v3[/COLOR], p0}, Landroid/widget/LinearLayout;->setOnLongClickListener(Landroid/view/View$OnLongClickListener;)V
    [/COLOR]

    Next
    add the red mehod
    Code:
    .method private enableButton(Z)V
        .locals 1
        .param p1, "enable"    # Z
    
        .prologue
        if-eqz p1, :cond_0
    
        move-object v0, p0
    
        .local v0, "enableButton":Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;
        :goto_0
        invoke-virtual {p0, v0}, Landroid/view/View;->setOnClickListener(Landroid/view/View$OnClickListener;)V
    
        invoke-virtual {p0, v0}, Landroid/view/View;->setOnLongClickListener(Landroid/view/View$OnLongClickListener;)V
    
        invoke-virtual {p0, v0}, Landroid/view/View;->setOnTouchListener(Landroid/view/View$OnTouchListener;)V
    
        return-void
    
        .end local v0    # "enableButton":Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;
        :cond_0
        const/4 v0, 0x0
    
        goto :goto_0
    .end method
    
    [COLOR="Red"].method private mOnLongClickVerticalLayout()V
        .locals 6
    
        .prologue
        iget-object v0, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mVerticalLayout:Landroid/widget/LinearLayout;
    
        return-void
    .end method[/COLOR]
    
    .method private setImageBitmap(Landroid/widget/ImageView;Landroid/graphics/Bitmap;Z)V
        .locals 2
        .param p1, "imageView"    # Landroid/widget/ImageView;
        .param p2, "bitmap"    # Landroid/graphics/Bitmap;
        .param p3, "colorize"    # Z
    
        .prologue
    
        invoke-virtual {p1, p2}, Landroid/widget/ImageView;->setImageBitmap(Landroid/graphics/Bitmap;)V
    
        const v0, -0x55555556
    
        invoke-static {p3}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
    
        move-result-object v1
    
        invoke-virtual {p1, v0, v1}, Landroid/view/View;->setTag(ILjava/lang/Object;)V

    Next find this line
    Code:
    # virtual methods
    and add all red method
    Code:
    # virtual methods
    [COLOR="Red"].method public flip()V
        .locals 2
    
        .prologue
        const/4 v0, 0x0
    
        invoke-virtual {p0, v0}, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->flipTile(I)V
    
        return-void
    .end method
    
    .method public flipTile(I)V
        .locals 1
        .param p1, "delay"    # I
    
        .prologue
        .line 159
        const/4 v0, 0x1
    
        invoke-virtual {p0, p1, v0}, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->flipTile(IZ)V
    
        .line 160
        return-void
    .end method
    
    .method public flipTile(IZ)V
        .locals 5
        .param p1, "delay"    # I
        .param p2, "flipRight"    # Z
    
        .prologue
        .line 163
        invoke-virtual {p0}, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->isFlipTilesEnabled()Z
    
        move-result v2
    
        if-nez v2, :cond_0
    
        .line 190
        :goto_0
        return-void
    
        .line 164
        :cond_0
        iget-object v3, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mContext:Landroid/content/Context;
    
        if-eqz p2, :cond_1
    
        const v2, 0x7f05001c
    
        :goto_1
        invoke-static {v3, v2}, Landroid/animation/AnimatorInflater;->loadAnimator(Landroid/content/Context;I)Landroid/animation/Animator;
    
        move-result-object v0
    
        check-cast v0, Landroid/animation/AnimatorSet;
    
        .line 167
        .local v0, "anim":Landroid/animation/AnimatorSet;
        iget-object v2, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mVerticalLayout:Landroid/widget/LinearLayout;
    
        invoke-virtual {v0, v2}, Landroid/animation/AnimatorSet;->setTarget(Ljava/lang/Object;)V
    
        .line 168
        const-wide/16 v2, 0xc8
    
        invoke-virtual {v0, v2, v3}, Landroid/animation/AnimatorSet;->setDuration(J)Landroid/animation/AnimatorSet;
    
        .line 169
        new-instance v2, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton$31;
    
        invoke-direct {v2, p0}, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton$31;-><init>(Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;)V
    
        invoke-virtual {v0, v2}, Landroid/animation/AnimatorSet;->addListener(Landroid/animation/Animator$AnimatorListener;)V
    
        .line 182
        new-instance v1, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton$32;
    
        invoke-direct {v1, p0, v0}, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton$32;-><init>(Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;Landroid/animation/AnimatorSet;)V
    
        .line 189
        .local v1, "doAnimation":Ljava/lang/Runnable;
        iget-object v2, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mHandler:Landroid/os/Handler;
    
        int-to-long v3, p1
    
        invoke-virtual {v2, v1, v3, v4}, Landroid/os/Handler;->postDelayed(Ljava/lang/Runnable;J)Z
    
        goto :goto_0
    
        .line 164
        .end local v0    # "anim":Landroid/animation/AnimatorSet;
        .end local v1    # "doAnimation":Ljava/lang/Runnable;
        :cond_1
        const v2, 0x7f05001b
    
        goto :goto_1
    .end method
    
    .method public isFlipTilesEnabled()Z
        .locals 3
    
        .prologue
        const/4 v0, 0x1
    
        .line 154
        iget-object v1, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mContext:Landroid/content/Context;
    
        invoke-virtual {v1}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
    
        move-result-object v1
    
        const-string v2, "quick_settings_tiles_flip"
    
        invoke-static {v1, v2, v0}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
    
        move-result v1
    
        if-ne v1, v0, :cond_0
    
        :goto_0
        return v0
    
        :cond_0
        const/4 v0, 0x0
    
        goto :goto_0
    .end method[/COLOR]
    
    .method protected varargs addState(ILjava/lang/Integer;Lcom/sonymobile/systemui/statusbar/tools/ToolsButton$ToolsIcon;[Lcom/sonymobile/systemui/statusbar/tools/ToolsButton$ToolsIcon;)V
        .locals 2
        .param p1, "stateId"    # I
        .param p2, "stringId"    # Ljava/lang/Integer;
        .param p3, "stateIcon"    # Lcom/sonymobile/systemui/statusbar/tools/ToolsButton$ToolsIcon;
        .param p4, "animationIcons"    # [Lcom/sonymobile/systemui/statusbar/tools/ToolsButton$ToolsIcon;
    
        .prologue
    
        iget-object v0, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mStateIcons:Landroid/util/SparseArray;
    
        invoke-virtual {v0, p1, p3}, Landroid/util/SparseArray;->put(ILjava/lang/Object;)V
    
        iget-object v0, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mStateContentDescription:Landroid/util/SparseIntArray;
    
        invoke-virtual {p2}, Ljava/lang/Integer;->intValue()I

    next search this method and add the red line
    Code:
    .method public onClick(Landroid/view/View;)V
        .locals 2
        .param p1, "view"    # Landroid/view/View;
    
        .prologue
        iget-object v0, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mAnimationView:Landroid/widget/ImageView;
    
        invoke-virtual {v0}, Landroid/view/View;->getVisibility()I
    
        move-result v0
    
        if-nez v0, :cond_0
    
        iget v0, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mButtonType:I
    
        const/4 v1, 0x2
    
        if-ne v0, v1, :cond_1
    
        :cond_0
        invoke-virtual {p0}, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->onAction()V
    
        [COLOR="Red"]invoke-virtual {p0}, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->flip()V[/COLOR]
    
        const/4 v0, 0x1
    
        iput-boolean v0, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mButtonClicked:Z
    	
        :cond_1
        return-void
    .end method
    
    .method public onLongClick(Landroid/view/View;)Z
        .locals 2
        .param p1, "view"    # Landroid/view/View;
    
        .prologue
        const/4 v0, 0x0
    
        .local v0, "clickHandled":Z
        iget-object v1, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mAnimationView:Landroid/widget/ImageView;
    
        invoke-virtual {v1}, Landroid/view/View;->getVisibility()I
    
        move-result v1
    
        if-eqz v1, :cond_0
    
        invoke-virtual {p0}, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->onLongClickPopup()Z
    
        move-result v1
    
        if-eqz v1, :cond_1
    
        const/4 v0, 0x1
    
        :cond_0
        :goto_0
        [COLOR="Red"]invoke-direct {p0}, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mOnLongClickVerticalLayout()V[/COLOR]
    
        return v0
    
        :cond_1
        const/4 v0, 0x0
    
        goto :goto_0
    .end method

    Compile your systemUI
    STEP-3
    Decompile the newly recompiled again
    next go to systemui/res/values/public.xml

    Code:
    <public type="anim" name="wallpaper_recents_launch_from_launcher_exit" id="0x7f05001a" />
        [COLOR="Blue"]<public type="anim" name="flip_left" id="[COLOR="Red"]0x7f??????[/COLOR]" />[/COLOR]
        [COLOR="Blue"]<public type="anim" name="flip_right" id="[COLOR="Red"]0x7f??????[/COLOR]" />[/COLOR]
        <public type="xml" name="somc_skin_permissions" id="0x7f060000" />
    next go to
    com/sonymobile/systemui/statusbar/tools/ToolsButton.smali
    serach this method
    Code:
    .method public flipTile(IZ)V
        .locals 5
        .param p1, "delay"    # I
        .param p2, "flipRight"    # Z
    
        .prologue
        .line 163
        invoke-virtual {p0}, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->isFlipTilesEnabled()Z
    
        move-result v2
    
        if-nez v2, :cond_0
    
        .line 190
        :goto_0
        return-void
    
        .line 164
        :cond_0
        iget-object v3, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mContext:Landroid/content/Context;
    
        if-eqz p2, :cond_1
    
        const v2, [COLOR="Red"]0x7f05001c[/COLOR]
    
        :goto_1
        invoke-static {v3, v2}, Landroid/animation/AnimatorInflater;->loadAnimator(Landroid/content/Context;I)Landroid/animation/Animator;
    
        move-result-object v0
    
        check-cast v0, Landroid/animation/AnimatorSet;
    
        .line 167
        .local v0, "anim":Landroid/animation/AnimatorSet;
        iget-object v2, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mVerticalLayout:Landroid/widget/LinearLayout;
    
        invoke-virtual {v0, v2}, Landroid/animation/AnimatorSet;->setTarget(Ljava/lang/Object;)V
    
        .line 168
        const-wide/16 v2, 0xc8
    
        invoke-virtual {v0, v2, v3}, Landroid/animation/AnimatorSet;->setDuration(J)Landroid/animation/AnimatorSet;
    
        .line 169
        new-instance v2, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton$31;
    
        invoke-direct {v2, p0}, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton$31;-><init>(Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;)V
    
        invoke-virtual {v0, v2}, Landroid/animation/AnimatorSet;->addListener(Landroid/animation/Animator$AnimatorListener;)V
    
        .line 182
        new-instance v1, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton$32;
    
        invoke-direct {v1, p0, v0}, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton$32;-><init>(Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;Landroid/animation/AnimatorSet;)V
    
        .line 189
        .local v1, "doAnimation":Ljava/lang/Runnable;
        iget-object v2, p0, Lcom/sonymobile/systemui/statusbar/tools/ToolsButton;->mHandler:Landroid/os/Handler;
    
        int-to-long v3, p1
    
        invoke-virtual {v2, v1, v3, v4}, Landroid/os/Handler;->postDelayed(Ljava/lang/Runnable;J)Z
    
        goto :goto_0
    
        .line 164
        .end local v0    # "anim":Landroid/animation/AnimatorSet;
        .end local v1    # "doAnimation":Ljava/lang/Runnable;
        :cond_1
        const v2, [COLOR="Red"]0x7f05001b[/COLOR]
    
        goto :goto_1
    .end method
    change the red value in the smali
    according to the value you got in your own public.xml

    const v2, 0x7f05001c
    with
    Code:
    [COLOR="Blue"]<public type="anim" name="flip_right" id="[COLOR="Red"]0x7f??????[/COLOR]" />[/COLOR]

    and
    const v2, 0x7f05001b
    with
    Code:
    [COLOR="Blue"]<public type="anim" name="flip_left" id="[COLOR="Red"]0x7f??????[/COLOR]" />[/COLOR]

    Done and compile your systemUI

    Credits :
    - Sony
    - Darck CM
    - CyanogenMod
    2
    Hey bro I already this tutorial but get smali error and I don't know about smali code ....
    If you don't mind could you make this in my systemUI.apk


    Sent from my D2105 using XDA Free mobile app

    Sure, upload your SystemUI.apk via XDA attachment

    Sent from my GT-I8150 using XDA Free mobile app
    1
    Thanks bro .....and sorry I can't upload via attachment
    https://www.dropbox.com/s/9mq94kjvk3iiwx9/SystemUI.apk?dl=0

    Send From Xperia E1 Dual

    Here try it https://db.tt/bw8o3NCN

    Sent from my GT-I8150 using XDA Free mobile app