我想在我的应用上安装两个onTouchEvents。一个事件仅适用于屏幕的上半部分,另一个事件仅适用于屏幕的下半部分。这可能吗?
//top
public boolean onTouchEvent(MotionEvent event){
this.mDetector.onTouchEvent(event);
// my logic
return super.onTouchEvent(event);
}
//bottom
public boolean onTouchEvent(MotionEvent event){
this.mDetector.onTouchEvent(event);
// my logic
return super.onTouchEvent(event);
}
答案 0 :(得分:0)
由于唯一提供的解决方案要求您使用多个视图,我想我会为包含整个屏幕的单个视图提供一个:
public boolean onTouch(View view, MotionEvent event) {
if(event.getY() < activity.getResources().getDisplayMetrics().heightPixels / 2){
//top
}
else{
//bottom
}
return true; //handle the touch
}
这就是我假设你只使用一个View ......
答案 1 :(得分:-1)
这样的事情:
topLayout = (LinearLayout) findViewById(R.id.topLayout);
bottomLayout = (LinearLayout) findViewById(R.id.bottomLayout);
topLayout.setOnTouchListener(new View.OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
Log.d(TAG, "top was touched");
return false;
}
});
bottomLayout.setOnTouchListener(new View.OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
Log.d(TAG, "bottom was touched");
return false;
}
});
或者您可以将这些匿名类移动到各自的类中并使用它们:
topLayout = (LinearLayout) findViewById(R.id.topLayout);
bottomLayout = (LinearLayout) findViewById(R.id.bottomLayout);
topLayout.setOnTouchListener(new TopOnTouchListener());
bottomLayout.setOnTouchListener(new BottomOnTouchListener());
这假设你有一些视图,它跨越了布局的顶部和底部。在上面的示例中,我使用两个LinearLayout
来执行此操作,但您可以自由选择。