diff options
author | Hyunyoung Song <hyunyoungs@google.com> | 2016-09-07 14:45:09 -0700 |
---|---|---|
committer | Hyunyoung Song <hyunyoungs@google.com> | 2016-09-07 21:46:21 +0000 |
commit | da1c17c492d7e253a08a47dd2d79637177c4401d (patch) | |
tree | a91f0c054f22271a1a168b95a18dbb3190bc07d7 /src | |
parent | 551e5abfe1f308394519637b3a8fd749f3bca634 (diff) | |
download | android_packages_apps_Trebuchet-da1c17c492d7e253a08a47dd2d79637177c4401d.tar.gz android_packages_apps_Trebuchet-da1c17c492d7e253a08a47dd2d79637177c4401d.tar.bz2 android_packages_apps_Trebuchet-da1c17c492d7e253a08a47dd2d79637177c4401d.zip |
Change all apps caret target bounding box
b/30400751
1) This also fixes the issue of apps drawer sliding up when page is swiped
horizontally immediately above the hotseat area.
2) Disclaimer: this should be cp'ed to calgary.
Hence, I tried to keep the diff small. Ideally, CaretDrawable animation
handling should move to AllAppsHandleImageView via refactoring in
follow up CL.
Change-Id: I4d808ee2eeca53b40c0b4e4e0e364fef056e26c3
(cherry picked from commit 016eaeea99e163f0b5385cf660297e6c21ff21e5)
Diffstat (limited to 'src')
4 files changed, 28 insertions, 41 deletions
diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java index e6802bd27..c9fd85a16 100644 --- a/src/com/android/launcher3/DeviceProfile.java +++ b/src/com/android/launcher3/DeviceProfile.java @@ -533,7 +533,6 @@ public class DeviceProfile { } else { // Put the page indicators above the hotseat lp.gravity = Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM; - lp.width = LayoutParams.WRAP_CONTENT; lp.height = pageIndicatorHeightPx; lp.bottomMargin = hotseatBarHeightPx + mInsets.bottom; } diff --git a/src/com/android/launcher3/pageindicators/CaretDrawable.java b/src/com/android/launcher3/pageindicators/CaretDrawable.java index 1451773af..4789f69f5 100644 --- a/src/com/android/launcher3/pageindicators/CaretDrawable.java +++ b/src/com/android/launcher3/pageindicators/CaretDrawable.java @@ -37,6 +37,7 @@ public class CaretDrawable extends Drawable { private Paint mShadowPaint = new Paint(); private Paint mCaretPaint = new Paint(); private Path mPath = new Path(); + private final int mCaretSizePx; public CaretDrawable(Context context) { final Resources res = context.getResources(); @@ -57,6 +58,18 @@ public class CaretDrawable extends Drawable { mShadowPaint.setStyle(Paint.Style.STROKE); mShadowPaint.setStrokeCap(Paint.Cap.ROUND); mShadowPaint.setStrokeJoin(Paint.Join.ROUND); + + mCaretSizePx = res.getDimensionPixelSize(R.dimen.all_apps_caret_size); + } + + @Override + public int getIntrinsicHeight() { + return mCaretSizePx; + } + + @Override + public int getIntrinsicWidth() { + return mCaretSizePx; } @Override diff --git a/src/com/android/launcher3/pageindicators/PageIndicator.java b/src/com/android/launcher3/pageindicators/PageIndicator.java index b53715d98..47c2ffb38 100644 --- a/src/com/android/launcher3/pageindicators/PageIndicator.java +++ b/src/com/android/launcher3/pageindicators/PageIndicator.java @@ -18,20 +18,21 @@ package com.android.launcher3.pageindicators; import android.content.Context; import android.graphics.drawable.Drawable; import android.util.AttributeSet; -import android.view.View; +import android.widget.FrameLayout; import com.android.launcher3.dynamicui.ExtractedColors; /** * Base class for a page indicator. */ -public abstract class PageIndicator extends View { +public abstract class PageIndicator extends FrameLayout { private CaretDrawable mCaretDrawable; protected int mNumPages = 1; public PageIndicator(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); + setWillNotDraw(false); } public void setScroll(int currentScroll, int totalScroll) {} diff --git a/src/com/android/launcher3/pageindicators/PageIndicatorLineCaret.java b/src/com/android/launcher3/pageindicators/PageIndicatorLineCaret.java index 0d771adb7..ca3a2dd09 100644 --- a/src/com/android/launcher3/pageindicators/PageIndicatorLineCaret.java +++ b/src/com/android/launcher3/pageindicators/PageIndicatorLineCaret.java @@ -15,14 +15,13 @@ import android.support.v4.graphics.ColorUtils; import android.util.AttributeSet; import android.util.Log; import android.util.Property; -import android.view.View; import android.view.ViewConfiguration; +import android.widget.ImageView; import com.android.launcher3.Launcher; import com.android.launcher3.R; import com.android.launcher3.Utilities; import com.android.launcher3.dynamicui.ExtractedColors; -import com.android.launcher3.util.TransformingTouchDelegate; /** * A PageIndicator that briefly shows a fraction of a line when moving between pages. @@ -60,10 +59,7 @@ public class PageIndicatorLineCaret extends PageIndicator { private Paint mLinePaint; private Launcher mLauncher; private final int mLineHeight; - private final TransformingTouchDelegate mTouchDelegate; - private final int mTouchExtensionHeight; - private final int mCaretSizePx; - private final int mCaretWorkspaceOffsetPx; + private ImageView mAllAppsHandle; private static final Property<PageIndicatorLineCaret, Integer> PAINT_ALPHA = new Property<PageIndicatorLineCaret, Integer>(Integer.class, "paint_alpha") { @@ -128,48 +124,26 @@ public class PageIndicatorLineCaret extends PageIndicator { Resources res = context.getResources(); mLinePaint = new Paint(); mLinePaint.setAlpha(0); - mCaretSizePx = res.getDimensionPixelSize(R.dimen.all_apps_caret_size); - mCaretWorkspaceOffsetPx = res.getDimensionPixelSize( - R.dimen.all_apps_caret_workspace_offset); mLauncher = (Launcher) context; - setOnTouchListener(mLauncher.getHapticFeedbackTouchListener()); - setOnClickListener(mLauncher); - setOnLongClickListener(mLauncher); - setOnFocusChangeListener(mLauncher.mFocusHandler); - setCaretDrawable(new CaretDrawable(context)); mLineHeight = res.getDimensionPixelSize(R.dimen.dynamic_grid_page_indicator_line_height); - mTouchExtensionHeight = res.getDimensionPixelSize( - R.dimen.dynamic_grid_page_indicator_extra_touch_height); - mTouchDelegate = new TransformingTouchDelegate(this); - } - - @Override - protected void onAttachedToWindow() { - super.onAttachedToWindow(); - mLauncher.getDragLayer().setTouchDelegate(mTouchDelegate); + setCaretDrawable(new CaretDrawable(context)); } @Override - protected void onLayout(boolean changed, int left, int top, int right, int bottom) { - super.onLayout(changed, left, top, right, bottom); - // Top/center align the caret in the page indicator space - int l = (right - left) / 2 - mCaretSizePx / 2; - getCaretDrawable().setBounds(l, mCaretWorkspaceOffsetPx, l + mCaretSizePx, - mCaretWorkspaceOffsetPx + mCaretSizePx); - - // The touch area is expanded below this view by #mTouchExtensionHeight - // which extends to the top of the hotseat. - View parent = mLauncher.getDragLayer(); - sTempCoords[0] = sTempCoords[1] = 0; - Utilities.getDescendantCoordRelativeToAncestor(this, parent, sTempCoords, true); - mTouchDelegate.setBounds(sTempCoords[0], sTempCoords[1], sTempCoords[0] + this.getWidth(), - sTempCoords[1] + getHeight() + mTouchExtensionHeight); + protected void onFinishInflate() { + super.onFinishInflate(); + mAllAppsHandle = (ImageView) findViewById(R.id.all_apps_handle); + mAllAppsHandle.setImageDrawable(getCaretDrawable()); + mAllAppsHandle.setOnTouchListener(mLauncher.getHapticFeedbackTouchListener()); + mAllAppsHandle.setOnClickListener(mLauncher); + mAllAppsHandle.setOnLongClickListener(mLauncher); + mAllAppsHandle.setOnFocusChangeListener(mLauncher.mFocusHandler); + mLauncher.setAllAppsButton(mAllAppsHandle); } @Override protected void onDraw(Canvas canvas) { - getCaretDrawable().draw(canvas); if (mTotalScroll == 0 || mNumPagesFloat == 0) { return; } |