Welcome to XDA

Search to go directly to your device's forum

Register an account

Unlock full posting privileges

Ask a question

No registration required
Post Reply

[MOD][GUIDE][v2.0] Sense 4.0 style Multitasking on Stock ICS [Added Reflection]

OP evilisto

9th April 2012, 10:30 AM   |  #1  
evilisto's Avatar
OP Senior Member
Thanks Meter: 2,349
 
486 posts
Join Date:Joined: Nov 2010
-----------------------------------------------------------------------------
v1.1 to v2.0
- added thumbnail reflection thanks to D4rKn3sSyS and Neil Davies
-----------------------------------------------------------------------------

-----------------------------------------------------------------------------
v1.0 to v1.1
- removed all resources (png files) : for other screen size devices..
- minor layout fixes.
- added landscape layout.
-----------------------------------------------------------------------------

This mod is originally posted on Nexus S theme forum :

[MOD] Sense 4.0 style Multitasking on Stock ICS

Preview :




This mod is related to SystemUI.apk and framework-res.apk, so making universal version for all devices and all roms is impossible. So here I post my source code for other users..

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

* Caution : All values are (basically) for HDPI=WVGA devices *


How to :
1) Apply patch(diff).
2) Compile.
3) Done


* diff v2.0 : Download

Code:
diff -rupN ./a/core/res/res/values/dimens.xml ./b/core/res/res/values/dimens.xml
--- ./a/core/res/res/values/dimens.xml	2012-04-25 11:31:16.000000000 +0900
+++ ./b/core/res/res/values/dimens.xml	2012-04-27 00:22:57.951903000 +0900
@@ -19,9 +19,9 @@
 -->
 <resources>
     <!-- The width that is used when creating thumbnails of applications. -->
-    <dimen name="thumbnail_width">120dp</dimen>
+    <dimen name="thumbnail_width">168dp</dimen>
     <!-- The height that is used when creating thumbnails of applications. -->
-    <dimen name="thumbnail_height">120dp</dimen>
+    <dimen name="thumbnail_height">267dp</dimen>
     <!-- The standard size (both width and height) of an application icon that
          will be displayed in the app launcher and elsewhere. -->
     <dimen name="app_icon_size">48dip</dimen>
diff -rupN ./a/packages/SystemUI/res/drawable/status_bar_recents_background.xml ./b/packages/SystemUI/res/drawable/status_bar_recents_background.xml
--- ./a/packages/SystemUI/res/drawable/status_bar_recents_background.xml	2012-04-25 11:31:16.000000000 +0900
+++ ./b/packages/SystemUI/res/drawable/status_bar_recents_background.xml	2012-04-26 19:18:32.766622000 +0900
@@ -16,10 +16,11 @@
  * limitations under the License.
  */
 -->
-<shape xmlns:android="http://schemas.android.com/apk/res/android">
+<shape android:shape="rectangle" xmlns:android="http://schemas.android.com/apk/res/android">
     <gradient name="status_bar_recents_background"
-        android:startColor="#e6000000"
-        android:endColor="#c0000000"
-        android:angle="@integer/status_bar_recents_bg_gradient_degrees"
+        android:type="radial"
+        android:startColor="#ff4a4a4a"
+        android:endColor="#ff080808"
+        android:gradientRadius="400"
         />
 </shape>
diff -rupN ./a/packages/SystemUI/res/layout/status_bar_no_recent_apps.xml ./b/packages/SystemUI/res/layout/status_bar_no_recent_apps.xml
--- ./a/packages/SystemUI/res/layout/status_bar_no_recent_apps.xml	2012-04-25 11:31:16.000000000 +0900
+++ ./b/packages/SystemUI/res/layout/status_bar_no_recent_apps.xml	2012-04-26 19:54:23.777459000 +0900
@@ -32,5 +32,6 @@
         android:text="@string/status_bar_no_recent_apps"
         android:gravity="center_horizontal"
         android:layout_gravity="center"
+        android:visibility="gone"
     />
 </FrameLayout>
diff -rupN ./a/packages/SystemUI/res/layout-land/status_bar_recent_item.xml ./b/packages/SystemUI/res/layout-land/status_bar_recent_item.xml
--- ./a/packages/SystemUI/res/layout-land/status_bar_recent_item.xml	2012-04-25 11:31:16.000000000 +0900
+++ ./b/packages/SystemUI/res/layout-land/status_bar_recent_item.xml	2012-05-07 04:53:08.705255000 +0900
@@ -22,55 +22,53 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_height="match_parent"
     android:layout_width="wrap_content"
-    android:paddingLeft="@dimen/status_bar_recents_item_padding"
-    android:paddingRight="@dimen/status_bar_recents_item_padding">
+    android:paddingRight="@dimen/status_bar_recents_item_padding"
+    android:paddingLeft="@dimen/status_bar_recents_item_padding">
 
     <RelativeLayout android:id="@+id/recent_item"
         android:layout_gravity="center_vertical"
         android:layout_height="wrap_content"
         android:layout_width="wrap_content"
-        android:paddingTop="@*android:dimen/status_bar_height">
+        android:paddingTop="@*android:dimen/status_bar_height"
+        android:layout_centerInParent="true">
 
         <FrameLayout android:id="@+id/app_thumbnail"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_alignParentLeft="true"
-            android:layout_alignParentTop="true"
-            android:layout_marginTop="@dimen/status_bar_recents_thumbnail_top_margin"
-            android:layout_marginLeft="@dimen/status_bar_recents_thumbnail_left_margin"
-            android:background="@drawable/recents_thumbnail_bg"
-            android:foreground="@drawable/recents_thumbnail_fg"
+            android:layout_centerInParent="true"
+            android:background="#00000000"
+            android:foreground="#00000000"
             android:visibility="invisible">
             <ImageView android:id="@+id/app_thumbnail_image"
-                android:layout_width="@dimen/status_bar_recents_thumbnail_width"
-                android:layout_height="@dimen/status_bar_recents_thumbnail_height"
+                android:layout_width="120.0dip"
+                android:layout_height="320.0dip"
+                android:scaleType="centerInside"
             />
         </FrameLayout>
 
         <ImageView android:id="@+id/app_icon"
-            android:layout_width="wrap_content"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:layout_marginTop="@dimen/status_bar_recents_app_icon_top_margin"
-            android:layout_marginLeft="@dimen/status_bar_recents_app_icon_left_margin"
-            android:layout_alignParentLeft="true"
-            android:layout_alignParentTop="true"
-            android:maxWidth="@dimen/status_bar_recents_app_icon_max_width"
-            android:maxHeight="@dimen/status_bar_recents_app_icon_max_height"
+            android:gravity="center_horizontal"
+            android:layout_marginTop="232.0dip"
+            android:maxWidth="35dp"
+            android:maxHeight="35dp"
             android:scaleType="centerInside"
             android:adjustViewBounds="true"
         />
 
         <TextView android:id="@+id/app_label"
-            android:layout_width="@dimen/status_bar_recents_app_label_width"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:textSize="@dimen/status_bar_recents_app_label_text_size"
-            android:fadingEdge="horizontal"
-            android:fadingEdgeLength="@dimen/status_bar_recents_fading_edge_length"
+            android:gravity="center_horizontal"
+            android:textSize="12dip"
+            android:fadingEdge="none"
+            android:fadingEdgeLength="0.0dip"
             android:scrollHorizontally="true"
-            android:layout_alignLeft="@id/app_thumbnail"
-            android:layout_below="@id/app_thumbnail"
-            android:layout_marginTop="@dimen/status_bar_recents_text_description_padding"
-            android:layout_marginLeft="@dimen/status_bar_recents_app_label_left_margin"
+            android:layout_below="@id/app_icon"
+            android:layout_alignParentBottom="true"
+            android:paddingTop="0.0dip"
+            android:layout_marginTop="0.0dip"
             android:singleLine="true"
             android:ellipsize="marquee"
             android:textColor="@color/status_bar_recents_app_label_color"
@@ -80,12 +78,13 @@
             android:layout_width="@dimen/status_bar_recents_app_label_width"
             android:layout_height="wrap_content"
             android:textSize="@dimen/status_bar_recents_app_description_text_size"
-            android:fadingEdge="horizontal"
-            android:fadingEdgeLength="@dimen/status_bar_recents_fading_edge_length"
+            android:fadingEdge="none"
+            android:fadingEdgeLength="0dip"
             android:scrollHorizontally="true"
-            android:layout_alignLeft="@id/app_thumbnail"
+            android:layout_alignParentBottom="true"
+            android:layout_marginLeft="@dimen/status_bar_recents_app_label_left_margin"
             android:layout_below="@id/app_label"
-            android:layout_marginTop="@dimen/status_bar_recents_text_description_padding"
+            android:layout_marginTop="3.0dip"
             android:singleLine="true"
             android:ellipsize="marquee"
         />
diff -rupN ./a/packages/SystemUI/res/layout-land/status_bar_recent_panel.xml ./b/packages/SystemUI/res/layout-land/status_bar_recent_panel.xml
--- ./a/packages/SystemUI/res/layout-land/status_bar_recent_panel.xml	2012-04-25 11:31:16.000000000 +0900
+++ ./b/packages/SystemUI/res/layout-land/status_bar_recent_panel.xml	2012-04-27 14:05:59.391168000 +0900
@@ -29,27 +29,33 @@
         android:background="@drawable/status_bar_recents_background"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:layout_alignParentBottom="true"
-        android:clipToPadding="false"
-        android:clipChildren="false">
-
-        <com.android.systemui.recent.RecentsHorizontalScrollView android:id="@+id/recents_container"
-            android:layout_width="wrap_content"
-            android:layout_height="match_parent"
-            android:layout_marginRight="@dimen/status_bar_recents_right_glow_margin"
-            android:divider="@null"
-            android:stackFromBottom="true"
-            android:fadingEdge="horizontal"
-            android:scrollbars="none"
-            android:fadingEdgeLength="@dimen/status_bar_recents_fading_edge_length"
-            android:layout_gravity="bottom|left"
-            android:orientation="horizontal"
-            android:clipToPadding="false"
-            android:clipChildren="false">
+        android:layout_centerVertical="true">
+
+        <ImageView
+ 	    android:gravity="center"
+	    android:layout_width="match_parent"
+ 	    android:layout_height="match_parent"
+	    android:layout_marginTop="0.0dip"
+  	    android:src="@drawable/status_bar_recents_background"
+        />
+
+        <com.android.systemui.recent.RecentsHorizontalScrollView
+	    android:id="@+id/recents_container"
+	    android:layout_gravity="bottom|left|center"
+	    android:scrollbars="none"
+	    android:fadingEdge="none"
+	    android:fadingEdgeLength="0.0dip"
+	    android:clipChildren="false"
+	    android:clipToPadding="false"
+    	    android:layout_width="match_parent"
+	    android:layout_height="wrap_content"
+	    android:layout_marginRight="0.0dip"
+	    android:stackFromBottom="true"
+	    android:divider="@null">
 
             <LinearLayout android:id="@+id/recents_linear_layout"
-                android:layout_width="wrap_content"
-                android:layout_height="match_parent"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
                 android:orientation="horizontal"
                 android:clipToPadding="false"
                 android:clipChildren="false">
@@ -57,6 +63,16 @@
 
         </com.android.systemui.recent.RecentsHorizontalScrollView>
 
+	<TextView
+	    android:textSize="18.0dip"
+	    android:textColor="#ffe5e5e5"
+	    android:gravity="center_horizontal"
+	    android:layout_marginTop="10.0dip"
+	    android:layout_width="match_parent"
+	    android:layout_height="wrap_content"
+	    android:text="@string/recent_apps_title"
+	/>
+
     </FrameLayout>
 
     <include layout="@layout/status_bar_no_recent_apps"
diff -rupN ./a/packages/SystemUI/res/layout-port/status_bar_recent_item.xml ./b/packages/SystemUI/res/layout-port/status_bar_recent_item.xml
--- ./a/packages/SystemUI/res/layout-port/status_bar_recent_item.xml	2012-04-25 11:31:16.000000000 +0900
+++ ./b/packages/SystemUI/res/layout-port/status_bar_recent_item.xml	2012-05-07 04:31:12.435246000 +0900
@@ -20,69 +20,62 @@
 
 <FrameLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_height="wrap_content"
-    android:layout_width="match_parent"
-    android:paddingTop="@dimen/status_bar_recents_item_padding"
-    android:paddingBottom="@dimen/status_bar_recents_item_padding">
+    android:layout_height="match_parent"
+    android:layout_width="wrap_content"
+    android:paddingRight="@dimen/status_bar_recents_item_padding"
+    android:paddingLeft="@dimen/status_bar_recents_item_padding">
 
     <RelativeLayout android:id="@+id/recent_item"
-        android:layout_gravity="center_horizontal"
+        android:layout_gravity="center_vertical"
         android:layout_height="wrap_content"
-        android:layout_width="wrap_content">
+        android:layout_width="wrap_content"
+        android:paddingTop="@*android:dimen/status_bar_height"
+        android:layout_centerInParent="true">
 
-        <TextView android:id="@+id/app_label"
-            android:layout_width="@dimen/status_bar_recents_app_label_width"
-            android:layout_height="wrap_content"
-            android:textSize="@dimen/status_bar_recents_app_label_text_size"
-            android:fadingEdge="horizontal"
-            android:fadingEdgeLength="@dimen/status_bar_recents_fading_edge_length"
-            android:scrollHorizontally="true"
-            android:layout_alignParentLeft="true"
-            android:layout_alignTop="@id/app_icon"
-            android:paddingTop="2dp"
-            android:layout_marginLeft="@dimen/status_bar_recents_app_label_left_margin"
-            android:singleLine="true"
-            android:ellipsize="marquee"
-            android:textColor="@color/status_bar_recents_app_label_color"
-        />
         <FrameLayout android:id="@+id/app_thumbnail"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_alignParentTop="true"
-            android:layout_toRightOf="@id/app_label"
-            android:layout_marginLeft="@dimen/status_bar_recents_thumbnail_left_margin"
-            android:background="@drawable/recents_thumbnail_bg"
-            android:foreground="@drawable/recents_thumbnail_fg"
+            android:layout_centerInParent="true"
+            android:background="#00000000"
+            android:foreground="#00000000"
             android:visibility="invisible">
             <ImageView android:id="@+id/app_thumbnail_image"
-                android:layout_width="@dimen/status_bar_recents_thumbnail_width"
-                android:layout_height="@dimen/status_bar_recents_thumbnail_height"
+                android:paddingTop="60dip"
+                android:layout_marginTop="30.0dip"
+                android:layout_width="212.0dip"
+                android:layout_height="455.0dip"
+                android:scaleType="centerInside"
             />
         </FrameLayout>
-        <View android:id="@+id/recents_callout_line"
-            android:layout_width="@dimen/status_bar_recents_app_label_width"
-            android:layout_height="1dip"
-            android:layout_alignParentLeft="true"
-            android:layout_marginLeft="@dimen/status_bar_recents_app_label_left_margin"
-            android:layout_toLeftOf="@id/app_thumbnail"
-            android:layout_below="@id/app_label"
-            android:layout_marginRight="3dip"
-            android:layout_marginTop="3dip"
-            android:background="@drawable/recents_callout_line"
-        />
 
         <ImageView android:id="@+id/app_icon"
-            android:layout_width="wrap_content"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:layout_toRightOf="@id/app_label"
-            android:layout_marginLeft="@dimen/status_bar_recents_app_icon_left_margin"
-            android:layout_marginTop="@dimen/status_bar_recents_app_icon_top_margin"
+            android:gravity="center_horizontal"
+            android:layout_marginTop="405.0dip"
             android:maxWidth="@dimen/status_bar_recents_app_icon_max_width"
             android:maxHeight="@dimen/status_bar_recents_app_icon_max_height"
             android:scaleType="centerInside"
             android:adjustViewBounds="true"
         />
 
+        <TextView android:id="@+id/app_label"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="center_horizontal"
+            android:textSize="@dimen/status_bar_recents_app_label_text_size"
+            android:fadingEdge="none"
+            android:fadingEdgeLength="0.0dip"
+            android:scrollHorizontally="true"
+            android:layout_below="@id/app_icon"
+            android:layout_alignParentBottom="true"
+            android:paddingTop="0.0dip"
+            android:layout_marginTop="3.0dip"
+            android:singleLine="true"
+            android:ellipsize="marquee"
+            android:textColor="@color/status_bar_recents_app_label_color"
+        />
+
         <TextView android:id="@+id/app_description"
             android:layout_width="@dimen/status_bar_recents_app_label_width"
             android:layout_height="wrap_content"
@@ -90,10 +83,10 @@
             android:fadingEdge="horizontal"
             android:fadingEdgeLength="@dimen/status_bar_recents_fading_edge_length"
             android:scrollHorizontally="true"
-            android:layout_alignParentLeft="true"
+            android:layout_alignParentBottom="true"
             android:layout_marginLeft="@dimen/status_bar_recents_app_label_left_margin"
-            android:layout_below="@id/recents_callout_line"
-            android:layout_marginTop="3dip"
+            android:layout_below="@id/app_label"
+            android:layout_marginTop="40.0dip"
             android:singleLine="true"
             android:ellipsize="marquee"
         />
diff -rupN ./a/packages/SystemUI/res/layout-port/status_bar_recent_panel.xml ./b/packages/SystemUI/res/layout-port/status_bar_recent_panel.xml
--- ./a/packages/SystemUI/res/layout-port/status_bar_recent_panel.xml	2012-04-25 11:31:16.000000000 +0900
+++ ./b/packages/SystemUI/res/layout-port/status_bar_recent_panel.xml	2012-04-27 14:11:39.881175000 +0900
@@ -29,31 +29,49 @@
         android:background="@drawable/status_bar_recents_background"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:layout_alignParentBottom="true">
+        android:layout_centerVertical="true">
 
-        <com.android.systemui.recent.RecentsVerticalScrollView
-            android:id="@+id/recents_container"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginRight="0dp"
-            android:divider="@null"
-            android:stackFromBottom="true"
-            android:fadingEdge="vertical"
-            android:scrollbars="none"
-            android:fadingEdgeLength="@*android:dimen/status_bar_height"
-            android:layout_gravity="bottom|left"
-            android:clipToPadding="false"
-            android:clipChildren="false">
+        <ImageView
+	    android:gravity="center"
+	    android:layout_width="match_parent"
+	    android:layout_height="match_parent"
+	    android:layout_marginTop="0.0dip"
+	    android:src="@drawable/status_bar_recents_background"
+	/>
+
+        <com.android.systemui.recent.RecentsHorizontalScrollView
+	    android:id="@+id/recents_container"
+	    android:layout_gravity="bottom|left|center"
+	    android:scrollbars="none"
+	    android:fadingEdge="none"
+	    android:fadingEdgeLength="0.0dip"
+	    android:clipChildren="false"
+	    android:clipToPadding="false"
+    	    android:layout_width="match_parent"
+	    android:layout_height="wrap_content"
+	    android:layout_marginRight="0.0dip"
+	    android:stackFromBottom="true"
+	    android:divider="@null">
 
             <LinearLayout android:id="@+id/recents_linear_layout"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:orientation="vertical"
+                android:orientation="horizontal"
                 android:clipToPadding="false"
                 android:clipChildren="false">
             </LinearLayout>
 
-        </com.android.systemui.recent.RecentsVerticalScrollView>
+        </com.android.systemui.recent.RecentsHorizontalScrollView>
+
+	<TextView
+	    android:textSize="20.0dip"
+	    android:textColor="#ffe5e5e5"
+	    android:gravity="center_horizontal"
+	    android:layout_marginTop="45.0dip"
+	    android:layout_width="match_parent"
+	    android:layout_height="wrap_content"
+	    android:text="@string/recent_apps_title"
+	/>
 
     </FrameLayout>
 
diff -rupN ./a/packages/SystemUI/res/values/colors.xml ./b/packages/SystemUI/res/values/colors.xml
--- ./a/packages/SystemUI/res/values/colors.xml	2012-04-25 11:31:16.000000000 +0900
+++ ./b/packages/SystemUI/res/values/colors.xml	2012-04-26 19:46:08.367467000 +0900
@@ -22,8 +22,8 @@
     <drawable name="notification_item_background_color_pressed">#ff257390</drawable>
     <drawable name="ticker_background_color">#ff1d1d1d</drawable>
     <drawable name="status_bar_background">#ff000000</drawable>
-    <drawable name="status_bar_recents_background_solid">#b3000000</drawable>
-    <drawable name="status_bar_recents_app_thumbnail_background">#88000000</drawable>
+    <drawable name="status_bar_recents_background_solid">#00000000</drawable>
+    <drawable name="status_bar_recents_app_thumbnail_background">#00000000</drawable>
     <color name="status_bar_recents_app_label_color">#ffffffff</color>
     <drawable name="status_bar_notification_row_background_color">#ff090909</drawable>
     <drawable name="notification_header_bg">#FF000000</drawable>
diff -rupN ./a/packages/SystemUI/res/values/config.xml ./b/packages/SystemUI/res/values/config.xml
--- ./a/packages/SystemUI/res/values/config.xml	2012-04-25 11:31:16.000000000 +0900
+++ ./b/packages/SystemUI/res/values/config.xml	2012-04-26 20:20:19.237457000 +0900
@@ -27,7 +27,7 @@
 
     <!-- Whether recents thumbnails should stretch in both x and y to fill their
      ImageView -->
-    <bool name="config_recents_thumbnail_image_fits_to_xy">false</bool>
+    <bool name="config_recents_thumbnail_image_fits_to_xy">true</bool>
 
     <!-- Control whether status bar should distinguish HSPA data icon form UMTS
     data icon on devices -->
diff -rupN ./a/packages/SystemUI/res/values/dimens.xml ./b/packages/SystemUI/res/values/dimens.xml
--- ./a/packages/SystemUI/res/values/dimens.xml	2012-04-25 11:31:16.000000000 +0900
+++ ./b/packages/SystemUI/res/values/dimens.xml	2012-04-26 20:31:54.317462000 +0900
@@ -21,9 +21,9 @@
 
     <!-- Recent Applications parameters -->
     <!-- Upper width limit for application icon -->
-    <dimen name="status_bar_recents_app_icon_max_width">48dp</dimen>
+    <dimen name="status_bar_recents_app_icon_max_width">42dp</dimen>
     <!-- Upper height limit for application icon -->
-    <dimen name="status_bar_recents_app_icon_max_height">48dp</dimen>
+    <dimen name="status_bar_recents_app_icon_max_height">42dp</dimen>
 
     <!-- Size of application thumbnail -->
     <dimen name="status_bar_recents_thumbnail_width">164dp</dimen>
diff -rupN ./a/packages/SystemUI/res/values/strings.xml ./b/packages/SystemUI/res/values/strings.xml
--- ./a/packages/SystemUI/res/values/strings.xml	2012-04-25 11:31:16.000000000 +0900
+++ ./b/packages/SystemUI/res/values/strings.xml	2012-04-30 10:53:24.049658000 +0900
@@ -377,4 +377,8 @@
 
     <!-- Content description of the clear button in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
     <string name="accessibility_clear_all">Clear all notifications.</string>
+
+    <!-- for Sense 4.0 style multitasking mod -->
+    <string name="recent_apps_title">Recent apps</string>
+
 </resources>
diff -rupN ./a/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java ./b/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java
--- ./a/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java	2012-04-25 11:31:16.000000000 +0900
+++ ./b/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java	2012-05-07 04:30:21.215261000 +0900
@@ -24,9 +24,17 @@ import android.content.Intent;
 import android.content.res.Configuration;
 import android.content.res.Resources;
 import android.graphics.Bitmap;
+import android.graphics.drawable.BitmapDrawable;
 import android.graphics.Matrix;
 import android.graphics.Shader.TileMode;
-import android.graphics.drawable.BitmapDrawable;
+import android.graphics.Color;
+import android.graphics.Canvas;
+import android.graphics.LinearGradient;
+import android.graphics.Paint;
+import android.graphics.PorterDuffXfermode;
+import android.graphics.Bitmap.Config;
+import android.graphics.PorterDuff.Mode;
+import android.graphics.Shader.TileMode;
 import android.net.Uri;
 import android.provider.Settings;
 import android.util.AttributeSet;
@@ -402,7 +410,32 @@ public class RecentsPanelView extends Re
             // Should remove the default image in the frame
             // that this now covers, to improve scrolling speed.
             // That can't be done until the anim is complete though.
-            h.thumbnailViewImage.setImageBitmap(thumbnail);
+            final int reflectionGap = 4;
+            int width = thumbnail.getWidth();
+            int height = thumbnail.getHeight();
+	
+            Matrix matrix = new Matrix();
+            matrix.preScale(1, -1);
+	
+            Bitmap reflectionImage = Bitmap.createBitmap(thumbnail, 0, height * 2 / 3, width, height/3, matrix, false);	    
+            Bitmap bitmapWithReflection = Bitmap.createBitmap(width, (height + height/3), Config.ARGB_8888);
+	      
+            Canvas canvas = new Canvas(bitmapWithReflection);
+            canvas.drawBitmap(thumbnail, 0, 0, null);
+            Paint defaultPaint = new Paint();
+            canvas.drawRect(0, height, width, height + reflectionGap, defaultPaint);
+            canvas.drawBitmap(reflectionImage, 0, height + reflectionGap, null);
+	        
+            Paint paint = new Paint(); 
+            LinearGradient shader = new LinearGradient(0, thumbnail.getHeight(), 0, 
+              bitmapWithReflection.getHeight() + reflectionGap, 0x70ffffff, 0x00ffffff, 
+              TileMode.CLAMP); 
+            paint.setShader(shader); 
+            paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN)); 
+            canvas.drawRect(0, height, width, 
+              bitmapWithReflection.getHeight() + reflectionGap, paint); 
+
+            h.thumbnailViewImage.setImageBitmap(bitmapWithReflection);
 
             // scale the image to fill the full width of the ImageView. do this only if
             // we haven't set a bitmap before, or if the bitmap size has changed
@@ -410,7 +443,7 @@ public class RecentsPanelView extends Re
                 h.thumbnailViewImageBitmap.getWidth() != thumbnail.getWidth() ||
                 h.thumbnailViewImageBitmap.getHeight() != thumbnail.getHeight()) {
                 if (mFitThumbnailToXY) {
-                    h.thumbnailViewImage.setScaleType(ScaleType.FIT_XY);
+                    h.thumbnailViewImage.setRotationY(25.0f);
                 } else {
                     Matrix scaleMatrix = new Matrix();
                     float scale = mThumbnailWidth / (float) thumbnail.getWidth();
-----------------------------------------------------------------------------

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

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

and Thanks to D4rKn3sSyS and Neil Davies
for image reflection source code.


-----------------------------------------------------------------------------
Last edited by evilisto; 7th May 2012 at 02:39 PM. Reason: code updated to v2.0
The Following 57 Users Say Thank You to evilisto For This Useful Post: [ View ]
9th April 2012, 11:28 AM   |  #2  
TweetyPeety's Avatar
Recognized Themer
Thanks Meter: 1,561
 
1,638 posts
Join Date:Joined: Aug 2010
ok but where is the guide, what should we do with these files
The Following 2 Users Say Thank You to TweetyPeety For This Useful Post: [ View ]
9th April 2012, 11:46 AM   |  #3  
rush25's Avatar
Recognized Themer
Flag Mumbai
Thanks Meter: 5,167
 
3,331 posts
Join Date:Joined: Nov 2011
Donate to Me
Amazing!!will try soon :)

Sent from my GT-S5830 using xda premium
9th April 2012, 12:16 PM   |  #4  
jun980219's Avatar
Member
Flag Gwacheon
Thanks Meter: 85
 
63 posts
Join Date:Joined: Aug 2010
Donate to Me
More
The download link is broken :|
9th April 2012, 12:58 PM   |  #5  
evilisto's Avatar
OP Senior Member
Thanks Meter: 2,349
 
486 posts
Join Date:Joined: Nov 2010
Quote:
Originally Posted by jun980219

The download link is broken :|

OMG Sorry.. All links are fixed now.

Quote:
Originally Posted by TweetyPeety

ok but where is the guide, what should we do with these files

Apply patch and compile..
The Following User Says Thank You to evilisto For This Useful Post: [ View ]
9th April 2012, 05:13 PM   |  #6  
fuss132's Avatar
Recognized Developer
Flag Augsburg
Thanks Meter: 5,009
 
1,469 posts
Join Date:Joined: Dec 2010
Donate to Me
More
Thanks! Its Working great :)
I made it for Galaxy Sl (http://forum.xda-developers.com/show....php?t=1590430)

Keep up the good work!

Sent from my GT-I9000 using XDA
The Following 2 Users Say Thank You to fuss132 For This Useful Post: [ View ]
9th April 2012, 05:13 PM   |  #7  
Senior Member
Thanks Meter: 96
 
155 posts
Join Date:Joined: Jun 2011
More
Can't install on CM9 :/
Looks really good though!
9th April 2012, 06:02 PM   |  #8  
D4rKn3sSyS's Avatar
Recognized Developer
Flag Monteria
Thanks Meter: 16,008
 
3,774 posts
Join Date:Joined: Jan 2011
Donate to Me
More
This is really cool, already modded for samsung galaxy s2 .
EDIT: Your zip only bricks input method on sgs2, I had to build from sources duh! , anyway its working as it should now
Last edited by D4rKn3sSyS; 10th April 2012 at 03:48 AM.
9th April 2012, 06:14 PM   |  #9  
Milo58's Avatar
Junior Member
Flag Hanoi
Thanks Meter: 0
 
18 posts
Join Date:Joined: Jun 2011
More
Quote:
Originally Posted by fuss132

Thanks! Its Working great :)
I made it for Galaxy Sl (http://forum.xda-developers.com/show....php?t=1590430)

Keep up the good work!

Sent from my GT-I9000 using XDA

Is there any lag on Galaxy S?
Thanks!
9th April 2012, 09:54 PM   |  #10  
matius44's Avatar
Senior Member
Sunderland
Thanks Meter: 1,082
 
1,801 posts
Join Date:Joined: Feb 2011
Quote:
Originally Posted by evilisto

Apply patch and compile..

And for those who can only decompile and recompile apks? Any hope for a HOW-TO guide like the WP7 and Chrome mod? I know am pushing it and sorry but your mods are incredible mate

Post Reply Subscribe to Thread

Tags
evilisto the mod man ^_^, multitasking sense 4.0 htc one
Previous Thread Next Thread
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes