gpt4 book ai didi

android - Android 中的事件。如何在我的类/对象中捕获事件?

转载 作者:行者123 更新时间:2023-11-30 04:46:36 25 4
gpt4 key购买 nike

我正在尝试创建我的第一个 android 应用程序,但它对我来说太神秘了,所以我要问。

我的程序使用 FrameLayout 和 Circles。当我单击背景时,我希望出现一个新的圆圈。这很容易。在 MainActivity 中,我只是设置了 FrameLayout.setOnTouchListener。没关系。

但我也想在触摸时删除圆圈。我的圈子有更多属性,所以我创建了自己的类并将其命名为 Ball。这个 Ball 类扩展了 View 类并实现了 OnTouchListener。比我添加的方法:

boolean onTouch(View arg0, MotionEvent arg1)

它也有效。但是如果我想在我的程序中捕获这两个事件(FrameLayout.onTouchBall.onTouch),那么只会捕获一个。我点击哪里并不重要。我的程序总是我点击后台的东西。

我不知道该怎么办:(

球是这样添加的(构造函数这样做):

mPaint.setColor(c);
this.x = x;
this.y = y;
this.r = r;

构造函数被调用:

myNewBall = new Ball(x,y,r,c)

然后将球添加到 FrameLayout:

myLayout.addView(currentBall);

你能帮忙吗?

最佳答案

您的 Ball.onTouch() 是否返回 true?如果是这样,您的 Ball 将使用该事件并且 FrameLayout 将不会收到通知。

它应该返回 false 以向框架指示它应该继续调用其他处理程序。但是,这意味着您的 Ball 不会获得与 onTouch 相关的后续事件。

另一种选择是让您的 Ball.onTouch() 额外运行与 FrameLayout.onTouch() 相同的调用(调用通用方法?)。

http://developer.android.com/guide/topics/ui/ui-events.html

onTouch() - This returns a boolean to indicate whether your listener consumes this event. The important thing is that this event can have multiple actions that follow each other. So, if you return false when the down action event is received, you indicate that you have not consumed the event and are also not interested in subsequent actions from this event. Thus, you will not be called for any other actions within the event, such as a finger gesture, or the eventual up action event.

关于android - Android 中的事件。如何在我的类/对象中捕获事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4773264/

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