[MOD][v2.0] Sense 4.0 style Multitasking (IMM76D / AOKP M5 / CM9 20120521)

Search This thread

Top Liked Posts

  • There are no posts matching your filters.
  • 39
    *Updated to v2.0 :)

    Preview :

    AfkNN.png


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

    Download v2.0 :

    * for GSM Nexus S

    - Stock Deodexed IMM76D : http://www.mediafire.com/?6rhhktkubdiy482
    - AOKP Milestone 5 : http://www.mediafire.com/?k35yv1s9ib6pyln
    - CM9 nightly 20120521 : http://www.mediafire.com/?qnuu9bm7yy8jer3

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

    Guide (source diff) v2.0 :

    [GUIDE] Sense 4.0 style Multitasking on Stock ICS

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

    Changelog :

    Code:
    [B]v2.0[/B]
    - Added thumbnail reflection thanks to [B][COLOR="Blue"]D4rKn3sSyS[/COLOR][/B] and [B][COLOR="blue"]Neil Davies[/COLOR][/B]
    
    [B]v1.1[/B]
    - Minor layout fixes.
    - Added landscape layout.

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

    Thanks to brucekey in rootzwiki
    (this mod is based on his WEBAOKP mod.)

    -----------------------------------------------------------------------------
    5
    update

    AOKP build 31 version is added.. :)
    3
    smali edit for reflection (add on for this mod)

    open this smali:
    systemui\smali\com\android\systemui\recent\Recents PanelView.smali

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

    locate the end of the .methode a few lines after:
    .end method

    replace the selection under ".method private xxxxxxxxxxxxxx" and ".end method" Replace the entire code selected with this one!

    Code:
    .method private updateThumbnail(Lcom/android/systemui/recent/RecentsPanelView$ViewHolder;Landroid/graphics/Bitmap;ZZ)V
        .locals 30
        .parameter "h"
        .parameter "thumbnail"
        .parameter "show"
        .parameter "anim"
    
        .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, 0x3f80
    
        const/high16 v4, -0x4080
    
        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, 0x41c8
    
        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

    recompil and voila ;)
    2
    updated to v1.1

    This version include some minor layout fixes and proper landscape layout. :)
    (More details and patch download is here : http://xdaforums.com/showpost.php?p=25507518&postcount=71)

    i9HL9.png


    And AOKP and CM9 version is updated too..
    (Milestone 5 and nightly 20120429)
    2
    Something you might want to add: Kill-All-Button.
    Not sure if this takes you too far off "stock" sense but just wanted to mention it. It maybe needs some nicer design though :)
    https://github.com/IceColdSandwich/...mmit/cfba7e4e20fa29abfded7ae1ee754917820bda82
    https://github.com/IceColdSandwich/...mmit/4ffddf7b1b8e8513ff43e32ea808a480ba20c49a