Android手势操作示例(上/下/左/右的判断)

所属分类: 软件编程 / Android 阅读数: 1160
收藏 0 赞 0 分享

本文实例讲述了Android手势操作方法。分享给大家供大家参考,具体如下:

Android中提供了判断手势的接口,所以我们可以根据提供的API来实现各种各样的手势功能来提高手机应用的用户体验。

下面是我写的一段小Demo:

GestureActivity.Java

public class GestureActivity extends Activity {
  private GestureDetector gestureDetector;
  private Screen screen;
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    gestureDetector = new GestureDetector(this,onGestureListener);
    //得到屏幕的大小
    screen = GestureUtils.getScreenPix(this);
  }
  @Override
  public boolean onTouchEvent(MotionEvent event) {
    return gestureDetector.onTouchEvent(event);
  }
  GestureDetector.OnGestureListener onGestureListener = new GestureDetector.SimpleOnGestureListener(){
    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
        float velocityY) {
      float x = e2.getX() - e1.getX();
      float y = e2.getY() - e1.getY();
      //限制必须得划过屏幕的1/3才能算划过
      float x_limit = screen.widthPixels / 3;
      float y_limit = screen.heightPixels / 3;
      float x_abs = Math.abs(x);
      float y_abs = Math.abs(y);
      if(x_abs >= y_abs){
        //gesture left or right
        if(x > x_limit || x < -x_limit){
          if(x>0){
            //right
            show("right");
          }else if(x
            //left
            show("left");
          }
        }
      }else{
        //gesture down or up
        if(y > y_limit || y < -y_limit){
          if(y>0){
            //down
            show("down");
          }else if(y
            //up
            show("up");
          }
        }
      }
      return true;
    }
  };
  private void show(String value){
    Toast.makeText(this, value, Toast.LENGTH_SHORT).show();
  }
}

GestureUtils.java

public class GestureUtils {
  //获取屏幕的大小
  public static Screen getScreenPix(Context context) {
    DisplayMetrics dm = new DisplayMetrics();
    WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
    windowManager.getDefaultDisplay().getMetrics(dm);
    return new Screen(dm.widthPixels,dm.heightPixels);
  }
  public static class Screen{
    public int widthPixels;
    public int heightPixels;
    public Screen(){
    }
    public Screen(int widthPixels,int heightPixels){
      this.widthPixels=widthPixels;
      this.heightPixels=heightPixels;
    }
    @Override
    public String toString() {
      return "("+widthPixels+","+heightPixels+")";
    }
  }
}

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android文件操作技巧汇总》、《Android编程开发之SD卡操作方法汇总》、《Android开发入门与进阶教程》、《Android资源操作技巧汇总》、《Android视图View技巧总结》及《Android控件用法总结

希望本文所述对大家Android程序设计有所帮助。

更多精彩内容其他人还在看

Android网络编程之获取网络上的Json数据实例

这篇文章主要介绍了Android网络编程之获取网络上的Json数据实例,本文用完整的代码实例讲解了在Android中读取网络中Json数据的方法,需要的朋友可以参考下
收藏 0 赞 0 分享

Android中的windowSoftInputMode属性详解

这篇文章主要介绍了Android中的windowSoftInputMode属性详解,本文对windowSoftInputMode的9个属性做了详细总结,需要的朋友可以参考下
收藏 0 赞 0 分享

Android网络编程之UDP通信模型实例

这篇文章主要介绍了Android网络编程之UDP通信模型实例,本文给出了服务端代码和客户端代码,需要的朋友可以参考下
收藏 0 赞 0 分享

Android中使用ListView实现漂亮的表格效果

这篇文章主要介绍了Android中使用ListView实现漂亮的表格效果,本文用详细的代码实例创建了一个股票行情表格,需要的朋友可以参考下
收藏 0 赞 0 分享

Android中刷新界面的二种方法

这篇文章主要介绍了Android中刷新界面的二种方法,本文使用Handler、postInvalidate两种方法实现界面刷新,需要的朋友可以参考下
收藏 0 赞 0 分享

Android SDK三种更新失败及其解决方法

这篇文章主要介绍了Android SDK三种更新失败及其解决方法,需要的朋友可以参考下
收藏 0 赞 0 分享

Android学习笔记——Menu介绍(一)

Android3.0(API level 11)开始,Android设备不再需要专门的菜单键。随着这种变化,Android app应该取消对传统6项菜单的依赖。取而代之的是提供anction bar来提供基本的用户功能
收藏 0 赞 0 分享

Android学习笔记——Menu介绍(二)

这次将继续上一篇文章没有讲完的Menu的学习,上下文菜单(Context menu)和弹出菜单(Popup menu)
收藏 0 赞 0 分享

Android学习笔记——Menu介绍(三)

今天继续昨天没有讲完的Menu的学习,主要是Popup Menu的学习,需要的朋友可以参考下
收藏 0 赞 0 分享

Android显示网络图片实例

这篇文章主要介绍了Android显示网络图片的方法,以实例形式展示了Android程序显示网络图片的方法,非常具有实用价值,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多