加载中…
个人资料
岩岩爸
岩岩爸
  • 博客等级:
  • 博客积分:0
  • 博客访问:53,759
  • 关注人气:9
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

android处理单击双击和滑动事件zz

(2011-04-08 09:09:46)
标签:

it

分类: 手持设备开发
android有处理鼠标动作的GestureDetector,使用起来也挺方便,几个常用事件你都可以找到接口接入处理:

单击、双击(比如双击放大)、滑动(比如翻页)
下面是简化的例子,参考并整合所得,来源参考页尾参考内容:

package com.aslibra.test;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.GestureDetector.OnGestureListener;
import android.widget.LinearLayout;
import android.widget.TextView;

public class touchGesture extends Activity implements OnGestureListener {       
  private LinearLayout main;       
  private TextView viewA;
  private GestureDetector gestureScanner;

  @Override  
  public void onCreate(Bundle savedInstanceState) {   
    super.onCreate(savedInstanceState);   

    gestureScanner = new GestureDetector(this);   
    gestureScanner.setOnDoubleTapListener(new GestureDetector.OnDoubleTapListener(){  
      public boolean onDoubleTap(MotionEvent e) {  
        viewA.setText("-" + "onDoubleTap" + "-");  
        //双击时产生一次
        Log.v("test", "onDoubleTap");
        return false;  
      }
      public boolean onDoubleTapEvent(MotionEvent e) {  
        //双击时产生两次
        Log.v("test", "onDoubleTapEvent");
        return false;
       
      public boolean onSingleTapConfirmed(MotionEvent e) {  
        viewA.setText("-" + "onSingleTapConfirmed" + "-");  
        //短快的点击算一次单击
        Log.v("test", "onSingleTapConfirmed");
        return false;  
       
    }); 


    main = new LinearLayout(this);   
    main.setBackgroundColor(Color.GRAY);
    main.setLayoutParams(new LinearLayout.LayoutParams(320,480)); 
    main.setOrientation(LinearLayout.VERTICAL);

    viewA = new TextView(this);
    viewA.setBackgroundColor(Color.YELLOW);
    viewA.setTextColor(Color.BLACK);   
    viewA.setTextSize(16);
    viewA.setLayoutParams(new LinearLayout.LayoutParams(320,50));   
    main.addView(viewA);

    setContentView(main);   
  }

  @Override  
  public boolean onTouchEvent(MotionEvent me) {   
    return gestureScanner.onTouchEvent(me);   
    

  @Override  
  public boolean onDown(MotionEvent e) {   
    //viewA.setText("-" + "DOWN" + "-");   
    return true;   
    

  @Override  
  public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {   
    //viewA.setText("-" + "FLING" + "- "+velocityX + "- "+velocityY);   
    Log.v("test", "onFling "+e1.getX()+" "+e2.getX());
    return true;   
    

  @Override  
  public void onLongPress(MotionEvent e) {   
    //viewA.setText("-" + "LONG PRESS" + "-");   
    

  @Override  
  public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {   
    //viewA.setText("-" + "SCROLL" + "- "+distanceX + "- "+distanceY);   
    Log.v("test", "onScroll "+e1.getX()+" "+e2.getX());
    return true;   
    

  @Override  
  public void onShowPress(MotionEvent e) {   
    //viewA.setText("-" + "SHOW PRESS" + "-");   
  }

  @Override  
  public boolean onSingleTapUp(MotionEvent e) {   
    Log.v("test", "onSingleTapUp");
    //viewA.setText("-" + "SINGLE TAP UP" + "-"+ i++);   
    return true;   
    
  
 


参考资料:

GestureDetector and GestureDetector.OnGestureListener
how to implement android double tap? 

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有