大家好,關於android雙擊事件 我相信大家都知道 API中是有個方法的,但是必須在Activity中在能使用。
對於到底用不用android 雙擊事件API各有各的看法。
在Activity中使用API
優點:省時省力,別人寫的東西,直接用就行了,不擔心有BUG
缺點:代碼寫在activity中 總感覺有些亂。
自己寫個onDoubleClick方法
優點:自己寫的東西,好控制,靈活性強,想放哪放哪。
缺點:需要消耗點時間,檢查BUG之類的。
好了,最近我也遇到了需要處理雙擊事件的問題,我是這樣處理的
我用了android的API 但是我也很好整理。
上代碼吧,只有2個類 一個當然是Activity 另一個就是OnDoubleClick事件處理類
1 import android.app.Activity;
2 import android.os.Bundle;
3 import android.view.GestureDetector;
4 import android.view.MotionEvent;
5 import android.view.View.OnTouchListener;
6
7 /**
8 *
9 * <p>class instruction:內部介面 核心Activity</p>
10 * create in 2011-12-2 @author Mercury
11 */
12 public class GameActivity extends Activity {
13 GameActivityHelper helper;
14 private GestureDetector gd;
15 @Override
16 public void onCreate(Bundle savedInstanceState) {
17 super.onCreate(savedInstanceState);
18 helper=new GameActivityHelper(this);
19 helper.init();
20 setContentView(helper.getGameView());
21 gd=new GestureDetector(this,new OnDoubleClick());
22 }
23 @Override
24 public boolean onTouchEvent(MotionEvent event) {
25 return gd.onTouchEvent(event);
26 }
27 }
1 import android.view.GestureDetector;
2 import android.view.MotionEvent;
3
4 public class OnDoubleClick extends GestureDetector.SimpleOnGestureListener{
5 @Override
6 public boolean onDoubleTap(MotionEvent e) {
7 //TODO
8 return false;
9 }
10 // @Override
11 // public boolean onDoubleTapEvent(MotionEvent e) {
12 // return super.onDoubleTapEvent(e);
13 // }
14 }
代碼也還算整潔。 API中對於雙擊有兩種處理,
一種是雙擊後執行一次:onDoubleTap
一種是雙擊後執行兩次:onDoubleTapEvent
這裡我只需要雙擊後執行一次就行了,那裡注釋掉了
還有需要特別注意的是在自己的Activity中重寫的父類Activity的方法
@Override
public boolean onTouchEvent(MotionEvent event) {
return gd.onTouchEvent(event);
}
這個方法。我在網上看到有很多人在Activity中 實現implements OnTouchListener 後會要求你重寫onTouch方法來實現雙擊。
這完全是誤導人的做法,本人親自試過,雙擊是無效的,普通的點擊還是有效 我是在SDK1.6版本中試的
這是個細節希望大家多注意下。
這裡的onTouchEvent 是Activity中的方法,而不是實現某個介面而來的,這就是為什麼只能在Activity中處理雙擊事件的原因,
如果你需要用androidAPI處理雙擊事件就必須重寫Activity中的onTouchEvent 方法 否則與GestureDetector中有關的方法都無效
onTouch 只要實現了OnTouchListener介面的View或者Activity都必須重寫的方法,他是不能實現GestureDetector的一些功能的