【发布时间】:2013-05-20 10:23:26
【问题描述】:
是否可以通过坐标或视图元素模拟“点击”(触摸屏)?
【问题讨论】:
-
这个“模拟”会产生什么?
-
例如:如果我的应用是计算器我要“编程”,你按“2”“+”“3”和“=”,即模拟按下这4个按钮。也就是说,用户会看到没有按下任何东西,比如单独按下“2”按钮,然后按下“+”...
标签: android click touchscreen
是否可以通过坐标或视图元素模拟“点击”(触摸屏)?
【问题讨论】:
标签: android click touchscreen
可以在安卓屏幕上模拟触摸事件。如果您有视图的坐标,则可以使用 adb shell 命令生成触摸事件。例如-
adb shell 输入 tap x y
其中 x 和 y 是您的坐标。您可以从终端运行此命令。如果要从 android 代码运行命令,请使用“/system/bin/ input tap x y”并使用 Runtime.getRuntime() 方法运行此命令。详情请回复,乐于助人! :)
【讨论】:
作为azdev suggests,试试这个:
view.setOnTouchListener(new OnTouchListener()
{
public boolean onTouch(View v, MotionEvent event)
{
Toast toast = Toast.makeText(
getApplicationContext(),
"View touched",
Toast.LENGTH_LONG
);
toast.show();
return true;
}
});
// Obtain MotionEvent object
long downTime = SystemClock.uptimeMillis();
long eventTime = SystemClock.uptimeMillis() + 100;
float x = 0.0f;
float y = 0.0f;
// List of meta states found here: developer.android.com/reference/android/view/KeyEvent.html#getMetaState()
int metaState = 0;
MotionEvent motionEvent = MotionEvent.obtain(
downTime,
eventTime,
MotionEvent.ACTION_UP,
x,
y,
metaState
);
// Dispatch touch event to view
view.dispatchTouchEvent(motionEvent);
【讨论】:
大概你有一些你想通过点击来调用的东西。所以......如果它是一个实际的按钮,您可以在其上调用performClick()。如果它不是按钮,那么只要满足您期望的条件,就调用您希望执行的任何方法。如果您提供更多关于您实际尝试做的事情的详细信息,这可能会有所帮助。
【讨论】:
在视图上,是的。通过坐标,一个 Java 机器人,我不知道。
例如:
Button buttonFoo = (Button)findViewById(R.id.button_foo);
buttonFoo.performClick();
【讨论】: