判斷雙擊
1.要求必須在一個時間間隔內有兩個單擊的點擊事件,
2.必須要能夠識別出來,是單擊還是雙擊
問:點擊跟觸摸的區別是什麼?
點擊:動作的組合,按下-停留一段時間-離開
觸摸:只要按下,或者摸到,或者離開都是觸摸事件
注意:如果點擊事件跟觸摸事件同時存在的話,觸摸事件不要返回true要返回false因爲如果觸摸事件把事件消費掉的話那麼點擊事件就相應不到了,一個組件同時註冊了點擊跟觸摸的事件,點擊的事件會自動把事件消費掉,那麼觸摸事件就能循環掉用了
注意:iv_dragview_location.layout(l,t.r,b);這個更新當前的位置,只有在當前控件被完全渲染出來的時候執行纔有用,如果控件還沒有被完全渲染出來執行這個方法更新控件位置是沒有用的,在oncreate方法裏面的控件的位置跟大小隻會讀取xml佈局文件的位置,使用layout()方法是沒用的,所以我們可以在加載佈局文件時設置組件在佈局文件中位置的信息
ReletiveLayout.LayoutParams parsms = (LayoutParams)iv_dragview_location.getLayoutparams();
params.leftMargin = lastx;//距窗體左邊的距離
params.topMargin = lasty;//距窗體上邊的距離
iv_dragview_location.setLayoutParams(params);
上面的操作是在佈局渲染的第一個階段進行的
上面的方法還有一個問題就是移出窗體後,再顯示界面會縮小,因爲進行界面顯示時系統會盡量去顯示整個控件,所以就會縮小控件以顯示完整控件
解決方法:可以用判斷上下左右跟窗體的距離如果超過就直接break不執行
在WindowManager.LayoutParams這個對象中還一個gravity()的方法,這個方法是指定當前的控件的重心:例如params.gravity = Gravity.TOP | Gravity.left;//指定當前的控件是以屏幕的左上角對其