From 75deaf3d8f369bd13ea59ec3740324a5cfeb3099 Mon Sep 17 00:00:00 2001 From: Sunny Goyal Date: Thu, 7 May 2015 16:13:12 -0700 Subject: [PATCH] Using xml-drawable and elevation as folder background Change-Id: I21376bd3de8cd58c646d0898d5a8303af9057218 --- res/layout/user_folder.xml | 2 +- res/values/dimens.xml | 9 +++++++-- src/com/android/launcher3/DragView.java | 4 ++++ src/com/android/launcher3/Folder.java | 22 ++++++++++++++++++---- 4 files changed, 30 insertions(+), 7 deletions(-) diff --git a/res/layout/user_folder.xml b/res/layout/user_folder.xml index cd3a051ad2..5bacc96054 100644 --- a/res/layout/user_folder.xml +++ b/res/layout/user_folder.xml @@ -19,7 +19,7 @@ xmlns:launcher="http://schemas.android.com/apk/res-auto" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:background="@drawable/quantum_panel" + android:elevation="5dp" android:orientation="vertical" > 20dp - + 12dp + + 30dp + 8dp 120dp @@ -107,6 +111,7 @@ 4dp 10dp + 8dp 24dp diff --git a/src/com/android/launcher3/DragView.java b/src/com/android/launcher3/DragView.java index a4b6704ac6..3eec3d9eee 100644 --- a/src/com/android/launcher3/DragView.java +++ b/src/com/android/launcher3/DragView.java @@ -129,6 +129,10 @@ public class DragView extends View { int ms = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); measure(ms, ms); mPaint = new Paint(Paint.FILTER_BITMAP_FLAG); + + if (Utilities.isLmpOrAbove()) { + setElevation(getResources().getDimension(R.dimen.drag_elevation)); + } } /** Sets the scale of the view over the normal workspace icon size. */ diff --git a/src/com/android/launcher3/Folder.java b/src/com/android/launcher3/Folder.java index a2828054c6..d98b0eb6a2 100644 --- a/src/com/android/launcher3/Folder.java +++ b/src/com/android/launcher3/Folder.java @@ -27,6 +27,7 @@ import android.content.res.Resources; import android.graphics.Point; import android.graphics.PointF; import android.graphics.Rect; +import android.graphics.drawable.InsetDrawable; import android.os.Build; import android.text.InputType; import android.text.Selection; @@ -180,6 +181,15 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList // name is complete, we have something to focus on, thus hiding the cursor and giving // reliable behavior when clicking the text field (since it will always gain focus on click). setFocusableInTouchMode(true); + + if (Utilities.isLmpOrAbove()) { + int padding = getResources().getDimensionPixelSize(R.dimen.folder_shadow_padding); + setBackground(new InsetDrawable( + getResources().getDrawable(R.drawable.apps_list_bg), + padding, padding, padding, padding)); + } else { + setBackgroundResource(R.drawable.quantum_panel); + } } @Override @@ -470,9 +480,15 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList PropertyValuesHolder tx = PropertyValuesHolder.ofFloat("translationX", transX, 0); PropertyValuesHolder ty = PropertyValuesHolder.ofFloat("translationY", transY, 0); + Animator drift = LauncherAnimUtils.ofPropertyValuesHolder(this, tx, ty); + drift.setDuration(mMaterialExpandDuration); + drift.setStartDelay(mMaterialExpandStagger); + drift.setInterpolator(new LogDecelerateInterpolator(100, 0)); + int rx = (int) Math.max(Math.max(width - getPivotX(), 0), getPivotX()); int ry = (int) Math.max(Math.max(height - getPivotY(), 0), getPivotY()); float radius = (float) Math.hypot(rx, ry); + AnimatorSet anim = LauncherAnimUtils.createAnimatorSet(); Animator reveal = LauncherAnimUtils.createCircularReveal(this, (int) getPivotX(), (int) getPivotY(), 0, radius); @@ -491,10 +507,6 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList textAlpha.setStartDelay(mMaterialExpandStagger); textAlpha.setInterpolator(new AccelerateInterpolator(1.5f)); - Animator drift = LauncherAnimUtils.ofPropertyValuesHolder(this, tx, ty); - drift.setDuration(mMaterialExpandDuration); - drift.setStartDelay(mMaterialExpandStagger); - drift.setInterpolator(new LogDecelerateInterpolator(60, 0)); anim.play(drift); anim.play(iconsAlpha); @@ -504,10 +516,12 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList openFolderAnim = anim; mContentWrapper.setLayerType(LAYER_TYPE_HARDWARE, null); + mFooter.setLayerType(LAYER_TYPE_HARDWARE, null); onCompleteRunnable = new Runnable() { @Override public void run() { mContentWrapper.setLayerType(LAYER_TYPE_NONE, null); + mContentWrapper.setLayerType(LAYER_TYPE_NONE, null); } }; }