我嘗試中斷我爲ImageView聲明的setOnTouchListener。 重點是停止監聽器並對其進行一種「重置」,並且在我的ImaeView佈局上,當用戶手指接近屏幕頂部時。在移動事件期間中斷SetOnTouchListener
我的步驟是: - >創建OnTouchListener - >商店手指位置 - >如果手指靠近屏幕(100pixels)的頂部,重置ImageView的佈局爲默認的活動佈局xml文件,並中斷Listener。 - >要重複使用OnTouchListener,用戶必須放下手指。
我的代碼是這樣的:
private void readyDeck() {
// TODO Auto-generated method stub
backCard = (ImageView)findViewById(R.id.leader_backCardImg);
backCard.setVisibility(View.VISIBLE);
backCard.setAlpha(255);
backCard.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent me) {
int eid = me.getAction();
switch(eid){
case MotionEvent.ACTION_MOVE:
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
RelativeLayout.LayoutParams mParams = (RelativeLayout.LayoutParams) backCard.getLayoutParams();
int y = (int) me.getRawY();
mParams.topMargin = y-height+(backCard.getHeight()/(1+(1/2)));
backCard.setLayoutParams(mParams);
int limit = backCard.getHeight();
if(y > limit){
mParams.topMargin = limit;
backCard.setLayoutParams(mParams);
}
else if(y < 255){
backCard.setAlpha(y);
if(y < 100){
backCard.setVisibility(View.GONE);
backCard.setOnTouchListener(null);
sendData();
break;
}
}
break;
default:
break;
}
return true;
}
});
}
的發送數據()方法重置聽衆,但如果我的代碼就像這樣:
public void sendData(){
readyDeck();
}
手指的位置總是存儲和使用即使我們沒有把它放在屏幕之外。
你可以看到它通過添加一些操作中的SendData()方法,如刪除一個ArrayList的一個隨機項,這裏的logcat的:
12-13 08:01:06.400: I/System.out(17171): s4 removed.New Size : 51
12-13 08:01:06.460: I/System.out(17171): h6 removed.New Size : 50
12-13 08:01:06.520: I/System.out(17171): h1 removed.New Size : 49
12-13 08:01:06.560: I/System.out(17171): c1 removed.New Size : 48
12-13 08:01:06.605: I/System.out(17171): hk removed.New Size : 47
12-13 08:01:06.630: I/System.out(17171): d9 removed.New Size : 46
12-13 08:01:06.655: I/System.out(17171): d2 removed.New Size : 45
12-13 08:01:06.695: I/System.out(17171): h2 removed.New Size : 44
12-13 08:01:06.730: I/System.out(17171): d8 removed.New Size : 43
12-13 08:01:06.760: I/System.out(17171): s10 removed.New Size : 42
12-13 08:01:06.800: I/System.out(17171): h7 removed.New Size : 41
12-13 08:01:06.830: I/System.out(17171): d6 removed.New Size : 40
12-13 08:01:06.850: I/System.out(17171): h9 removed.New Size : 39
12-13 08:01:06.900: I/System.out(17171): s6 removed.New Size : 38
12-13 08:01:07.250: I/System.out(17171): c4 removed.New Size : 37
12-13 08:01:07.275: I/System.out(17171): d3 removed.New Size : 36
12-13 08:01:07.300: I/System.out(17171): cv removed.New Size : 35
我們可以看到,該方法不會停止監聽器,因爲在decalre之後它是空的,監聽器再次被加載了一個可以調用的OnTouch()。
你有一個方法來中斷偵聽器嗎?更重要的是,重置我的ImageView的佈局?謝謝 !
你的問題很混亂..你能否重新說出它..一步一步地告訴你想要什麼和錯在哪裏? –
我的步驟如下: - >創建OnTouchListener - >存儲手指位置 - >如果手指靠近屏幕的頂部(100像素),請在活動佈局xml文件中將ImageView的佈局重置爲默認值,並將中斷聽衆。 - >要重複使用OnTouchListener,用戶必須放下手指。 謝謝。 – mickaelb91