diff options
author | Chris Wren <cwren@android.com> | 2012-08-30 17:42:57 -0400 |
---|---|---|
committer | Chris Wren <cwren@android.com> | 2012-08-31 13:44:34 -0400 |
commit | f61019ceb816fed9e5035c3d9b8451f6e4ee1da9 (patch) | |
tree | e5c839e602d66c32cbc585991642bdcb838b2fd1 /src | |
parent | 135f525b62eb20c31c593e09f8bdb92215d538a4 (diff) | |
download | android_packages_screensavers_PhotoTable-f61019ceb816fed9e5035c3d9b8451f6e4ee1da9.tar.gz android_packages_screensavers_PhotoTable-f61019ceb816fed9e5035c3d9b8451f6e4ee1da9.tar.bz2 android_packages_screensavers_PhotoTable-f61019ceb816fed9e5035c3d9b8451f6e4ee1da9.zip |
fix lightsout mode and workaround a multifinger fling bug.
Change-Id: I59b195b4a43de61b19a9bdf98a76e2fa0f705db4
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/dreams/phototable/PhotoTable.java | 10 | ||||
-rw-r--r-- | src/com/android/dreams/phototable/PhotoTouchListener.java | 16 | ||||
-rw-r--r-- | src/com/android/dreams/phototable/Table.java | 4 |
3 files changed, 20 insertions, 10 deletions
diff --git a/src/com/android/dreams/phototable/PhotoTable.java b/src/com/android/dreams/phototable/PhotoTable.java index 9f67254..47a80d9 100644 --- a/src/com/android/dreams/phototable/PhotoTable.java +++ b/src/com/android/dreams/phototable/PhotoTable.java @@ -28,13 +28,13 @@ public class PhotoTable extends Dream { public void onStart() { super.onStart(); setInteractive(true); - mTable = new Table(this, null); - setContentView(mTable); - lightsOut(); } @Override - public void onDestroy() { - super.onDestroy(); + public void onAttachedToWindow() { + super.onAttachedToWindow(); + mTable = new Table(this, null); + setContentView(mTable); + lightsOut(); } } diff --git a/src/com/android/dreams/phototable/PhotoTouchListener.java b/src/com/android/dreams/phototable/PhotoTouchListener.java index 488bc13..dd3039b 100644 --- a/src/com/android/dreams/phototable/PhotoTouchListener.java +++ b/src/com/android/dreams/phototable/PhotoTouchListener.java @@ -94,7 +94,7 @@ public class PhotoTouchListener implements View.OnTouchListener { if (!mEnableFling) { return; } - log("fling " + target.getId() + " " + dX + ", " + dY); + log("fling " + dX + ", " + dY); // convert to pixel per frame dX /= 60f; @@ -178,6 +178,7 @@ public class PhotoTouchListener implements View.OnTouchListener { mInitialTargetA = (float) target.getRotation(); } if (mA == ev.getPointerId(ev.getActionIndex())) { + log("primary went up!"); mA = mB; resetTouch(target); mB = INVALID_POINTER; @@ -194,9 +195,15 @@ public class PhotoTouchListener implements View.OnTouchListener { mInitialTouchY = y; } else { float dt = (float) (ev.getEventTime() - mLastEventTime) / 1000f; - mDX = (x - mLastTouchX) / dt; - mDY = (y - mLastTouchY) / dt; - log("moving " + target.getId() + " with velocity: " + mDX + ", " + mDY); + float tmpDX = (x - mLastTouchX) / dt; + float tmpDY = (y - mLastTouchY) / dt; + if (dt > 0f && (Math.abs(tmpDX) > 5f || Math.abs(tmpDY) > 5f)) { + // work around odd bug with multi-finger flings + mDX = tmpDX; + mDY = tmpDY; + } + log("move " + mDX + ", " + mDY); + mLastEventTime = ev.getEventTime(); mLastTouchX = x; mLastTouchY = y; @@ -246,6 +253,7 @@ public class PhotoTouchListener implements View.OnTouchListener { break; case MotionEvent.ACTION_CANCEL: + log("action cancel!"); break; } diff --git a/src/com/android/dreams/phototable/Table.java b/src/com/android/dreams/phototable/Table.java index 0ffa7ac..8fc90bf 100644 --- a/src/com/android/dreams/phototable/Table.java +++ b/src/com/android/dreams/phototable/Table.java @@ -66,6 +66,7 @@ public class Table extends FrameLayout { private final Dream mDream; private final int mDropPeriod; private final int mFastDropPeriod; + private final int mNowDropDelay; private final float mImageRatio; private final float mTableRatio; private final float mImageRotationLimit; @@ -94,6 +95,7 @@ public class Table extends FrameLayout { mInset = mResources.getDimensionPixelSize(R.dimen.photo_inset); mDropPeriod = mResources.getInteger(R.integer.drop_period); mFastDropPeriod = mResources.getInteger(R.integer.fast_drop); + mNowDropDelay = mResources.getInteger(R.integer.now_drop); mImageRatio = mResources.getInteger(R.integer.image_ratio) / 1000000f; mTableRatio = mResources.getInteger(R.integer.table_ratio) / 1000000f; mImageRotationLimit = (float) mResources.getInteger(R.integer.max_image_rotation); @@ -299,7 +301,7 @@ public class Table extends FrameLayout { removeView(photo); recycle(photo); if (replace) { - launch(); + scheduleNext(mNowDropDelay); } } }); |