【问题标题】:Which Android Events do I use for this task?我为这个任务使用了哪些 Android 事件?
【发布时间】:2011-10-23 12:37:05
【问题描述】:

我有一个与鼠标侦听器相关的 Java 类,我想将其转换为我的 Android 应用程序,但找不到必要的事件。

我的 Java 应用使用以下方法:

  • 鼠标点击
  • 鼠标按下
  • 鼠标释放

我想做类似的事情,但不是点击事件而是触摸事件。我遇到了OnTouchListener 并对onTouch 方法进行了覆盖。

mousePressedmouseReleased 的替代品有哪些?


编辑 - (在彼得回复后更新)

下列事件是否正确:

  • ACTION_DOWN : mouseClicked
  • ACTION_MOVE:鼠标按下
  • ACTION_UP : mouseReleased

EDIT - 2 示例来源

我的活动目前没有任何OnTouchListener,因为我希望我可以将所有触摸逻辑保留在我的视图中。

查看:

/*Inside my View - Is it proper to do onTouch logic here? 
                   Or should I be doing this from the Activity?*/

public class myView {

    public boolean onTouch(MotionEvent event) {

        switch(event.getAction() & MotionEvent.ACTION_MASK) {
            case MotionEvent.ACTION_DOWN:
                //draw arrow when screen is simply touched
                break;
            case MotionEvent.ACTION_MOVE:
                //Do Logic
                break;
            case MotionEvent.ACTION_UP:
                //Do Logic
                break;        

        }

    }
}

我在 View 中执行逻辑的原因是因为我想直接获取一些变量,而不是创建多个额外的 get 方法。

我可以这样做吗?还是我必须在我的 Activity 中重写 onTouch 方法并在那里执行逻辑?

【问题讨论】:

    标签: java android mouse listener


    【解决方案1】:

    如果您想注册对 View 的点击,请实现并向其添加 OnClickListener。 当您想要注册触摸事件时,您需要实现 OnTouchListener 并将其添加到 View

    【讨论】:

    • 正确,这就是我正在做的。但是,我正在寻找与 Java 中的三种方法最接近的特定事件。如果ACTION_DOWN 等于mousePressed,则等于mouseClicked。据我了解,mouseClicked 将只是点击设备屏幕,mousePressed 将直到屏幕被释放(以防用户移动触摸)。 ACTION_DOWN 是否同时代表 mouseClickedmousePressed
    • 另外,您是否建议在视图中创建onTouch 方法?还是从 Activity 覆盖它?
    • ACTION_DOWN 不考虑点击和按下,而是考虑mousePressedOnClickListenermouseClicked 所代表的。虽然您可以使用 ACTION_DOWN ACTION_UP 和一些时间阈值和屏幕坐标的组合来创建自己的点击事件。
    • 我按照指南进行了尝试。但是,在模拟器中,如果我用鼠标单击,它会与触摸相同吗?如果是这样,我的onTouch 不起作用。我目前将它作为我的视图中的一种方法。我需要从我的 Activity 中设置它吗?
    • 我认为现在是时候看看您的 Listener 实现以及您在代码中使用它们的位置了。
    【解决方案2】:

    所有触摸事件(向下、向上、移动、多点触控)都通过“onTouch”处理。看这个教程:http://www.zdnet.com/blog/burnette/how-to-use-multi-touch-in-android-2-part-3-understanding-touch-events/1775

    【讨论】:

    • 具有讽刺意味的是,我正在阅读那篇文章时注意到我有关于 SO 的回复。所以如果我理解正确的话,ACTION_DOWN相当于mouseClickedACTION_MOVE相当于mousePressedACTION_UP相当于mouseReleased
    • 其实ACTION_DOWN等于mousePressedACTION_MOVE等于拖拽。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-05
    • 2011-04-25
    相关资源
    最近更新 更多