[Android General] Md.Shafikul.islam:
------------------------------

------------------------------

[COLOR="#Blue"]Hi Sir's...

Its MD here..

Today i will share how to add Recent sense in JB4.2.2 devices with mobile apktools 2.0 beta 7 version...Easy and 100% working way... :D

Though there a lot of guide in xda and i tried them all...But unfortunately none of them working with my mtk6572 jb4.2.2 device...So i found this way and now going to share it... :D

One request...Don't copy my guide please...[/COLOR]

------------------------------

First nessesary tools :

1.Apktools...

2.Notepad++...

3.Knowledge in Decompiling and recompileing...

4.Your Framework and Your SystemUI...

5.and a cool brain... ;)

------------------------------

[COLOR="#Black"]Warnings!:

1.First do everythings at your own risk...

2.Don't try with odexed Roms...

3.Take on NanAndroid backup...

4.Any kind of damaged MD will not Responsiable...

5.This works good with JB4.2.2 devices...and it should work in jb 4.1.2 too...maybe also work in ics device...But don't try in KK and GB devices and in any Samsung devices...

[/COLOR]

------------------------------

At first decompile your Framework-res and your SystemUI in a new folder...

------------------------------

------------

Step -1...:

------------

First go to new folder (where you decompiled you framework and SystemUI)...Then go to framework-res_src folder/res/values/dimens.xml and open it with Notepad++...

Then search these codes:

<dimen name="thumbnail_height">***.0dip</dimen>

<dimen name="thumbnail_width">***.0dip</dimen>

After searching change the dpi code of your xml like mine...

<dimen name="thumbnail_height">240.0dip</dimen>

<dimen name="thumbnail_width">151.0dip</dimen>

Done!Now save it and recompile and sign your framework...

------------------------------

------------

Step -2...:

------------

Now go to your decompiled SystemUI_src/res/values/bools.xml and search this line :

name="config_recents_thumbnail_image_fits_to_xy">false</bool>

Now change false to true...

it should like this :

name="config_recents_thumbnail_image_fits_to_xy">true</bool>

Done!Now save it and open ids.xml and search these codes first...If don't found them then add these codes in ids.xml before resource...

<item type="id" name="recents_transition_background">false</item>

<item type="id" name="recents_transition_placeholder_icon">false</item>

<item type="id" name="recents_clear">false</item>

It should look like this :

<item type="id" name="recents_transition_background">false</item>

<item type="id" name="recents_transition_placeholder_icon">false</item>

<item type="id" name="recents_clear">false</item>

</resources>

Done!Save it and open strings.xml and search this code...if you don't find it then add this line before resource...

<string name="recent_apps_title">Recent Apps</string>

It should look like this :

<string name="recent_apps_title">Recent Apps</string>

</resources>

Done!Now save it...

------------------------------

------------

Step -3...:

------------

Now go to SystemUI_src/smali/com/android/sustemui/recent/Recentpanelview.smali and search this code :

.method private updateThumbnail(Lcom/android/systemui/recent/RecentsPanelView$ViewHolder;Landroid/graphics/Bitmap;ZZ)V

-

-

-bla___bla...

-bla___bla...

-

-

goto :goto_0

.end method

After finding this code select all line and replaced them with these lines:

.method private updateThumbnail(Lcom/android/systemui/recent/RecentsPanelView$ViewHolder;Landroid/graphics/Bitmap;ZZ)V
.locals 30
.param p1, "h" # Lcom/android/systemui/recent/RecentsPanelView$ViewHolder;
.param p2, "thumbnail" # Landroid/graphics/Bitmap;
.param p3, "show" # Z
.param p4, "anim" # Z

.prologue
.line 409
if-eqz p2, :cond_4

.line 413
const/16 v26, 0x4

.line 414
.local v26, "reflectionGap":I
invoke-virtual/range {p2 .. p2}, Landroid/graphics/Bitmap;->getWidth()I

move-result v6

.line 415
.local v6, "width":I
invoke-virtual/range {p2 .. p2}, Landroid/graphics/Bitmap;->getHeight()I

move-result v24

.line 417
.local v24, "height":I
new-instance v8, Landroid/graphics/Matrix;

invoke-direct {v8}, Landroid/graphics/Matrix;-><init>()V

.line 418
.local v8, "matrix":Landroid/graphics/Matrix;
const/high16 v3, 0x3f800000

const/high16 v4, -0x40800000

invoke-virtual {v8, v3, v4}, Landroid/graphics/Matrix;->preScale(FF)Z

.line 420
const/4 v4, 0x0

mul-int/lit8 v3, v24, 0x2

div-int/lit8 v5, v3, 0x3

div-int/lit8 v7, v24, 0x3

const/4 v9, 0x0

move-object/from16 v3, p2

invoke-static/range {v3 .. v9}, Landroid/graphics/Bitmap;->createBitmap(Landroid/graphics/Bitmap;IIIILandroid/graphics/Matrix;Z)Landroid/graphics/Bitmap;

move-result-object v27

.line 421
.local v27, "reflectionImage":Landroid/graphics/Bitmap;
div-int/lit8 v3, v24, 0x3

add-int v3, v3, v24

sget-object v4, Landroid/graphics/Bitmap$Config;->ARGB_8888:Landroid/graphics/Bitmap$Config;

invoke-static {v6, v3, v4}, Landroid/graphics/Bitmap;->createBitmap(IILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap;

move-result-object v23

.line 423
.local v23, "bitmapWithReflection":Landroid/graphics/Bitmap;
new-instance v9, Landroid/graphics/Canvas;

move-object/from16 v0, v23

invoke-direct {v9, v0}, Landroid/graphics/Canvas;-><init>(Landroid/graphics/Bitmap;)V

.line 424
.local v9, "canvas":Landroid/graphics/Canvas;
const/4 v3, 0x0

const/4 v4, 0x0

const/4 v5, 0x0

move-object/from16 v0, p2

invoke-virtual {v9, v0, v3, v4, v5}, Landroid/graphics/Canvas;->drawBitmap(Landroid/graphics/Bitmap;FFLandroid/graphics/Paint;)V

.line 425
new-instance v14, Landroid/graphics/Paint;

invoke-direct {v14}, Landroid/graphics/Paint;-><init>()V

.line 426
.local v14, "defaultPaint":Landroid/graphics/Paint;
const/4 v10, 0x0

move/from16 v0, v24

int-to-float v11, v0

int-to-float v12, v6

add-int/lit8 v3, v24, 0x4

int-to-float v13, v3

invoke-virtual/range {v9 .. v14}, Landroid/graphics/Canvas;->drawRect(FFFFLandroid/graphics/Paint;)V

.line 427
const/4 v3, 0x0

add-int/lit8 v4, v24, 0x4

int-to-float v4, v4

const/4 v5, 0x0

move-object/from16 v0, v27

invoke-virtual {v9, v0, v3, v4, v5}, Landroid/graphics/Canvas;->drawBitmap(Landroid/graphics/Bitmap;FFLandroid/graphics/Paint;)V

.line 429
new-instance v25, Landroid/graphics/Paint;

invoke-direct/range {v25 .. v25}, Landroid/graphics/Paint;-><init>()V

.line 430
.local v25, "paint":Landroid/graphics/Paint;
new-instance v15, Landroid/graphics/LinearGradient;

const/16 v16, 0x0

invoke-virtual/range {p2 .. p2}, Landroid/graphics/Bitmap;->getHeight()I

move-result v3

int-to-float v0, v3

move/from16 v17, v0

const/16 v18, 0x0

invoke-virtual/range {v23 .. v23}, Landroid/graphics/Bitmap;->getHeight()I

move-result v3

add-int/lit8 v3, v3, 0x4

int-to-float v0, v3

move/from16 v19, v0

const v20, 0x70ffffff

const v21, 0xffffff

sget-object v22, Landroid/graphics/Shader$TileMode;->CLAMP:Landroid/graphics/Shader$TileMode;

invoke-direct/range {v15 .. v22}, Landroid/graphics/LinearGradient;-><init>(FFFFIILandroid/graphics/Shader$TileMode;)V

.line 433
.local v15, "shader":Landroid/graphics/LinearGradient;
move-object/from16 v0, v25

invoke-virtual {v0, v15}, Landroid/graphics/Paint;->setShader(Landroid/graphics/Shader;)Landroid/graphics/Shader;

.line 434
new-instance v3, Landroid/graphics/PorterDuffXfermode;

sget-object v4, Landroid/graphics/PorterDuff$Mode;->DST_IN:Landroid/graphics/PorterDuff$Mode;

invoke-direct {v3, v4}, Landroid/graphics/PorterDuffXfermode;-><init>(Landroid/graphics/PorterDuff$Mode;)V

move-object/from16 v0, v25

invoke-virtual {v0, v3}, Landroid/graphics/Paint;->setXfermode(Landroid/graphics/Xfermode;)Landroid/graphics/Xfermode;

.line 435
const/16 v17, 0x0

move/from16 v0, v24

int-to-float v0, v0

move/from16 v18, v0

int-to-float v0, v6

move/from16 v19, v0

invoke-virtual/range {v23 .. v23}, Landroid/graphics/Bitmap;->getHeight()I

move-result v3

add-int/lit8 v3, v3, 0x4

int-to-float v0, v3

move/from16 v20, v0

move-object/from16 v16, v9

move-object/from16 v21, v25

invoke-virtual/range {v16 .. v21}, Landroid/graphics/Canvas;->drawRect(FFFFLandroid/graphics/Paint;)V

.line 438
move-object/from16 v0, p1

iget-object v3, v0, Lcom/android/systemui/recent/RecentsPanelView$ViewHolder;->thumbnailViewImage:Landroid/widget/ImageView;

move-object/from16 v0, v23

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

.line 442
move-object/from16 v0, p1

iget-object v3, v0, Lcom/android/systemui/recent/RecentsPanelView$ViewHolder;->thumbnailViewImageBitmap:Landroid/graphics/Bitmap;

if-eqz v3, :cond_0

move-object/from16 v0, p1

iget-object v3, v0, Lcom/android/systemui/recent/RecentsPanelView$ViewHolder;->thumbnailViewImageBitmap:Landroid/graphics/Bitmap;

invoke-virtual {v3}, Landroid/graphics/Bitmap;->getWidth()I

move-result v3

invoke-virtual/range {p2 .. p2}, Landroid/graphics/Bitmap;->getWidth()I

move-result v4

if-ne v3, v4, :cond_0

move-object/from16 v0, p1

iget-object v3, v0, Lcom/android/systemui/recent/RecentsPanelView$ViewHolder;->thumbnailViewImageBitmap:Landroid/graphics/Bitmap;

invoke-virtual {v3}, Landroid/graphics/Bitmap;->getHeight()I

move-result v3

invoke-virtual/range {p2 .. p2}, Landroid/graphics/Bitmap;->getHeight()I

move-result v4

if-eq v3, v4, :cond_1

.line 445
:cond_0
move-object/from16 v0, p0

iget-boolean v3, v0, Lcom/android/systemui/recent/RecentsPanelView;->mFitThumbnailToXY:Z

if-eqz v3, :cond_5

.line 446
move-object/from16 v0, p1

iget-object v3, v0, Lcom/android/systemui/recent/RecentsPanelView$ViewHolder;->thumbnailViewImage:Landroid/widget/ImageView;

const/high16 v4, 0x41c80000

invoke-virtual {v3, v4}, Landroid/widget/ImageView;->setRotationY(F)V

.line 455
:cond_1
:goto_0
if-eqz p3, :cond_3

move-object/from16 v0, p1

iget-object v3, v0, Lcom/android/systemui/recent/RecentsPanelView$ViewHolder;->thumbnailView:Landroid/view/View;

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

move-result v3

if-eqz v3, :cond_3

.line 456
if-eqz p4, :cond_2

.line 457
move-object/from16 v0, p1

iget-object v3, v0, Lcom/android/systemui/recent/RecentsPanelView$ViewHolder;->thumbnailView:Landroid/view/View;

move-object/from16 v0, p0

iget-object v4, v0, Lcom/android/systemui/recent/RecentsPanelView;->mContext:Landroid/content/Context;

const v5, 0x7f04000f

invoke-static {v4, v5}, Landroid/view/animation/AnimationUtils;->loadAnimation(Landroid/content/Context;I)Landroid/view/animation/Animation;

move-result-object v4

invoke-virtual {v3, v4}, Landroid/view/View;->setAnimation(Landroid/view/animation/Animation;)V

.line 460
:cond_2
move-object/from16 v0, p1

iget-object v3, v0, Lcom/android/systemui/recent/RecentsPanelView$ViewHolder;->thumbnailView:Landroid/view/View;

const/4 v4, 0x0

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

.line 462
:cond_3
move-object/from16 v0, p2

move-object/from16 v1, p1

iput-object v0, v1, Lcom/android/systemui/recent/RecentsPanelView$ViewHolder;->thumbnailViewImageBitmap:Landroid/graphics/Bitmap;

.line 464
.end local v6 # "width":I
.end local v8 # "matrix":Landroid/graphics/Matrix;
.end local v9 # "canvas":Landroid/graphics/Canvas;
.end local v14 # "defaultPaint":Landroid/graphics/Paint;
.end local v15 # "shader":Landroid/graphics/LinearGradient;
.end local v23 # "bitmapWithReflection":Landroid/graphics/Bitmap;
.end local v24 # "height":I
.end local v25 # "paint":Landroid/graphics/Paint;
.end local v26 # "reflectionGap":I
.end local v27 # "reflectionImage":Landroid/graphics/Bitmap;
:cond_4
return-void

.line 448
.restart local v6 # "width":I
.restart local v8 # "matrix":Landroid/graphics/Matrix;
.restart local v9 # "canvas":Landroid/graphics/Canvas;
.restart local v14 # "defaultPaint":Landroid/graphics/Paint;
.restart local v15 # "shader":Landroid/graphics/LinearGradient;
.restart local v23 # "bitmapWithReflection":Landroid/graphics/Bitmap;
.restart local v24 # "height":I
.restart local v25 # "paint":Landroid/graphics/Paint;
.restart local v26 # "reflectionGap":I
.restart local v27 # "reflectionImage":Landroid/graphics/Bitmap;
:cond_5
new-instance v29, Landroid/graphics/Matrix;

invoke-direct/range {v29 .. v29}, Landroid/graphics/Matrix;-><init>()V

.line 449
.local v29, "scaleMatrix":Landroid/graphics/Matrix;
move-object/from16 v0, p0

iget v3, v0, Lcom/android/systemui/recent/RecentsPanelView;->mThumbnailWidth:I

int-to-float v3, v3

invoke-virtual/range {p2 .. p2}, Landroid/graphics/Bitmap;->getWidth()I

move-result v4

int-to-float v4, v4

div-float v28, v3, v4

.line 450
.local v28, "scale":F
move-object/from16 v0, v29

move/from16 v1, v28

move/from16 v2, v28

invoke-virtual {v0, v1, v2}, Landroid/graphics/Matrix;->setScale(FF)V

.line 451
move-object/from16 v0, p1

iget-object v3, v0, Lcom/android/systemui/recent/RecentsPanelView$ViewHolder;->thumbnailViewImage:Landroid/widget/ImageView;

sget-object v4, Landroid/widget/ImageView$ScaleType;->MATRIX:Landroid/widget/ImageView$ScaleType;

invoke-virtual {v3, v4}, Landroid/widget/ImageView;->setScaleType(Landroid/widget/ImageView$ScaleType;)V

.line 452
move-object/from16 v0, p1

iget-object v3, v0, Lcom/android/systemui/recent/RecentsPanelView$ViewHolder;->thumbnailViewImage:Landroid/widget/ImageView;

move-object/from16 v0, v29

invoke-virtual {v3, v0}, Landroid/widget/ImageView;->setImageMatrix(Landroid/graphics/Matrix;)V

goto :goto_0
.end method

Done!Now save it...

[COLOR="#Blue"]

N.B.->Be carefull with these codes...Don't make any mistake there...I hope you understand that what i want to say ;)...If you not understanding that what i say download the mdsamli.zip from attechment extract it and open Recentpanelview.smali...And search these codes and try to understand... ;)

(see in my Recentpanelview.smali line 965-1362) [/COLOR]

------------------------------