diff options
author | Winson Chung <winsonc@google.com> | 2011-07-11 15:20:48 -0700 |
---|---|---|
committer | Winson Chung <winsonc@google.com> | 2011-07-12 16:04:46 -0700 |
commit | a62e9fd95ae10cff4676f2cc1f4d68334ca27a0b (patch) | |
tree | db42f288a740bbaaf689f070e0aff66367be10de | |
parent | fe63476a2d0b12dfc692c425d1c6cdbb41774ef0 (diff) | |
download | android_packages_apps_Trebuchet-a62e9fd95ae10cff4676f2cc1f4d68334ca27a0b.tar.gz android_packages_apps_Trebuchet-a62e9fd95ae10cff4676f2cc1f4d68334ca27a0b.tar.bz2 android_packages_apps_Trebuchet-a62e9fd95ae10cff4676f2cc1f4d68334ca27a0b.zip |
Cleaning up some drop-target issues.
- Setting text color during drag over transitions
- Fixing regression in drop target padding
= Using old drop-down animation where possible
Change-Id: Ia1c5ec9e58fc734d28133349d9920d123ed71ae6
-rw-r--r-- | res/layout/qsb_bar.xml | 2 | ||||
-rw-r--r-- | res/values-land/config.xml | 5 | ||||
-rw-r--r-- | res/values-large-land/dimens.xml | 2 | ||||
-rw-r--r-- | res/values-large/config.xml | 3 | ||||
-rw-r--r-- | res/values-large/dimens.xml | 4 | ||||
-rw-r--r-- | res/values/config.xml | 4 | ||||
-rw-r--r-- | res/values/dimens.xml | 3 | ||||
-rw-r--r-- | src/com/android/launcher2/ButtonDropTarget.java | 13 | ||||
-rw-r--r-- | src/com/android/launcher2/DeleteDropTarget.java | 6 | ||||
-rw-r--r-- | src/com/android/launcher2/InfoDropTarget.java | 6 | ||||
-rw-r--r-- | src/com/android/launcher2/SearchDropTargetBar.java | 43 |
11 files changed, 77 insertions, 14 deletions
diff --git a/res/layout/qsb_bar.xml b/res/layout/qsb_bar.xml index b5b563b59..abcc941f3 100644 --- a/res/layout/qsb_bar.xml +++ b/res/layout/qsb_bar.xml @@ -26,7 +26,7 @@ <LinearLayout style="@style/SearchDropTargetBar" android:id="@+id/drag_target_bar" - android:alpha="0"> + android:visibility="gone"> <com.android.launcher2.DeleteDropTarget style="@style/DropTargetButtonContainer" diff --git a/res/values-land/config.xml b/res/values-land/config.xml new file mode 100644 index 000000000..adbc015b5 --- /dev/null +++ b/res/values-land/config.xml @@ -0,0 +1,5 @@ +<resources> +<!-- Workspace --> + <!-- Whether or not the drop targets drop down as opposed to fade in --> + <bool name="config_useDropTargetDownTransition">false</bool> +</resources> diff --git a/res/values-large-land/dimens.xml b/res/values-large-land/dimens.xml index d14a8dfd0..12fc8b309 100644 --- a/res/values-large-land/dimens.xml +++ b/res/values-large-land/dimens.xml @@ -34,4 +34,4 @@ <dimen name="apps_customize_pageLayoutPaddingBottom">14dp</dimen> <dimen name="apps_customize_pageLayoutPaddingLeft">40dp</dimen> <dimen name="apps_customize_pageLayoutPaddingRight">40dp</dimen> -</resources>
\ No newline at end of file +</resources> diff --git a/res/values-large/config.xml b/res/values-large/config.xml index 2a5266415..34dbb0fe9 100644 --- a/res/values-large/config.xml +++ b/res/values-large/config.xml @@ -18,6 +18,9 @@ <integer name="config_customizeWorkspaceShrinkTime">800</integer> <!-- Workspace --> + <!-- Whether or not the drop targets drop down as opposed to fade in --> + <bool name="config_useDropTargetDownTransition">true</bool> + <!-- When dragging items on the workspace, how much bigger (in pixels) the dragged view should be, as compared to the original view. If 0, it will not be scaled at all. Should be an even number, for pixel alignment. --> diff --git a/res/values-large/dimens.xml b/res/values-large/dimens.xml index 59aaa417d..05ec9c8f8 100644 --- a/res/values-large/dimens.xml +++ b/res/values-large/dimens.xml @@ -56,10 +56,6 @@ <dimen name="all_apps_button_drawable_padding">0dip</dimen> <dimen name="all_apps_button_vertical_padding">4dip</dimen> - <!-- height & width of the drop rectangle for the trash icon --> - <dimen name="delete_zone_vertical_drag_padding">20dip</dimen> - <dimen name="delete_zone_horizontal_drag_padding">20dip</dimen> - <!-- roughly a status bar (for determining how many rows of icons are in home) --> <dimen name="status_bar_height">48dip</dimen> diff --git a/res/values/config.xml b/res/values/config.xml index fca0acce0..7a452114d 100644 --- a/res/values/config.xml +++ b/res/values/config.xml @@ -1,5 +1,6 @@ <resources> <bool name="config_hardwareAccelerated">true</bool> + <!-- AllApps/Customize/AppsCustomize --> <!-- The alpha of the AppsCustomize bg in spring loaded mode --> <integer name="config_appsCustomizeSpringLoadedBgAlpha">45</integer> @@ -46,6 +47,9 @@ <integer name="config_allAppsBatchSize">0</integer> <!-- Workspace --> + <!-- Whether or not the drop targets drop down as opposed to fade in --> + <bool name="config_useDropTargetDownTransition">true</bool> + <!-- The transition duration for the background of the drop targets --> <integer name="config_dropTargetBgTransitionDuration">100</integer> diff --git a/res/values/dimens.xml b/res/values/dimens.xml index c04dd8e06..08a2c76a4 100644 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -43,6 +43,9 @@ <!-- height of the bottom row of controls --> <dimen name="button_bar_height">56dip</dimen> + <!-- Drag padding to add to the drop targets --> + <dimen name="drop_target_drag_padding">20dp</dimen> + <!-- so we have access to this dimension in landscape mode even though button_bar_height changes --> <dimen name="button_bar_height_portrait">56dip</dimen> diff --git a/src/com/android/launcher2/ButtonDropTarget.java b/src/com/android/launcher2/ButtonDropTarget.java index f87889cfb..edc5acf21 100644 --- a/src/com/android/launcher2/ButtonDropTarget.java +++ b/src/com/android/launcher2/ButtonDropTarget.java @@ -17,6 +17,7 @@ package com.android.launcher2; import android.content.Context; +import android.content.res.Resources; import android.graphics.Paint; import android.util.AttributeSet; import android.widget.FrameLayout; @@ -32,6 +33,7 @@ public class ButtonDropTarget extends FrameLayout implements DropTarget, DragCon protected final int mTransitionDuration; protected Launcher mLauncher; + private int mBottomDragPadding; /** Whether this drop target is active for the current drag */ protected boolean mActive; @@ -46,8 +48,9 @@ public class ButtonDropTarget extends FrameLayout implements DropTarget, DragCon public ButtonDropTarget(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); - mTransitionDuration = - context.getResources().getInteger(R.integer.config_dropTargetBgTransitionDuration); + Resources r = getResources(); + mTransitionDuration = r.getInteger(R.integer.config_dropTargetBgTransitionDuration); + mBottomDragPadding = r.getDimensionPixelSize(R.dimen.drop_target_drag_padding); } void setLauncher(Launcher launcher) { @@ -87,6 +90,12 @@ public class ButtonDropTarget extends FrameLayout implements DropTarget, DragCon } @Override + public void getHitRect(android.graphics.Rect outRect) { + super.getHitRect(outRect); + outRect.bottom += mBottomDragPadding; + } + + @Override public DropTarget getDropTargetDelegate(DragObject d) { return null; } diff --git a/src/com/android/launcher2/DeleteDropTarget.java b/src/com/android/launcher2/DeleteDropTarget.java index c8c6faaf9..ffe453319 100644 --- a/src/com/android/launcher2/DeleteDropTarget.java +++ b/src/com/android/launcher2/DeleteDropTarget.java @@ -17,6 +17,7 @@ package com.android.launcher2; import android.content.Context; +import android.content.res.ColorStateList; import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.PorterDuff; @@ -31,6 +32,7 @@ import com.android.launcher.R; public class DeleteDropTarget extends ButtonDropTarget { private TextView mText; + private ColorStateList mOriginalTextColor; private TransitionDrawable mDrawable; private int mHoverColor = 0xFFFF0000; @@ -48,6 +50,7 @@ public class DeleteDropTarget extends ButtonDropTarget { // Get the drawable mText = (TextView) findViewById(R.id.delete_target_text); + mOriginalTextColor = mText.getTextColors(); // Get the hover color Resources r = getResources(); @@ -114,6 +117,7 @@ public class DeleteDropTarget extends ButtonDropTarget { mActive = isVisible; mDrawable.resetTransition(); + mText.setTextColor(mOriginalTextColor); setVisibility(isVisible ? View.VISIBLE : View.GONE); if (mText.getText().length() > 0) { mText.setText(isUninstall ? R.string.delete_target_uninstall_label @@ -131,6 +135,7 @@ public class DeleteDropTarget extends ButtonDropTarget { super.onDragEnter(d); mDrawable.startTransition(mTransitionDuration); + mText.setTextColor(mHoverColor); } public void onDragExit(DragObject d) { @@ -138,6 +143,7 @@ public class DeleteDropTarget extends ButtonDropTarget { if (!d.dragComplete) { mDrawable.resetTransition(); + mText.setTextColor(mOriginalTextColor); } } diff --git a/src/com/android/launcher2/InfoDropTarget.java b/src/com/android/launcher2/InfoDropTarget.java index 02e3f0182..6ad7630ed 100644 --- a/src/com/android/launcher2/InfoDropTarget.java +++ b/src/com/android/launcher2/InfoDropTarget.java @@ -18,6 +18,7 @@ package com.android.launcher2; import android.content.ComponentName; import android.content.Context; +import android.content.res.ColorStateList; import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.PorterDuff; @@ -32,6 +33,7 @@ import com.android.launcher.R; public class InfoDropTarget extends ButtonDropTarget { private TextView mText; + private ColorStateList mOriginalTextColor; private TransitionDrawable mDrawable; private int mHoverColor = 0xFF0000FF; @@ -48,6 +50,7 @@ public class InfoDropTarget extends ButtonDropTarget { super.onFinishInflate(); mText = (TextView) findViewById(R.id.info_target_text); + mOriginalTextColor = mText.getTextColors(); // Get the hover color Resources r = getResources(); @@ -98,6 +101,7 @@ public class InfoDropTarget extends ButtonDropTarget { mActive = isVisible; mDrawable.resetTransition(); + mText.setTextColor(mOriginalTextColor); setVisibility(isVisible ? View.VISIBLE : View.GONE); } @@ -111,6 +115,7 @@ public class InfoDropTarget extends ButtonDropTarget { super.onDragEnter(d); mDrawable.startTransition(mTransitionDuration); + mText.setTextColor(mHoverColor); } public void onDragExit(DragObject d) { @@ -118,6 +123,7 @@ public class InfoDropTarget extends ButtonDropTarget { if (!d.dragComplete) { mDrawable.resetTransition(); + mText.setTextColor(mOriginalTextColor); } } } diff --git a/src/com/android/launcher2/SearchDropTargetBar.java b/src/com/android/launcher2/SearchDropTargetBar.java index e4cf361bb..201daabc3 100644 --- a/src/com/android/launcher2/SearchDropTargetBar.java +++ b/src/com/android/launcher2/SearchDropTargetBar.java @@ -18,10 +18,14 @@ package com.android.launcher2; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; +import android.animation.AnimatorSet; import android.animation.ObjectAnimator; import android.content.Context; +import android.content.res.Configuration; import android.util.AttributeSet; import android.view.View; +import android.view.animation.AccelerateInterpolator; +import android.view.animation.DecelerateInterpolator; import android.widget.FrameLayout; import com.android.launcher.R; @@ -32,11 +36,11 @@ import com.android.launcher.R; */ public class SearchDropTargetBar extends FrameLayout implements DragController.DragListener { - private static final int sTransitionInDuration = 275; - private static final int sTransitionOutDuration = 125; + private static final int sTransitionInDuration = 200; + private static final int sTransitionOutDuration = 175; - private ObjectAnimator mDropTargetBarFadeInAnim; - private ObjectAnimator mDropTargetBarFadeOutAnim; + private AnimatorSet mDropTargetBarFadeInAnim; + private AnimatorSet mDropTargetBarFadeOutAnim; private ObjectAnimator mQSBSearchBarFadeInAnim; private ObjectAnimator mQSBSearchBarFadeOutAnim; @@ -45,6 +49,7 @@ public class SearchDropTargetBar extends FrameLayout implements DragController.D private View mDropTargetBar; private ButtonDropTarget mInfoDropTarget; private ButtonDropTarget mDeleteDropTarget; + private int mBarHeight; public SearchDropTargetBar(Context context, AttributeSet attrs) { this(context, attrs, 0); @@ -73,9 +78,21 @@ public class SearchDropTargetBar extends FrameLayout implements DragController.D mDropTargetBar = findViewById(R.id.drag_target_bar); mInfoDropTarget = (ButtonDropTarget) mDropTargetBar.findViewById(R.id.info_target); mDeleteDropTarget = (ButtonDropTarget) mDropTargetBar.findViewById(R.id.delete_target); + mBarHeight = getResources().getDimensionPixelSize(R.dimen.qsb_bar_height); + + boolean enableDropDownDropTargets = + getResources().getBoolean(R.bool.config_useDropTargetDownTransition); // Create the various fade animations - mDropTargetBarFadeInAnim = ObjectAnimator.ofFloat(mDropTargetBar, "alpha", 1f); + mDropTargetBar.setAlpha(0f); + ObjectAnimator fadeInAlphaAnim = ObjectAnimator.ofFloat(mDropTargetBar, "alpha", 1f); + fadeInAlphaAnim.setInterpolator(new DecelerateInterpolator()); + mDropTargetBarFadeInAnim = new AnimatorSet(); + AnimatorSet.Builder fadeInAnimators = mDropTargetBarFadeInAnim.play(fadeInAlphaAnim); + if (enableDropDownDropTargets) { + mDropTargetBar.setTranslationY(-mBarHeight); + fadeInAnimators.with(ObjectAnimator.ofFloat(mDropTargetBar, "translationY", 0f)); + } mDropTargetBarFadeInAnim.setDuration(sTransitionInDuration); mDropTargetBarFadeInAnim.addListener(new AnimatorListenerAdapter() { @Override @@ -83,12 +100,20 @@ public class SearchDropTargetBar extends FrameLayout implements DragController.D mDropTargetBar.setVisibility(View.VISIBLE); } }); - mDropTargetBarFadeOutAnim = ObjectAnimator.ofFloat(mDropTargetBar, "alpha", 0f); + ObjectAnimator fadeOutAlphaAnim = ObjectAnimator.ofFloat(mDropTargetBar, "alpha", 0f); + fadeOutAlphaAnim.setInterpolator(new AccelerateInterpolator()); + mDropTargetBarFadeOutAnim = new AnimatorSet(); + AnimatorSet.Builder fadeOutAnimators = mDropTargetBarFadeOutAnim.play(fadeOutAlphaAnim); + if (enableDropDownDropTargets) { + fadeOutAnimators.with(ObjectAnimator.ofFloat(mDropTargetBar, "translationY", + -mBarHeight)); + } mDropTargetBarFadeOutAnim.setDuration(sTransitionOutDuration); mDropTargetBarFadeOutAnim.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { mDropTargetBar.setVisibility(View.GONE); + mDropTargetBar.setLayerType(View.LAYER_TYPE_NONE, null); } }); mQSBSearchBarFadeInAnim = ObjectAnimator.ofFloat(mQSBSearchBar, "alpha", 1f); @@ -156,8 +181,12 @@ public class SearchDropTargetBar extends FrameLayout implements DragController.D @Override public void onDragStart(DragSource source, Object info, int dragAction) { // Animate out the QSB search bar, and animate in the drop target bar + mDropTargetBar.setLayerType(View.LAYER_TYPE_HARDWARE, null); + mDropTargetBar.buildLayer(); + mDropTargetBarFadeOutAnim.cancel(); mDropTargetBarFadeInAnim.start(); if (!mIsSearchBarHidden) { + mQSBSearchBarFadeInAnim.cancel(); mQSBSearchBarFadeOutAnim.start(); } } @@ -165,8 +194,10 @@ public class SearchDropTargetBar extends FrameLayout implements DragController.D @Override public void onDragEnd() { // Restore the QSB search bar, and animate out the drop target bar + mDropTargetBarFadeInAnim.cancel(); mDropTargetBarFadeOutAnim.start(); if (!mIsSearchBarHidden) { + mQSBSearchBarFadeOutAnim.cancel(); mQSBSearchBarFadeInAnim.start(); } } |