如果你想要兩個佈局,一個活的和一個死一個,你應該添加自己View.OnTouchListener
他們每個人。
我做了一個例子,這裏是活動:
public class MainActivity extends ActionBarActivity {
TextView text;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout linearLayoutDead = (LinearLayout) findViewById(R.id.dead);
linearLayoutDead.setOnTouchListener(onTouchDeadListener);
LinearLayout linearLayoutLive = (LinearLayout) findViewById(R.id.live);
linearLayoutLive.setOnTouchListener(onTouchLiveListener);
text = (TextView) findViewById(R.id.textView);
}
private View.OnTouchListener onTouchDeadListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
text.setText(motionEvent.toString());
return false;
}
};
private View.OnTouchListener onTouchLiveListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
text.setText(motionEvent.toString());
return true;
}
};
}
而且佈局:
<?xml version="1.0" encoding="utf-8"?>
我們覆蓋OnTouch
方法,你會發現,當我們在「死區」單個或多個觸摸,我們得到的初步反應,但沒有進一步。 但是,當我們在「活區」中進行第一次觸摸並且在死區中進行第二次觸摸時,情況如何?
對於這種情況,你應該添加一個新的條件,您OnTouch
方法,像這樣:
private View.OnTouchListener onTouchLiveListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
if(motionEvent.getPointerCount()>1){
if(motionEvent.getY(1) > someNumber){
//Case when we touch the dead zone, TODO do some ...
}
}
text.setText(motionEvent.toString());
return true;
}
};
因此,在這種特殊情況下,我們可以檢查當觸摸「活區」下發生,根本不理會它或實現我們想要的任何行爲。
希望這可能會有所幫助。 關注 何塞
對不起這是我早期的Android嘗試。我不再與這個項目有關(實際上近兩年)。我記得我實施了一種相同的解決方案。我的觸摸屏處理過濾掉了區域內的水龍頭,並移除了額外的座標。在成功的過程中,我成功地過濾了他們想要的東西,但項目本身早已完成。 – OGP 2015-02-24 13:42:25