Android游戲開發(fā)之十九:屏幕雙擊事件的捕獲
作者:佚名 
  關(guān)于android雙擊事件 我相信大家都知道API中是有個方法的,但是必須在Activity中在能使用。對于到底用不用android雙擊事件API各有各的看法。在Activity中使用API,省時省力,別人寫的東西,直接用就行了,不擔心有BUG,但是代碼寫在activity中總感覺有些亂;自己寫個onDoubleClick方法,自己寫的東西,好控制,靈活性強,想放哪放哪,但是需要消耗點時間,檢查BUG之類的。
 在Android游戲開發(fā)中,我們可能經(jīng)常要像PC操作一樣在屏幕上雙擊。對于屏幕雙擊操作,Android 1.6版本以前并沒有提供完善的手勢識別類,Android 1.5的SDK中提供了android.view.GestureDetector.OnDoubleTapListener,但經(jīng)測試無法正常工作,不知是何原因。最終我們的解決方案如下面的代碼:
- public class TouchLayout extends RelativeLayout {
 - public Handler doubleTapHandler = null;
 - protected long lastDown = -1;
 - public final static long DOUBLE_TIME = 500;
 - public TouchLayout(Context context) {
 - super(context);
 - }
 - public TouchLayout(Context context, AttributeSet attrs) {
 - super(context, attrs);
 - }
 - public TouchLayout(Context context, AttributeSet attrs, int defStyle) {
 - super(context, attrs, defStyle);
 - }
 - public boolean onTouchEvent(MotionEvent event) {
 - this.handleEvent(event);
 - if (event.getAction() == MotionEvent.ACTION_DOWN) {
 - long nowDown = System.currentTimeMillis();
 - if (nowDown - lastDown < DOUBLE_TIME)
 - {
 - if (doubleTapHandler != null)
 - doubleTapHandler.sendEmptyMessage(-1);
 - } else {
 - lastDown = nowDown;
 - }
 - }
 - return true;
 - }
 - protected void handleEvent(MotionEvent event) {
 - switch (event.getAction()) {
 - case MotionEvent.ACTION_DOWN:
 - //Do sth 這里處理即可
 - break;
 - case MotionEvent.ACTION_UP:
 - //Do sth
 - break;
 - }
 - }
 - }
 
責任編輯:閆佳明 
                    來源:
                    jizhuomi
 














 
 
 

 
 
 
 