關於android 雙擊事件

來源:互聯網
上載者:User

大家好,關於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的一些功能的

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.