在Android游戏开发中,我们可能经常要像PC操作一样在屏幕上双击。对于屏幕双击操作,Android 1.6版本以前并没有提供完善的手势识别类,Android 1.5的SDK中提供了android.view.GestureDetector.OnDoubleTapListener,但经测试无法正常工作,不知是何原因。最终我们的解决方案如下面的代码:

- 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;
 - }
 - }
 - }
 
Copyright © 2009-2022 www.fjjierui.cn 青羊区广皓图文设计工作室(个体工商户)达州站 版权所有 蜀ICP备19037934号