diff options
author | Joe Onorato <joeo@android.com> | 2009-10-01 14:09:15 -0700 |
---|---|---|
committer | Joe Onorato <joeo@android.com> | 2009-10-01 14:09:15 -0700 |
commit | f7b0e0188033fe7611cf68c4efa8123e3160b689 (patch) | |
tree | baf4d3a18042d243dccbc172d01a07cd20f0bbad /src/com/android/launcher2/AllAppsView.java | |
parent | 2bc6b7c2b8b651dde0a65c64c127f5b85c1290d2 (diff) | |
download | android_packages_apps_Trebuchet-f7b0e0188033fe7611cf68c4efa8123e3160b689.tar.gz android_packages_apps_Trebuchet-f7b0e0188033fe7611cf68c4efa8123e3160b689.tar.bz2 android_packages_apps_Trebuchet-f7b0e0188033fe7611cf68c4efa8123e3160b689.zip |
Fix the "missing touch events" problem.
- Bias the slop regions so that it's more likely to think that you're scrolling
than zooming.
- If it could be a scroll or a zoom, pick the scroll.
Diffstat (limited to 'src/com/android/launcher2/AllAppsView.java')
-rw-r--r-- | src/com/android/launcher2/AllAppsView.java | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/src/com/android/launcher2/AllAppsView.java b/src/com/android/launcher2/AllAppsView.java index bf439f5c9..3a45d59f2 100644 --- a/src/com/android/launcher2/AllAppsView.java +++ b/src/com/android/launcher2/AllAppsView.java @@ -74,11 +74,13 @@ public class AllAppsView extends RSSurfaceView * TODO: What about scrolling? */ private int mLocks = LOCK_ICONS_PENDING; + private int mSlopX; + private int mMaxFlingVelocity; + private RenderScript mRS; private RolloRS mRollo; private ArrayList<ApplicationInfo> mAllAppsList; - private ViewConfiguration mConfig; private int mPageCount; private boolean mStartedScrolling; private VelocityTracker mVelocity; @@ -126,7 +128,10 @@ public class AllAppsView extends RSSurfaceView super(context, attrs); setFocusable(true); getHolder().setFormat(PixelFormat.TRANSLUCENT); - mConfig = ViewConfiguration.get(context); + final ViewConfiguration config = ViewConfiguration.get(context); + mSlopX = config.getScaledTouchSlop(); + mMaxFlingVelocity = config.getScaledMaximumFlingVelocity(); + setOnClickListener(this); setOnLongClickListener(this); setZOrderOnTop(true); @@ -217,12 +222,11 @@ public class AllAppsView extends RSSurfaceView break; case MotionEvent.ACTION_MOVE: case MotionEvent.ACTION_OUTSIDE: - int slop = Math.abs(x - mLastMotionX); - if (!mStartedScrolling && slop < mConfig.getScaledTouchSlop()) { - // don't update mLastMotionX so slop is right and when we do start scrolling + int slopX = Math.abs(x - mLastMotionX); + if (!mStartedScrolling && slopX < mSlopX) { + // don't update mLastMotionX so slopX is right and when we do start scrolling // below, we get the right delta. } else { - mRollo.mState.newPositionX = ev.getRawX() / Defines.SCREEN_WIDTH_PX; mRollo.mState.newTouchDown = 1; mRollo.mInvokeMove.execute(); @@ -241,8 +245,7 @@ public class AllAppsView extends RSSurfaceView mRollo.mState.newPositionX = ev.getRawX() / Defines.SCREEN_WIDTH_PX; if (!mZoomSwipeInProgress) { - mVelocity.computeCurrentVelocity(1000 /* px/sec */, - mConfig.getScaledMaximumFlingVelocity()); + mVelocity.computeCurrentVelocity(1000 /* px/sec */, mMaxFlingVelocity); mRollo.mState.flingVelocityX = mVelocity.getXVelocity() / Defines.SCREEN_WIDTH_PX; mRollo.clearSelectedIcon(); mRollo.mState.save(); |