2014-03-05 26 views
0

我想在我的应用程序上有两个onTouchEvents。一个事件只能在屏幕的上半部分工作,另一个事件只能在屏幕的下半部分工作。这可能吗?有onTouchEvent只能工作在下半部去屏幕

//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

但是如何将每个触摸事件设置为一个视图? – user3317823

+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 
} 

这是我只是假设你只使用单查看...

-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来完成此操作,但可以自由选择您自己的。