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 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>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