问题标签 [android-event]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
10436 浏览

android - View.onTouchEvent 只注册 ACTION_DOWN 事件

我正在实现一个自定义TextView,并且我想在触摸视图时执行一些操作。我认为该onTouchEvent方法可以让我对视图进行全方位的触摸,而无需使用setOnTouchListener(我试图在视图内而不是在活动中完成所有工作,因此它是可移植的),但唯一注册的触摸事件是ACTION_DOWN. 如果我OnTouchListener使用它在活动中设置一个,我会得到所有的触摸事件,但onTouchEvent没有。

任何人都知道为什么会这样,或者任何人都可以为我提供一个不涉及使用的解决方案setOnTouchListener(这会阻止实施活动设置自己的侦听器)?

0 投票
2 回答
2393 浏览

android - 如果子视图返回 false,则让父视图假设 MotionEvents

我有一个应用程序需要以不寻常的方式处理事件。

对于我的问题,让我先解释一个简单的案例,即当前Android的事件处理系统不适合我。

假设我有一个 FrameLayout(从现在开始我将调用 ViewSwiper),它添加的所有视图都是 MATCH_PARENT X MATCH_PARENT(我将调用 PageView),它通过翻译实际视图来处理事件并根据方向替换它的移动。这个组件我已经完成并且可以正常工作(使用动画滑动视图)。

但问题出在我在它上面添加的那个 PageView 上,如果 ImageViews 在它的 onTouchEvent 上返回 false,ViewSwiper 将处理这些事件并让另一个 PageView 进入屏幕,但是如果我在上面添加一个 ScrollView,所有事件将被 Scroll 消耗,ViewSwiper 将没有机会替换 PageView。

所以我发现返回 false onTouchEvent 的 ScrollView 父级可以假定它是事件,我编写了 ScrollView 的这个子类来测试它:

但是返回 false 会使任何进一步的事件被分派给父级,但是我需要这些事件来进行垂直滚动,所以我的想法是只有在用户移动水平时才返回 false,这就是我的代码的样子:

PS:MovementTracker 将在某些事件后在 track() 上返回 true,并告知用户正在移动的方向。

但在这种情况下,ScrollView 会继续接收事件,因为它在第一个事件上返回 true。

关于如何在 ViewSwiper 的孩子返回 false 时处理事件的任何想法(即使返回了一些 true )。

PS:如果需要,我可以提供更多信息,并接受不同的解决方案。

根据答案,我尝试了以下方法:

依然没有。

0 投票
1 回答
3462 浏览

android - 为什么从事件调用时 view.startAnimation(animation) 不起作用?

我创建了一个自定义视图,它使用一个虚拟的 TranslateAnimation 来设置一些布局属性。我使用插值器计算高度,并将其应用于 TranslateAnimation 的 applyTransformation() 方法内的视图。

如果我从我的活动中触发动画,这工作得很好。

当我尝试使用触摸事件做同样的事情时,什么也没有发生。

我的扩展方法如下所示:

创建我的活动后,Logcat 显示“onCreate()” 在我的触摸事件中 Logcat 显示“onTouch()” 在 expand() 方法中 Logcat 显示“Expand!” - 从活动或事件中调用。

在方法 applyTransformation() Logcat 中显示“applyTransformation()” - 但是!仅当从 onCreate() 调用 expand() 时。尝试从事件启动动画的任何尝试都失败了。

这在我看来像是某种线程问题。这可能吗?有什么我想念的吗?据我从其他帖子中看到,从事件开始动画应该没有任何问题......

提前致谢!

0 投票
2 回答
8432 浏览

android - onTouchEvent executes twice

Can anyone explain to me why is the onTouchEvent executed twice and how can I set it to run only once? I couldn't find an explanation. Thanks.

0 投票
1 回答
1557 浏览

android - 滚动完成时的事件

在 ScrollView(垂直或水平)中如何知道滚动动画何时完成?

我用 smoothScrollBy 或 smoothScrollTo 开始动画

0 投票
1 回答
556 浏览

android - 如何在android中暂停移动的对象

我正在开发一个安卓游戏。在此我在屏幕上有两个动态图像,可以拖动这些图像,但我进一步的要求是在我触摸图像时暂停图像。我没有找到任何暂停图像的事件,而是在图像暂停的相同位置重新开始移动。

任何人都可以告诉我解决方案。谢谢。

我正在使用 onTouch 来拖动和移动图像。

0 投票
2 回答
1491 浏览

android - 一种等待传感器数据的方法

我有一个类在启动时启动传感器侦听器。当触发事件时,此侦听器将最新的传感器值写入变量。该类继续执行一些逻辑,并且在某些时候,将检查此变量并根据值继续。

我的问题是,不能保证读取变量时有任何值,因为 Android 传感器侦听器仅在传感器值更改时触发事件(并且不一定在它们启动后立即触发事件)。

因此,我需要我的应用程序等待事件触发,以便它有数据可以工作(最好是超时,以确保它不会无限期地等待)。

我的问题是,实现这种等待的最佳方式是什么?我是否应该有一个处理程序在继续之前每 X 毫秒检查一个值?我是否应该在侦听器和处理程序之间传递某种消息来告诉它何时写入数据,并且它现在可以恢复?还有其他更好的选择吗?

编辑:我应该指出,类逻辑在 UI 线程上执行。

0 投票
3 回答
2043 浏览

android - 如何从 B 活动通知 A 列表数据已更改?

我有一个活动ItemList.java。当用户点击项目时,它会启动新的活动,比如说ItemDetailActivity.java.

我想要做的是,当用户按下 ItemDetailActivity.java 上的按钮时,它应该告诉ItemList.java刷新列表项。我知道这myListAdapter.notifyDataSetChanged()将刷新列表。但是怎么ItemList.java会知道何时更改数据。

我不想使用静态方法或变量。我知道如何使用处理程序,但不知道如何将处理程序传递给其他活动。

我在想的是创建自己的事件/监听器并与列表关联,所以当事件触发时,然后更改列表。广播接收器会帮助我吗?

0 投票
4 回答
1333 浏览

android - 什么 Android 事件只被调用一次,直到 Activity 被销毁?

我正在寻找一个答案(但我可能问错了问题)

问题 - 任何事件是否只被调用一次 TOTAL 直到活动被销毁?

我问是因为当我的用户将手机旋转到横向时,oncreate 和 onstart 都会被调用,从而导致重新加载。

我正在寻找一个我可以将行为放入其中只会运行 1x 的事件(直到活动被终止)

先感谢您

0 投票
2 回答
1224 浏览

android - 后退按钮重新打开 Activity

有几次用户在我的应用程序上按下后退按钮,不幸的是他没有退出;活动幻灯片,但后面有一个完全相同的......这怎么可能?我怎么能避免呢?我应该为 onBackPressed() 方法实现一些东西吗?感谢您的建议。