標籤:
大家好,關於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 Mercury11 */12 public class GameActivity extends Activity {13 GameActivityHelper helper;14 private GestureDetector gd;15 @Override16 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 @Override24 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的一些功能的
關於android 雙擊事件