Android 如何使用俯视图获得按钮的接触位置?
我有一个自定义视图,它继承自Android 如何使用俯视图获得按钮的接触位置?,android,view,gestureoverlayview,Android,View,Gestureoverlayview,我有一个自定义视图,它继承自GestureOverlayView,我想记录传递到此视图的所有MotionEvent 它工作得很好,但是当我的手势在交互式布局小部件上启动时(按钮,文本编辑…),我无法获得运动事件) 有没有办法绕过这种行为?既然你没有提到你的任何被剪掉的代码,我提出两种不同的解决方案,希望能对你有所帮助 一种方法是将小部件传递给asViewto方法并调用OnTouchListener button.setOnTouchListener(new OnTouchListener() {
GestureOverlayView
,我想记录传递到此视图的所有MotionEvent
它工作得很好,但是当我的手势在交互式布局小部件上启动时(按钮
,文本编辑
…),我无法获得运动事件
)
有没有办法绕过这种行为?既然你没有提到你的任何被剪掉的代码,我提出两种不同的解决方案,希望能对你有所帮助 一种方法是将小部件传递给as
View
to方法并调用OnTouchListener
button.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
break;
}
case MotionEvent.ACTION_UP: {
break;
}
case MotionEvent.ACTION_CANCEL:{
break;
}
}
return false;
}
});
另一种方法是使用自定义构造函数手动创建MotionEvent
像这样:
static public CustomMotionEvent obtain(long downTime, long eventTime, int action,
float x, float y, int State) {
}
根据API
创建新的MotionEvent,填充基本运动的子集
价值观此处未指定的有:设备id(始终为0)、压力
和尺寸(始终为1)、x和y精度(始终为1)以及边缘间隙
(始终为0)
您是否使用自定义控件类来编辑按钮和文本?不,这是基本的Android控件。谢谢,但我的目标是不更改控件的代码。我正在开发一个库,它将提供我的自定义视图和后台服务。我不能简单地修改我的按钮代码,这是一个挑战。