You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by bo...@apache.org on 2013/01/30 00:21:01 UTC
[4/5] android commit: Update to purity, adding better touch support
Update to purity, adding better touch support
Project: http://git-wip-us.apache.org/repos/asf/cordova-android/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-android/commit/31055bb3
Tree: http://git-wip-us.apache.org/repos/asf/cordova-android/tree/31055bb3
Diff: http://git-wip-us.apache.org/repos/asf/cordova-android/diff/31055bb3
Branch: refs/heads/master
Commit: 31055bb30340499d0a6c582c2d6180588ef06bfd
Parents: 1adf268
Author: Joe Bowser <bo...@apache.org>
Authored: Fri Jan 25 14:39:44 2013 -0800
Committer: Joe Bowser <bo...@apache.org>
Committed: Fri Jan 25 14:39:44 2013 -0800
----------------------------------------------------------------------
test/src/org/apache/cordova/test/util/Purity.java | 62 +++++++++++++++-
1 files changed, 61 insertions(+), 1 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-android/blob/31055bb3/test/src/org/apache/cordova/test/util/Purity.java
----------------------------------------------------------------------
diff --git a/test/src/org/apache/cordova/test/util/Purity.java b/test/src/org/apache/cordova/test/util/Purity.java
index 0e7ced8..7171338 100644
--- a/test/src/org/apache/cordova/test/util/Purity.java
+++ b/test/src/org/apache/cordova/test/util/Purity.java
@@ -40,6 +40,7 @@ public class Purity {
int width, height;
float density;
Bitmap state;
+ boolean fingerDown = false;
public Purity(Context ctx, Instrumentation i)
{
@@ -77,8 +78,61 @@ public class Purity {
long downTime = SystemClock.uptimeMillis();
// event time MUST be retrieved only by this way!
long eventTime = SystemClock.uptimeMillis();
+ if(!fingerDown)
+ {
+ MotionEvent downEvent = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_DOWN, realX, realY, 0);
+ inst.sendPointerSync(downEvent);
+ }
+ MotionEvent upEvent = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_UP, realX, realY, 0);
+ inst.sendPointerSync(upEvent);
+ }
+
+ public void touchStart(int x, int y)
+ {
+ int realX = getRealCoord(x);
+ int realY = getRealCoord(y);
+ long downTime = SystemClock.uptimeMillis();
+ // event time MUST be retrieved only by this way!
+ long eventTime = SystemClock.uptimeMillis();
MotionEvent event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_DOWN, realX, realY, 0);
inst.sendPointerSync(event);
+ fingerDown = true;
+ }
+
+ //Move from the touch start
+ public void touchMove(int x, int y)
+ {
+ if(!fingerDown)
+ touchStart(x,y);
+ else
+ {
+ int realX = getRealCoord(x);
+ int realY = getRealCoord(y);
+ long downTime = SystemClock.uptimeMillis();
+ // event time MUST be retrieved only by this way!
+ long eventTime = SystemClock.uptimeMillis();
+ MotionEvent event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_MOVE, realX, realY, 0);
+ inst.sendPointerSync(event);
+ }
+ }
+
+ public void touchEnd(int x, int y)
+ {
+ if(!fingerDown)
+ {
+ touch(x, y);
+ }
+ else
+ {
+ int realX = getRealCoord(x);
+ int realY = getRealCoord(y);
+ long downTime = SystemClock.uptimeMillis();
+ // event time MUST be retrieved only by this way!
+ long eventTime = SystemClock.uptimeMillis();
+ MotionEvent event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_DOWN, realX, realY, 0);
+ inst.sendPointerSync(event);
+ fingerDown = false;
+ }
}
public void setBitmap(WebView view)
@@ -106,6 +160,12 @@ public class Purity {
public void clearBitmap()
{
- state.recycle();
+ if(state != null)
+ state.recycle();
+ }
+
+ protected void finalize()
+ {
+ clearBitmap();
}
}