【问题标题】:How to drag a view smoothly in android如何在android中顺利拖动视图
【发布时间】:2015-10-10 04:32:47
【问题描述】:

我希望能够以平滑的方式水平拖动视图。我使用以下代码

public boolean onTouch(View v, MotionEvent event) {
    switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
        {
           \\setup before dragging
        }
        break;
        case MotionEvent.ACTION_MOVE:
        {
             v.setX((dx += speedFactor));
        }
        break;
        case MotionEvent.ACTION_UP:
        {
            \\setup after dragging
        }
        return true;
    }
    return true;
}

当我使用

如何拖得非常流畅,速度快一点?

【问题讨论】:

    标签: android drag


    【解决方案1】:

    通常,您没有恒定的“speedFactor”,因为拖动意味着您希望将视图放在手指下方,因此它的移动速度与您的手指一样快。

    您在开始时存储初始触摸位置(ACTION_DOWN),并根据 ACTION_MOVE 事件期间当前位置和初始位置的差异来更改视图的位置。

    移动的流畅程度取决于设备的计算能力。

    【讨论】:

    • 我不想让视图跟随我的手指,因为视图水平填充屏幕。我自己的问题是使拖动看起来尽可能平滑。
    • 如果视图水平填满屏幕,那么什么在移动?
    • 通知抽屉之类的东西?它仍在拖动,因此上述内容应适用。我可以想到两种解决方案:要么创建自定义视图并手动实现绘图和触摸处理,要么动态更改布局参数(this post 可能会有所帮助)。显然,您已经自己实施了一些解决方案,因为您的问题不是“如何”而是平滑度。所以你应该在问题中发布你的代码。
    • 我自己实现了自定义视图的拖拽,即使在低端设备上也相当流畅。
    • 我有一个课程太复杂,无法在此处发布。要开始使用自定义绘图,请查看documentation。您必须扩展 View 类并重写 onDraw() 以进行渲染以及 onTouchEvent() 以处理触摸输入。我不能肯定地说它比你做的更顺畅,但我想不出更快的替代方案。
    猜你喜欢
    • 2012-10-26
    • 1970-01-01
    • 1970-01-01
    • 2011-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-22
    相关资源
    最近更新 更多