summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWinson Chung <winsonc@google.com>2011-07-19 15:47:55 -0700
committerWinson Chung <winsonc@google.com>2011-07-19 17:59:48 -0700
commit32174c878c77b4e0f13449f4c26ff6b487bc7ca6 (patch)
tree374b58ddd29e6b638aedee4b6c4e65d4f3498e53
parent95383fe41dacc45c2aa97e7f47bafebb5b7655d8 (diff)
downloadandroid_packages_apps_Trebuchet-32174c878c77b4e0f13449f4c26ff6b487bc7ca6.tar.gz
android_packages_apps_Trebuchet-32174c878c77b4e0f13449f4c26ff6b487bc7ca6.tar.bz2
android_packages_apps_Trebuchet-32174c878c77b4e0f13449f4c26ff6b487bc7ca6.zip
Fxing issues with the scroll bar
- Removing track from AllApps - Scrollbar should reach edge of track now - Fixing flashing when going from AppsCustomize to workspace and switching tabs in AppsCustomize Change-Id: Id69bd04dc503608566c3a33a1344904e3db383bf
-rw-r--r--res/layout-land/launcher.xml30
-rw-r--r--res/layout-port/launcher.xml36
-rw-r--r--res/layout/apps_customize_pane.xml7
-rw-r--r--res/layout/scroll_indicator_track.xml4
-rw-r--r--res/values-land/dimens.xml2
-rw-r--r--res/values-large/styles.xml5
-rw-r--r--res/values/dimens.xml3
-rw-r--r--res/values/styles.xml6
-rw-r--r--src/com/android/launcher2/AppsCustomizeTabHost.java4
-rw-r--r--src/com/android/launcher2/Launcher.java26
-rw-r--r--src/com/android/launcher2/PagedView.java83
-rw-r--r--src/com/android/launcher2/Workspace.java7
12 files changed, 133 insertions, 80 deletions
diff --git a/res/layout-land/launcher.xml b/res/layout-land/launcher.xml
index 4aa487035..428a0a73a 100644
--- a/res/layout-land/launcher.xml
+++ b/res/layout-land/launcher.xml
@@ -4,9 +4,9 @@
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
-
+
http://www.apache.org/licenses/LICENSE-2.0
-
+
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -22,6 +22,19 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
+ <include
+ android:id="@+id/paged_view_indicator_track"
+ layout="@layout/scroll_indicator_track"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_gravity="bottom" />
+ <include
+ android:id="@+id/paged_view_indicator"
+ layout="@layout/scroll_indicator"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="bottom" />
+
<!-- The workspace contains 5 screens of cells -->
<com.android.launcher2.Workspace
android:id="@+id/workspace"
@@ -41,19 +54,6 @@
<include android:id="@+id/cell5" layout="@layout/workspace_screen" />
</com.android.launcher2.Workspace>
- <include
- android:id="@+id/paged_view_indicator_track"
- layout="@layout/scroll_indicator_track"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="bottom" />
- <include
- android:id="@+id/paged_view_indicator"
- layout="@layout/scroll_indicator"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="bottom" />
-
<include layout="@layout/qsb_bar"
android:id="@+id/qsb_bar"
android:layout_width="@dimen/qsb_bar_height"
diff --git a/res/layout-port/launcher.xml b/res/layout-port/launcher.xml
index 73051babc..d9750dbd2 100644
--- a/res/layout-port/launcher.xml
+++ b/res/layout-port/launcher.xml
@@ -4,9 +4,9 @@
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
-
+
http://www.apache.org/licenses/LICENSE-2.0
-
+
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -22,6 +22,23 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
+ <!-- Keep these behind the workspace so that they are not visible when
+ we go into AllApps -->
+ <include
+ android:id="@+id/paged_view_indicator_track"
+ layout="@layout/scroll_indicator_track"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_gravity="bottom"
+ android:layout_marginBottom="@dimen/button_bar_height" />
+ <include
+ android:id="@+id/paged_view_indicator"
+ layout="@layout/scroll_indicator"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="bottom"
+ android:layout_marginBottom="@dimen/button_bar_height" />
+
<!-- The workspace contains 5 screens of cells -->
<com.android.launcher2.Workspace
android:id="@+id/workspace"
@@ -39,21 +56,6 @@
<include android:id="@+id/cell5" layout="@layout/workspace_screen" />
</com.android.launcher2.Workspace>
- <include
- android:id="@+id/paged_view_indicator_track"
- layout="@layout/scroll_indicator_track"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="bottom"
- android:layout_marginBottom="@dimen/button_bar_height" />
- <include
- android:id="@+id/paged_view_indicator"
- layout="@layout/scroll_indicator"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="bottom"
- android:layout_marginBottom="@dimen/button_bar_height" />
-
<include layout="@layout/qsb_bar"
android:id="@+id/qsb_bar"
android:layout_width="match_parent"
diff --git a/res/layout/apps_customize_pane.xml b/res/layout/apps_customize_pane.xml
index adb0a6d35..c27715308 100644
--- a/res/layout/apps_customize_pane.xml
+++ b/res/layout/apps_customize_pane.xml
@@ -79,13 +79,6 @@
launcher:maxGap="@dimen/workspace_max_gap" />
<include
- style="@style/AppsCustomizeScrollTrack"
- android:id="@+id/paged_view_indicator_track"
- layout="@layout/scroll_indicator_track"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="bottom" />
- <include
android:id="@+id/paged_view_indicator"
layout="@layout/scroll_indicator"
android:layout_width="wrap_content"
diff --git a/res/layout/scroll_indicator_track.xml b/res/layout/scroll_indicator_track.xml
index c0d065a14..e3aa62591 100644
--- a/res/layout/scroll_indicator_track.xml
+++ b/res/layout/scroll_indicator_track.xml
@@ -16,7 +16,7 @@
<ImageView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher"
- android:paddingLeft="@dimen/scroll_track_padding"
- android:paddingRight="@dimen/scroll_track_padding"
+ android:paddingLeft="@dimen/scroll_track_padding_left"
+ android:paddingRight="@dimen/scroll_track_padding_right"
android:scaleType="fitXY"
android:src="@drawable/hotseat_track_holo" /> \ No newline at end of file
diff --git a/res/values-land/dimens.xml b/res/values-land/dimens.xml
index 463cd17fa..305e730a1 100644
--- a/res/values-land/dimens.xml
+++ b/res/values-land/dimens.xml
@@ -25,6 +25,8 @@
<dimen name="workspace_top_padding">0dp</dimen>
<dimen name="workspace_bottom_padding">0dp</dimen>
<dimen name="workspace_page_spacing">8dp</dimen>
+ <dimen name="scroll_track_padding_left">@dimen/qsb_bar_height</dimen>
+ <dimen name="scroll_track_padding_right">@dimen/button_bar_height</dimen>
<dimen name="folder_cell_width">100dip</dimen>
<dimen name="folder_cell_height">74dip</dimen>
diff --git a/res/values-large/styles.xml b/res/values-large/styles.xml
index bd4efe7d1..17c806b7a 100644
--- a/res/values-large/styles.xml
+++ b/res/values-large/styles.xml
@@ -18,11 +18,6 @@
-->
<resources>
-<!-- AppsCustomize -->
- <style name="AppsCustomizeScrollTrack">
- <item name="android:visibility">gone</item>
- </style>
-
<!-- Workspace -->
<style name="ScrollIndicatorTrack">
<item name="android:visibility">gone</item>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 08a2c76a4..083a88741 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -22,7 +22,8 @@
<dimen name="workspace_width_gap">-1dp</dimen>
<dimen name="workspace_height_gap">-1dp</dimen>
<dimen name="workspace_max_gap">8dp</dimen>
- <dimen name="scroll_track_padding">10dp</dimen>
+ <dimen name="scroll_track_padding_left">12dp</dimen>
+ <dimen name="scroll_track_padding_right">12dp</dimen>
<!-- QSB -->
<dimen name="toolbar_button_vertical_padding">0dip</dimen>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 46e5f95a5..9d3a02b55 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -29,15 +29,11 @@
<item name="android:windowNoTitle">true</item>
</style>
- <style name="AppsCustomizeScrollTrack">
- <item name="android:visibility">visible</item>
- </style>
-
<style name="AnimationPreview">
<item name="android:windowEnterAnimation">@anim/fade_in_fast</item>
<item name="android:windowExitAnimation">@anim/fade_out_fast</item>
</style>
-
+
<style name="WorkspaceIcon">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">match_parent</item>
diff --git a/src/com/android/launcher2/AppsCustomizeTabHost.java b/src/com/android/launcher2/AppsCustomizeTabHost.java
index 262358600..ed408df48 100644
--- a/src/com/android/launcher2/AppsCustomizeTabHost.java
+++ b/src/com/android/launcher2/AppsCustomizeTabHost.java
@@ -147,6 +147,10 @@ public class AppsCustomizeTabHost extends TabHost implements LauncherTransitiona
anim.setDuration(duration);
anim.addListener(new AnimatorListenerAdapter() {
@Override
+ public void onAnimationStart(android.animation.Animator animation) {
+ mAppsCustomizePane.hideScrollingIndicator(false);
+ }
+ @Override
public void onAnimationEnd(android.animation.Animator animation) {
mAppsCustomizePane.setContentType(type);
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index 489f3fbb8..7341e7133 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -2388,12 +2388,6 @@ public final class Launcher extends Activity
toView.setTranslationY(0.0f);
toView.setVisibility(View.VISIBLE);
toView.bringToFront();
-
- if (!springLoaded && !LauncherApplication.isScreenLarge()) {
- // Hide the workspace scrollbar
- mWorkspace.hideScrollingIndicator(true);
- mWorkspace.hideScrollIndicatorTrack();
- }
}
@Override
public void onAnimationEnd(Animator animation) {
@@ -2405,6 +2399,12 @@ public final class Launcher extends Activity
if (toView instanceof LauncherTransitionable) {
((LauncherTransitionable) toView).onLauncherTransitionEnd(scaleAnim);
}
+
+ if (!springLoaded && !LauncherApplication.isScreenLarge()) {
+ // Hide the workspace scrollbar
+ mWorkspace.hideScrollingIndicator(true);
+ mWorkspace.hideScrollIndicatorTrack();
+ }
}
});
@@ -2484,16 +2484,18 @@ public final class Launcher extends Activity
}
alphaAnim.addListener(new AnimatorListenerAdapter() {
@Override
+ public void onAnimationStart(android.animation.Animator animation) {
+ if (!springLoaded && !LauncherApplication.isScreenLarge()) {
+ // Show the workspace scrollbar
+ mWorkspace.showScrollIndicatorTrack();
+ mWorkspace.flashScrollingIndicator();
+ }
+ }
+ @Override
public void onAnimationEnd(Animator animation) {
fromView.setVisibility(View.GONE);
if (fromView instanceof LauncherTransitionable) {
((LauncherTransitionable) fromView).onLauncherTransitionEnd(alphaAnim);
-
- if (!springLoaded && !LauncherApplication.isScreenLarge()) {
- // Show the workspace scrollbar
- mWorkspace.showScrollIndicatorTrack();
- mWorkspace.flashScrollingIndicator();
- }
}
}
});
diff --git a/src/com/android/launcher2/PagedView.java b/src/com/android/launcher2/PagedView.java
index 9ef1fa8ef..bed107a1f 100644
--- a/src/com/android/launcher2/PagedView.java
+++ b/src/com/android/launcher2/PagedView.java
@@ -161,11 +161,11 @@ public abstract class PagedView extends ViewGroup {
protected boolean mIsDataReady = false;
// Scrolling indicator
+ private android.animation.ValueAnimator mScrollIndicatorAnimator;
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;
@@ -260,10 +260,6 @@ public abstract class PagedView extends ViewGroup {
return getChildAt(index);
}
- int getScrollWidth() {
- return getWidth();
- }
-
/**
* Updates the scroll of the current page immediately to its final scroll position. We use this
* in CustomizePagedView to allow tabs to share the same PagedView while resetting the scroll of
@@ -1676,7 +1672,13 @@ public abstract class PagedView extends ViewGroup {
if (mScrollIndicator != null) {
// Fade the indicator in
updateScrollingIndicatorPosition();
- mScrollIndicator.animate().alpha(1f).setDuration(sScrollIndicatorFadeInDuration).start();
+ mScrollIndicator.setVisibility(View.VISIBLE);
+ if (mScrollIndicatorAnimator != null) {
+ mScrollIndicatorAnimator.cancel();
+ }
+ mScrollIndicatorAnimator = ObjectAnimator.ofFloat(mScrollIndicator, "alpha", 1f);
+ mScrollIndicatorAnimator.setDuration(sScrollIndicatorFadeInDuration);
+ mScrollIndicatorAnimator.start();
}
}
@@ -1688,11 +1690,41 @@ public abstract class PagedView extends ViewGroup {
if (mScrollIndicator != null) {
// Fade the indicator out
updateScrollingIndicatorPosition();
- mScrollIndicator.animate().alpha(0f).setDuration(immediately ?
- sScrollIndicatorFastFadeOutDuration : sScrollIndicatorFadeOutDuration).start();
+ if (mScrollIndicatorAnimator != null) {
+ mScrollIndicatorAnimator.cancel();
+ }
+ if (immediately) {
+ mScrollIndicator.setVisibility(View.GONE);
+ mScrollIndicator.setAlpha(0f);
+ } else {
+ mScrollIndicatorAnimator = ObjectAnimator.ofFloat(mScrollIndicator, "alpha", 0f);
+ mScrollIndicatorAnimator.setDuration(sScrollIndicatorFadeOutDuration);
+ mScrollIndicatorAnimator.addListener(new AnimatorListenerAdapter() {
+ private boolean cancelled = false;
+ @Override
+ public void onAnimationCancel(android.animation.Animator animation) {
+ cancelled = true;
+ }
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ if (!cancelled) {
+ mScrollIndicator.setVisibility(View.GONE);
+ }
+ }
+ });
+ mScrollIndicatorAnimator.start();
+ }
}
}
+ /**
+ * To be overridden by subclasses to determine whether the scroll indicator should stretch to
+ * fill its space on the track or not.
+ */
+ protected boolean hasElasticScrollIndicator() {
+ return false;
+ }
+
private void updateScrollingIndicator() {
if (getChildCount() <= 1) return;
if (!isScrollingIndicatorEnabled()) return;
@@ -1706,16 +1738,35 @@ public abstract class PagedView extends ViewGroup {
private void updateScrollingIndicatorPosition() {
if (!isScrollingIndicatorEnabled()) return;
- // We can make the page width smaller to make it look more centered
+ int numPages = getChildCount();
+ int pageWidth = getMeasuredWidth();
+ int maxPageWidth = (numPages * getMeasuredWidth()) + ((numPages - 1) * mPageSpacing);
+ int trackWidth = pageWidth;
+ int indicatorWidth = mScrollIndicator.getMeasuredWidth() -
+ mScrollIndicator.getPaddingLeft() - mScrollIndicator.getPaddingRight();
+ int paddingLeft = 0;
+ int paddingRight = 0;
+
+ // Get the track properties
getScrollingIndicatorTrack();
- int pageWidth = mScrollTrack.getMeasuredWidth() - mScrollTrack.getPaddingLeft() -
- mScrollTrack.getPaddingRight();
- int maxPageWidth = getChildCount() * getMeasuredWidth();
+ if (mScrollTrack != null) {
+ paddingLeft = mScrollTrack.getPaddingLeft();
+ paddingRight = mScrollTrack.getPaddingRight();
+ trackWidth = mScrollTrack.getMeasuredWidth() - paddingLeft - paddingRight;
+ }
+
float offset = (float) getScrollX() / maxPageWidth;
- int indicatorWidth = pageWidth / getChildCount();
- int indicatorCenterOffset = indicatorWidth / 2 - mScrollIndicator.getMeasuredWidth() / 2;
- int indicatorPos = (int) (offset * pageWidth) + mScrollTrack.getPaddingLeft() +
- indicatorCenterOffset;
+ int indicatorSpace = trackWidth / numPages;
+ int indicatorPos = (int) (offset * trackWidth) + paddingLeft;
+ if (hasElasticScrollIndicator()) {
+ if (mScrollIndicator.getMeasuredWidth() != indicatorSpace) {
+ mScrollIndicator.getLayoutParams().width = indicatorSpace;
+ mScrollIndicator.requestLayout();
+ }
+ } else {
+ int indicatorCenterOffset = indicatorSpace / 2 - indicatorWidth / 2;
+ indicatorPos += indicatorCenterOffset;
+ }
mScrollIndicator.setTranslationX(indicatorPos);
mScrollIndicator.invalidate();
}
diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java
index ba290d3f2..d79158d61 100644
--- a/src/com/android/launcher2/Workspace.java
+++ b/src/com/android/launcher2/Workspace.java
@@ -3339,4 +3339,11 @@ public class Workspace extends SmoothPagedView
public void getLocationInDragLayer(int[] loc) {
mLauncher.getDragLayer().getLocationInDragLayer(this, loc);
}
+
+ /**
+ * Return true because we want the scrolling indicator to stretch to fit the space.
+ */
+ protected boolean hasElasticScrollIndicator() {
+ return true;
+ }
}