我想RelativeLayout在不触摸屏幕的情况下执行触摸事件,希望Toast在实际触摸或未触摸时发出消息。请抛出我已经尝试过以下操作,但它似乎不起作用
MotionEvent event = MotionEvent.obtain(downTime, eventTime, action,
x, y, pressure, size,
metaState, xPrecision, yPrecision,
deviceId, edgeFlags);
onTouchEvent(event);
Run Code Online (Sandbox Code Playgroud)
你不应该那样做。如果您确实想以编程方式“触摸”您的视图,则应该将 onTouch 方法中发生的任何事情包装在另一个函数中(不带 MotionEvent 参数),并在您想要触摸您的视图时调用该函数。在没有真正触摸的情况下调用 onTouch 会给你带来负面的风格点
@Override
boolean onTouch(View v, MotionEvent me) {
return action(me.getX(),me.getY());
}
boolean action(int x, int y) {
//do some stuff
}
void somewhereelse() {
//Perform touch action
action(0,0);
}
Run Code Online (Sandbox Code Playgroud)
如果您确实想“调度”触摸事件。你这样做:
View v;
v.dispatchTouchEvent(MotionEvent.obtain(0,0,MotionEvent.ACTION_DOWN, 100,100,0.5f,5,0,1,1,0,0));
Run Code Online (Sandbox Code Playgroud)
这些值非常随机。仅 deviceId=0 表示以编程方式调度 Touch。
| 归档时间: |
|
| 查看次数: |
9882 次 |
| 最近记录: |