summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3/pageindicators
diff options
context:
space:
mode:
authorSunny Goyal <sunnygoyal@google.com>2018-03-26 12:10:31 -0700
committerSunny Goyal <sunnygoyal@google.com>2018-03-26 15:52:03 -0700
commit81b4c7bb3c76f5f83848d536b1783e0aa75ace0d (patch)
treef43bbe3e28f9e22175ee0f8d04cdb99ba1829e7c /src/com/android/launcher3/pageindicators
parent864ae5a2b39fe2b756bb2b28a672598dc88fa2ed (diff)
downloadandroid_packages_apps_Trebuchet-81b4c7bb3c76f5f83848d536b1783e0aa75ace0d.tar.gz
android_packages_apps_Trebuchet-81b4c7bb3c76f5f83848d536b1783e0aa75ace0d.tar.bz2
android_packages_apps_Trebuchet-81b4c7bb3c76f5f83848d536b1783e0aa75ace0d.zip
Adding a custom view for DragHandle
> Separating page indicator and drag handle > Page indicator always draws irrespactive of oriantation > Drag handle is responsible for accessibility interactions > Adding assissibility actions for DragHandle Bug: 72500733 Change-Id: I9030337456964af1bdf77f1c01956452321f9229
Diffstat (limited to 'src/com/android/launcher3/pageindicators')
-rw-r--r--src/com/android/launcher3/pageindicators/WorkspacePageIndicator.java96
1 files changed, 23 insertions, 73 deletions
diff --git a/src/com/android/launcher3/pageindicators/WorkspacePageIndicator.java b/src/com/android/launcher3/pageindicators/WorkspacePageIndicator.java
index 94ae39bb5..4ad7feb90 100644
--- a/src/com/android/launcher3/pageindicators/WorkspacePageIndicator.java
+++ b/src/com/android/launcher3/pageindicators/WorkspacePageIndicator.java
@@ -1,9 +1,5 @@
package com.android.launcher3.pageindicators;
-import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
-
-import static com.android.launcher3.LauncherState.ALL_APPS;
-
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
@@ -20,9 +16,7 @@ import android.util.AttributeSet;
import android.util.Property;
import android.view.Gravity;
import android.view.View;
-import android.view.View.OnClickListener;
import android.view.ViewConfiguration;
-import android.view.accessibility.AccessibilityManager;
import android.widget.FrameLayout;
import com.android.launcher3.DeviceProfile;
@@ -31,18 +25,13 @@ import com.android.launcher3.Launcher;
import com.android.launcher3.R;
import com.android.launcher3.Utilities;
import com.android.launcher3.dynamicui.WallpaperColorInfo;
-import com.android.launcher3.userevent.nano.LauncherLogProto.Action;
-import com.android.launcher3.userevent.nano.LauncherLogProto.ControlType;
/**
- * A PageIndicator that briefly shows a fraction of a line when moving between pages in
- * portrait mode. In Landscape simply draws the caret drawable bottom-corner aligned in
- * the drag-layer.
+ * A PageIndicator that briefly shows a fraction of a line when moving between pages
*
* The fraction is 1 / number of pages and the position is based on the progress of the page scroll.
*/
-public class WorkspacePageIndicator extends View
- implements Insettable, OnClickListener, PageIndicator {
+public class WorkspacePageIndicator extends View implements Insettable, PageIndicator {
private static final int LINE_ANIMATE_DURATION = ViewConfiguration.getScrollBarFadeDuration();
private static final int LINE_FADE_DELAY = ViewConfiguration.getScrollDefaultDelay();
@@ -57,7 +46,6 @@ public class WorkspacePageIndicator extends View
private final Handler mDelayedLineFadeHandler = new Handler(Looper.getMainLooper());
private final Launcher mLauncher;
- private final AccessibilityManager mAccessibilityManager;
private boolean mShouldAutoHide = true;
@@ -72,8 +60,6 @@ public class WorkspacePageIndicator extends View
private Paint mLinePaint;
private final int mLineHeight;
- private boolean mIsLandscapeUi;
-
private static final Property<WorkspacePageIndicator, Integer> PAINT_ALPHA
= new Property<WorkspacePageIndicator, Integer>(Integer.class, "paint_alpha") {
@Override
@@ -84,7 +70,7 @@ public class WorkspacePageIndicator extends View
@Override
public void set(WorkspacePageIndicator obj, Integer alpha) {
obj.mLinePaint.setAlpha(alpha);
- obj.invalidateIfPortrait();
+ obj.invalidate();
}
};
@@ -98,7 +84,7 @@ public class WorkspacePageIndicator extends View
@Override
public void set(WorkspacePageIndicator obj, Float numPages) {
obj.mNumPagesFloat = numPages;
- obj.invalidateIfPortrait();
+ obj.invalidate();
}
};
@@ -112,7 +98,7 @@ public class WorkspacePageIndicator extends View
@Override
public void set(WorkspacePageIndicator obj, Integer totalScroll) {
obj.mTotalScroll = totalScroll;
- obj.invalidateIfPortrait();
+ obj.invalidate();
}
};
@@ -139,24 +125,23 @@ public class WorkspacePageIndicator extends View
boolean darkText = WallpaperColorInfo.getInstance(context).supportsDarkText();
mActiveAlpha = darkText ? BLACK_ALPHA : WHITE_ALPHA;
mLinePaint.setColor(darkText ? Color.BLACK : Color.WHITE);
- mAccessibilityManager = (AccessibilityManager)
- getContext().getSystemService(Context.ACCESSIBILITY_SERVICE);
}
@Override
protected void onDraw(Canvas canvas) {
- if (mTotalScroll == 0 || mNumPagesFloat == 0 || mIsLandscapeUi) {
+ if (mTotalScroll == 0 || mNumPagesFloat == 0) {
return;
}
// Compute and draw line rect.
float progress = Utilities.boundToRange(((float) mCurrentScroll) / mTotalScroll, 0f, 1f);
- int availableWidth = canvas.getWidth();
+ int availableWidth = getWidth();
int lineWidth = (int) (availableWidth / mNumPagesFloat);
int lineLeft = (int) (progress * (availableWidth - lineWidth));
int lineRight = lineLeft + lineWidth;
- canvas.drawRoundRect(lineLeft, canvas.getHeight() / 2 - mLineHeight / 2, lineRight,
- canvas.getHeight() / 2 + mLineHeight / 2, mLineHeight, mLineHeight, mLinePaint);
+
+ canvas.drawRoundRect(lineLeft, getHeight() / 2 - mLineHeight / 2, lineRight,
+ getHeight() / 2 + mLineHeight / 2, mLineHeight, mLineHeight, mLinePaint);
}
@Override
@@ -172,7 +157,7 @@ public class WorkspacePageIndicator extends View
} else if (mTotalScroll != totalScroll) {
animateToTotalScroll(totalScroll);
} else {
- invalidateIfPortrait();
+ invalidate();
}
if (mShouldAutoHide) {
@@ -191,7 +176,13 @@ public class WorkspacePageIndicator extends View
@Override
public void setMarkersCount(int numMarkers) {
if (Float.compare(numMarkers, mNumPagesFloat) != 0) {
- animateToNumPages(numMarkers);
+ setupAndRunAnimation(ObjectAnimator.ofFloat(this, NUM_PAGES, numMarkers),
+ NUM_PAGES_ANIMATOR_INDEX);
+ } else {
+ if (mAnimators[NUM_PAGES_ANIMATOR_INDEX] != null) {
+ mAnimators[NUM_PAGES_ANIMATOR_INDEX].cancel();
+ mAnimators[NUM_PAGES_ANIMATOR_INDEX] = null;
+ }
}
}
@@ -219,11 +210,6 @@ public class WorkspacePageIndicator extends View
LINE_ALPHA_ANIMATOR_INDEX);
}
- private void animateToNumPages(int numPages) {
- setupAndRunAnimation(ObjectAnimator.ofFloat(this, NUM_PAGES, numPages),
- NUM_PAGES_ANIMATOR_INDEX);
- }
-
private void animateToTotalScroll(int totalScroll) {
setupAndRunAnimation(ObjectAnimator.ofInt(this, TOTAL_SCROLL, totalScroll),
TOTAL_SCROLL_ANIMATOR_INDEX);
@@ -254,54 +240,18 @@ public class WorkspacePageIndicator extends View
@Override
public void setInsets(Rect insets) {
DeviceProfile grid = mLauncher.getDeviceProfile();
- mIsLandscapeUi = grid.isVerticalBarLayout();
FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) getLayoutParams();
- if (mIsLandscapeUi) {
- if (grid.isSeascape()) {
- lp.leftMargin = grid.hotseatBarSidePaddingPx;
- lp.rightMargin = insets.right;
- lp.gravity = Gravity.RIGHT | Gravity.BOTTOM;
- } else {
- lp.leftMargin = insets.left;
- lp.rightMargin = grid.hotseatBarSidePaddingPx;
- lp.gravity = Gravity.LEFT | Gravity.BOTTOM;
- }
- lp.bottomMargin = grid.workspacePadding.bottom;
- lp.width = lp.height = getResources()
- .getDimensionPixelSize(R.dimen.dynamic_grid_min_page_indicator_size);
-
- setBackgroundResource(R.drawable.all_apps_handle_landscape);
- setOnFocusChangeListener(mLauncher.mFocusHandler);
- setOnClickListener(this);
-
+ if (grid.isVerticalBarLayout()) {
+ Rect padding = grid.workspacePadding;
+ lp.leftMargin = padding.left + grid.workspaceCellPaddingXPx;
+ lp.rightMargin = padding.right + grid.workspaceCellPaddingXPx;
+ lp.bottomMargin = padding.bottom;
} else {
lp.leftMargin = lp.rightMargin = 0;
lp.gravity = Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM;
- lp.height = grid.pageIndicatorSizePx;
lp.bottomMargin = grid.hotseatBarSizePx + insets.bottom;
- lp.width = MATCH_PARENT;
-
- setBackgroundResource(0);
- setOnFocusChangeListener(null);
- setOnClickListener(mAccessibilityManager.isTouchExplorationEnabled() ? this : null);
}
-
setLayoutParams(lp);
}
-
- private void invalidateIfPortrait() {
- if (!mIsLandscapeUi) {
- invalidate();
- }
- }
-
- @Override
- public void onClick(View view) {
- if (!mLauncher.isInState(ALL_APPS)) {
- mLauncher.getUserEventDispatcher().logActionOnControl(
- Action.Touch.TAP, ControlType.ALL_APPS_BUTTON);
- mLauncher.getStateManager().goToState(ALL_APPS);
- }
- }
}