Gau*_*tam 6 android gesture onfling android-canvas
我有通常的手势检测器来检测fling,它是一个实例属性 SurfaceView
GestureDetector flingDetector = new GestureDetector(getContext(),new SimpleOnGestureListener() {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
// Fling implementation
return true;
}
});
Run Code Online (Sandbox Code Playgroud)
我正在绘制很多复杂的东西canvas,我有一个translate(dx,dy) 与之配合使用的方法onScroll.
所以我的问题是如何使用该translate方法实现fling ?
关于检测fling似乎有很多问题,我的问题是实现它.
我不确定这会回答你的问题,我会试一试。
检查http://developer.android.com/reference/android/view/MotionEvent.html的 MotionEvent。
您可以在 onFling 方法上使用作为 e1 和 e2 接收的两个事件,并使用 e1.getX()、e2.getX()、e1.getY()、e2.getY()...计算坐标差。你可以将 dx 和 dy 与 translate(dx,dy) 一起使用。
由于fling 看起来更像是一种动态手势,您可以确定fling 意味着更大的运动,并对dx 和dy 应用放大系数,以便当用户滚动时,他们获得精确的运动,但在fling 时,实际运动被放大。
如果此因素取决于速度,则您对每个用户输入都有一个自定义响应。
(另一件事是动画结果,我想这将取决于其他事情)。
如果是我,我可能会尝试的一个例子:
用户甩动:
真实运动:dx=(e2.getX()-e1.getX()。dy = (e2.getY()-e1.getY()。甩动因子:(自定义实现)。修改后的运动:dxModified = dx *velocityX*F.dyModified = dy*velocityY*F. 最后:translate (dxModified,dyModified)
希望这在某种程度上有所帮助。
编辑:我没有意识到这个问题是从 2012 年开始的,希望这会对某人有所帮助。无论如何,知道最终实现会很好!
| 归档时间: |
|
| 查看次数: |
931 次 |
| 最近记录: |