Android多点触控支持

Android多点触控支持,第1张

概述我想知道 Android多点触控支持是否可靠?我读过它有一些问题. 我也想知道,如何定义自定义多点触控手势?喜欢:3个手指旋转或3个手指保持静止,第4个手指移动. 我遇到过一些资源(developer.android.com上的Gestures或MotionEvent),但没有任何说明. 问候, 兹德涅克 我在API中进行了挖掘并找到了一种执行手势的方法,例如捏/反向捏,所以我相信你描述的手势是可 我想知道 Android多点触控支持是否可靠?我读过它有一些问题.

我也想知道,如何定义自定义多点触控手势?喜欢: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多点触控支持所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1131344.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存