
我也想知道,如何定义自定义多点触控手势?喜欢:3个手指旋转或3个手指保持静止,第4个手指移动.
我遇到过一些资源(developer.androID.com上的Gestures或MotionEvent),但没有任何说明.
问候,
兹德涅克
解决方法 我在API中进行了挖掘并找到了一种执行手势的方法,例如捏/反向捏,所以我相信你描述的手势是可能的 – 它只需要弄清楚如何编码它们.下面我贴了一个我实现的反向夹点的例子.我希望捏只能在水平方向上进行注册.它不是非常干净或可重复使用的代码,但它应该可以帮助您前进.它适用于AndroID 2.0.x.我读过多点触控可能在早期版本上有问题.这个例子是我在一个活动的ontouchEvent中调用的一个类,它将事件转发给类.public class HorizontalReversePinchDetector { public boolean ontouchEvent(MotionEvent e) { int pointerCount = e.getPointerCount(); if(pointerCount != 2) { Log.d(GESTURE,"not pinching - exactly 2 fingers are needed but have " + pointerCount); clearPinch(); return false; } int firstIndex = e.getX(0) < e.getX(1) ? 0: 1; int secondindex = e.getX(0) < e.getX(1) ? 1: 0; Finger currentleftFinger = new Finger(e.getX(firstIndex),e.getY(firstIndex)); Finger currentRightFinger = new Finger(e.getX(secondindex),e.getY(secondindex)); float yDifference = Math.abs(currentleftFinger.getY() - currentRightFinger.getY()); if(yDifference > 80) { Log.d(GESTURE,"not pinching - fingers too vertically-orIEnted"); clearPinch(); return false; } if(initialleftFinger == null) { initialleftFinger = currentleftFinger; initialRightFinger = currentRightFinger; Log.d(GESTURE,"not pinching,but might be starting a pinch..."); return false; } float leftFingerdistance = initialleftFinger.getX() - currentleftFinger.getX(); float rightFingerdistance = currentRightFinger.getX() - initialRightFinger.getX(); float xdistanceBetweenFingers = Math.abs(currentleftFinger.getX() - currentRightFinger.getX()); if(xdistanceBetweenFingers < minimumdistanceBetweenFingers) { Log.d(GESTURE,"pinching,but fingers are not far enough apart..."); return true; } if(leftFingerdistance < minimumdistanceForEachFinger) { Log.d(GESTURE,but left finger has not moved enough..."); return true; } if(rightFingerdistance < minimumdistanceForEachFinger) { Log.d(GESTURE,but right finger has not moved enough..."); return true; } pinchCompleted(); return true; } private voID pinchCompleted() { Log.d(GESTURE,"pinch completed"); if(pinchListener != null) pinchListener.onPinch(); clearPinch(); } public static interface OnPinchListener { voID onPinch(); } private voID clearPinch() { initialleftFinger = null; initialRightFinger = null; } public voID setPinchListener(OnPinchListener pinchListener) { this.pinchListener = pinchListener; } private static class Finger { private Finger(float x,float y) { this.x = x; this.y = y; } public float getX() { return x; } public float getY() { return y; } private float x; private float y; } private Finger initialleftFinger; private Finger initialRightFinger; private OnPinchListener pinchListener; private static final float minimumdistanceForEachFinger = 30; private static final float minimumdistanceBetweenFingers = 50;} 关于可靠性,该代码完全可靠.同样,仅适用于AndroID 2.0.x.我没有在其他版本的平台上测试它.
总结以上是内存溢出为你收集整理的Android多点触控支持全部内容,希望文章能够帮你解决Android多点触控支持所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)