有onTouchEvent只能在下半部分工作到屏幕上

时间:2014-03-05 00:25:09

标签: java android

我想在我的应用上安装两个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);
}

2 个答案:

答案 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来执行此操作,但您可以自由选择。