首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >android画布上的Fling实现

android画布上的Fling实现
EN

Stack Overflow用户
提问于 2012-08-07 05:21:25
回答 1查看 1.1K关注 0票数 7

我有一个常用的手势检测器来检测for,它是SurfaceView的一个实例属性。

代码语言:javascript
复制
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?

似乎有很多问题要发现,我的问题是如何实现它。

EN

回答 1

Stack Overflow用户

发布于 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时,实际的动作被放大了。

如果此因素取决于速度,则每个用户输入都有一个自定义响应。

(另一个不同的事情是动画的结果,我想这将取决于其他事情)。

举个例子,如果是我的话,我可以试试:

  • 用户滚动软:移动是dx,dy。翻译(dx,dy)。
  • 用户投注: 真实动作: dx=(e2.getX()-e1.getX() )。dy = (e2.getY()-e1.getY() )。因素:(定制实施)。修改后的运动: dxModified = dx*velocityX*F. dyModified = dy*velocityY*F.最后:翻译(dxModified,dyModified) 希望这在一定程度上有所帮助。 编辑:我没有意识到这个问题是从2012年开始的,希望这能帮助到某个人一些时间。很高兴知道最终的实施情况!
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11839692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档