我有一个常用的手势检测器来检测for,它是SurfaceView的一个实例属性。
GestureDetector flingDetector = new GestureDetector(getContext(),new SimpleOnGestureListener() {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
// Fling implementation
return true;
}
});我在canvas上画了很多复杂的东西,我有一个与onScroll一起使用的translate(dx,dy)方法。
因此,我的问题是如何使用translate方法实现fling?
似乎有很多问题要发现,我的问题是如何实现它。
发布于 2014-05-18 16:16:28
我不确定这能回答你的问题,我试试看。
检查http://developer.android.com/reference/android/view/MotionEvent.html中的MotionEvent。
您可以在e1方法上使用作为e2和e2接收的两个事件,并计算与e1.getX()、e2.getX()、e1.getY()、e2.getY()的坐标差异。有了这个,您就可以在翻译中使用dx和dy (dx,dy)。
因为放纵看起来更像是一种动态的姿态,你可以决定抛出意味着一个放大的运动,并对dx和dy应用一个放大因子,这样当用户滚动时,他们得到了一个精确的运动,但是在fling时,实际的动作被放大了。
如果此因素取决于速度,则每个用户输入都有一个自定义响应。
(另一个不同的事情是动画的结果,我想这将取决于其他事情)。
举个例子,如果是我的话,我可以试试:
https://stackoverflow.com/questions/11839692
复制相似问题