我可能在飞 2021-07-21 20:05 采纳率: 0%
浏览 48

如下代码,当点击button时,事件的流向

代码如下


public class SecondActivity extends AppCompatActivity {

    @Override
    protected void onCreate(@Nullable @org.jetbrains.annotations.Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity);
        findViewById(R.id.button).setOnClickListener(v -> {
            Utils.showToast("Btn Coming.");
        });
    }

    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        findViewById(R.id.container).dispatchTouchEvent(ev);
        return false;
    }
}

xml文件如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginEnd="129dp"
        android:layout_marginBottom="36dp"
        android:text="normal button"
        android:layout_centerHorizontal="true"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent" />
</RelativeLayout>

问题:当点击button时,事件传递的流向?会不会回调OnClickListener()?为什么?

  • 写回答

1条回答 默认 最新

  • 帅次 移动开发领域新星创作者 2021-07-22 16:52
    关注

    点击button>SecondActivity.dispatchTouchEvent(); return false;未拦截触碰事件后,会调用container.dispatchTouchEvent(ev),不用自己写。
    最后会调用button.setOnClickListener()的事件。

     

    更详细的你可以看看事件分发

    Activity.dispatchTouchEvent:DOWN
    container.dispatchTouchEvent:DOWN
    container.onInterceptTouchEvent:DOWN
    button.dispatchTouchEvent:DOWN
    button.onTouchEvent:DOWN
    container.onTouchEvent:DOWN
    Activity.onTouchEvent:DOWN
    这个是按下(DOWN)监听,后面要走一遍抬起(UP),都不拦截、消费

    最后调用:
    button.setOnClickListener()

    相关推荐:https://shuaici.blog.csdn.net/article/details/118526017

    评论

报告相同问题?

问题事件

  • 修改了问题 7月22日
  • 修改了问题 7月21日
  • 修改了问题 7月21日
  • 创建了问题 7月21日

悬赏问题

  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab
  • ¥15 求lingo代码和思路
  • ¥15 公交车和无人机协同运输