我已经尝试了很多类似的问题,并且如果有了概念,我会用最好的理解编写一些代码,但是我的应用程序在注入我自己的应用程序之后仍未能注册触摸事件。
在以下应用程序中,当用户按下VOLUME UP按钮时,将注入位置(finalPosX,finalPosY)
中的触摸事件,并且事件列表器应该能够捕获输入并且应该显示简单的toast
参加活动。
我使用dispatchTouchEvent()
来注入事件但无法捕获ClickListner。
我做错了什么?
ClickListner:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.findViewById(android.R.id.content).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,"ACTION_DOWN",Toast.LENGTH_SHORT).show();
}
});
注入触摸事件:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
switch(keyCode)
{
case KeyEvent.KEYCODE_BACK:
moveTaskToBack(true);
return true;
case KeyEvent.KEYCODE_VOLUME_UP:
MotionEvent motionEvent = MotionEvent.obtain(
SystemClock.uptimeMillis(),
SystemClock.uptimeMillis() + 100,
MotionEvent.ACTION_DOWN,
finalPosX,
finalPosY,
0
);
dispatchTouchEvent(motionEvent);
return true;
}
return false;
}