【问题标题】:Difference between OnTouch and OnClick AndroidOnTouch 和 OnClick Android 的区别
【发布时间】:2012-02-25 17:14:31
【问题描述】:

OnTouchListener 和 OnClickListener 有什么区别吗?我不是从编程的角度问,而是从用户体验的角度问。

哪个更好用?

我们需要同时实现吗?

【问题讨论】:

    标签: android


    【解决方案1】:

    哪个更好用?

    这真的取决于您的要求。

    onTouch 为您提供运动事件。因此,您可以做很多花哨的事情,因为它可以帮助您分离运动状态。仅举几例:

    • ACTION_UP
    • ACTION_DOWN
    • ACTION_MOVE

    这些是我们通常实现的常用操作来获得期望的结果,例如在屏幕上拖动视图。

    另一方面,onClick 并没有为您提供太多信息,除了用户交互的视图。 onClick是一个完整的事件,包括聚焦、按下和释放。因此,您几乎无法控制它。一方面是实现起来非常简单。

    我们需要同时实现吗?

    除非您想惹恼您的用户,否则没有必要。如果您只想要简单的点击事件,请选择onClick。如果您想要的不仅仅是点击,请转到onTouch。两者都做会使过程复杂化。

    从用户的角度来看,如果你仔细实现onTouch 看起来像onClick 是不明显的。

    【讨论】:

    • 如果您需要一些控制,请选择 onTouch。在大多数情况下,onClick 都可以。请参阅 PH7 的答案。
    • 我仍在尝试找出使用哪个。如果我有 4 个视图,其中 3 个需要单击和滑动,而第 4 个只需要单击。我知道我只能将 onTouch 用作前 3 个视图的点击或滑动,但第 4 个视图呢?我应该为一个视图实现 onClick 还是只使用 onTouch 因为它已经被调用了..?
    • 应该注意可能需要使用onTouch来达到某些效果,在这种情况下用户的观点是该死的。 FE,如果你想阻止软键盘显示,那么你可以提供你自己的,它必须通过onTouch。 TIL onClick 不会这样做。
    【解决方案2】:

    “触摸”事件是指有人将手指放在屏幕上。它在手指移动、向下、拖动和向上的整个过程中被调用。 “点击”甚至不需要来自屏幕。可能是有人按了回车键。

    当您想从屏幕上的某人手指接收事件时,请使用 OnTouchListener。

    当您想要检测点击时使用OnClickListener。

    【讨论】:

    • 我看到一些开发者在按钮上使用了触摸事件,这是什么原因呢?我还没有在手机上测试过,但是有什么即兴表演吗?
    • @NixitPatel 没有看到他们的来源就没有好的理由。
    • 是的,但现在我找到了答案……在你们和一些粒子方法的帮助下。不用担心,谢谢询问
    【解决方案3】:
    • onClickListener 用于任何视图的点击事件,例如:按钮、ImageButton 的点击事件。

    • onTouchListener 在您想要实现 Touch 类型的功能时使用,例如,如果您想要获取您触摸的屏幕坐标。

    来自官方文档,两者的定义是:

    • onClickListner:点击视图时调用回调的接口定义。
    • onTouchListener:当触摸事件被调度到这个视图时,回调的接口定义。回调将在触摸事件传递给视图之前被调用。

    【讨论】:

    • 我看到一些开发人员使用按钮的触摸事件是什么原因?我还没有在手机上测试过,但是有什么即兴表演吗?
    【解决方案4】:

    使用 ontouch 事件而不是 onclick 事件的一个很好的理由是在用户点击时获得更快的响应。 onclick 事件在响应和执行所需操作时遇到延迟。 ontouch 事件更适合交付高性能的移动网络应用。

    【讨论】:

      【解决方案5】:

      OnClickListener - 用于基本目的,当我们只需要用户点击时,即点击按钮,屏幕上没有拖动或手势

      OnTouchListener 基本上是一个比 OnClickListener 更精细的控件。它对屏幕上的按下/释放执行和操作它允许用户在屏幕上组合移动、向下触摸、向上触摸、手指拖动或任何移动手势

      【讨论】:

        【解决方案6】:

        更喜欢使用 onTouch。给你一个例子: 当您在其中有一个 ViewPager 和一个 TextView 时。 如果在 textView 上实现 setOnClickListener,则在 TextView 上触摸/滑动时将无法滑动 ViewPager

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多