gpt4 book ai didi

java - 使用多个 View /布局时在 Android 中处理触摸事件

转载 作者:行者123 更新时间:2023-11-29 05:56:24 26 4
gpt4 key购买 nike

我是 Android 编程的新手,正在尝试了解嵌套 View 的触摸事件。首先,这是我的应用程序的描述:

我有一个通过 GUI 编辑器添加的相对布局。一切都是默认的。我还创建了一个名为 ClipGrid 的类,它扩展了 ScrollView。嵌套在其中,我制作了一个 Horizo​​ntalScrollView。在里面,我做了一个 TableLayout 和它的行。这些行包含按钮。

最终结果是一个按钮网格。它一次显示 4x4,但可以向任一方向滚动以显示其他按钮。

我将它从我的主要 Activity 中调用到屏幕上,如下所示:ClipGrid clip_grid = new ClipGrid(this);setContentView(clip_grid);

我这样做只是为了测试目的,我想稍后当我想将其他 View 添加到我的相对布局时我将不得不更改它。但我认为它可能会对触摸事件产生影响。

最后,我想检测网格何时移动,并在用户抬起手指时将新可见的 4x4 按钮网格捕捉到布局的边缘。我只是不确定如何着手实现这一点,我们将不胜感激。谢谢。

最佳答案

触摸事件的处理方式是一种级联效应,从顶层 View 开始,向下延伸到较低的嵌套 View 。基本上,Android 会将事件传递给每个 View ,直到返回 true

实现 ViewonTouchEvent 事件的一般方法是:

@Override
public boolean onTouchEvent(MotionEvent event) {
boolean actionHandled = false;
final int action = event.getAction();

switch(action & MotionEventCompat.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
// user first touches view with pointer
break;
case MotionEvent.ACTION_MOVE:
// user is still touching view and moving pointer around
break;
case MotionEvent.ACTION_UP:
// user lifts pointer
break;
}

// if the action was not handled by this touch, send it to other views
if (!actionHandled)
actionHandled |= super.onTouch(v, MotionEvent.event);

return actionHandled;
}

关于java - 使用多个 View /布局时在 Android 中处理触摸事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11934932/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com