Tweaking the scroll indicators with new assets and sizing.
- Showing the scroll indicators when changing between workspace/apps customize
Change-Id: I791c09b76deb00108c466f08ae3c29b19d77c4d8
diff --git a/src/com/android/launcher2/PagedView.java b/src/com/android/launcher2/PagedView.java
index 9ca2f90..a90d32f 100644
--- a/src/com/android/launcher2/PagedView.java
+++ b/src/com/android/launcher2/PagedView.java
@@ -162,10 +162,12 @@
// Scrolling indicator
private ImageView mScrollIndicator;
+ private ImageView mScrollTrack;
private boolean mHasScrollIndicator = true;
private static final int sScrollIndicatorFadeInDuration = 150;
private static final int sScrollIndicatorFastFadeOutDuration = 50;
private static final int sScrollIndicatorFadeOutDuration = 650;
+ private static final int sScrollIndicatorFlashDuration = 650;
// If set, will defer loading associated pages until the scrolling settles
private boolean mDeferLoadAssociatedPagesUntilScrollCompletes;
@@ -1606,8 +1608,6 @@
}
if (mContentIsRefreshable) {
- hideScrollingIndicator(true);
-
// Update all the pages
syncPages();
@@ -1644,6 +1644,16 @@
return true;
}
+ protected void flashScrollingIndicator() {
+ showScrollingIndicator();
+ postDelayed(new Runnable() {
+ @Override
+ public void run() {
+ hideScrollingIndicator(false);
+ }
+ }, sScrollIndicatorFlashDuration);
+ }
+
protected void showScrollingIndicator() {
if (LauncherApplication.isScreenLarge()) return;
if (getChildCount() <= 1) return;
@@ -1651,13 +1661,9 @@
getScrollingIndicator();
if (mScrollIndicator != null) {
- // Update the width of the indicator to the approx. width of each page in the full bar
- mScrollIndicator.getLayoutParams().width = getPageWidthForScrollingIndicator() / getChildCount();
- mScrollIndicator.requestLayout();
-
// Fade the indicator in
updateScrollingIndicatorPosition();
- mScrollIndicator.animate().alpha(1f).setDuration(sScrollIndicatorFadeInDuration);
+ mScrollIndicator.animate().alpha(1f).setDuration(sScrollIndicatorFadeInDuration).start();
}
}
@@ -1671,7 +1677,7 @@
// Fade the indicator out
updateScrollingIndicatorPosition();
mScrollIndicator.animate().alpha(0f).setDuration(immediately ?
- sScrollIndicatorFastFadeOutDuration : sScrollIndicatorFadeOutDuration);
+ sScrollIndicatorFastFadeOutDuration : sScrollIndicatorFadeOutDuration).start();
}
}
@@ -1700,6 +1706,33 @@
int indicatorCenterOffset = indicatorWidth / 2 - mScrollIndicator.getMeasuredWidth() / 2;
int indicatorPos = (int) (offset * pageWidth) + pageOffset + indicatorCenterOffset;
mScrollIndicator.setTranslationX(indicatorPos);
+ mScrollIndicator.invalidate();
+ }
+
+ private ImageView getScrollingIndicatorTrack() {
+ if (mScrollTrack == null) {
+ ViewGroup parent = (ViewGroup) getParent();
+ mScrollTrack = (ImageView) (parent.findViewById(R.id.paged_view_indicator_track));
+ }
+ return mScrollTrack;
+ }
+
+ public void showScrollIndicatorTrack() {
+ if (!LauncherApplication.isScreenLarge()) {
+ getScrollingIndicatorTrack();
+ if (mScrollTrack != null) {
+ mScrollTrack.setVisibility(View.VISIBLE);
+ }
+ }
+ }
+
+ public void hideScrollIndicatorTrack() {
+ if (!LauncherApplication.isScreenLarge()) {
+ getScrollingIndicatorTrack();
+ if (mScrollTrack != null) {
+ mScrollTrack.setVisibility(View.GONE);
+ }
+ }
}
/* Accessibility */