码迷,mamicode.com
首页 > 移动开发 > 详细

android-GestureDetector 滑屏手势方式实现

时间:2015-01-30 15:16:10      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:

今天做的项目中,需要使用滑屏来调出一个界面,经过自己的尝试,结合网上的方法,成功实现了。

代码如下

package com.example.text;


import android.app.Activity;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.widget.TextView;

public class MainActivity extends Activity implements OnGestureListener {
     private GestureDetector mGestureDetector;
     private TextView tv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv=(TextView) findViewById(R.id.tv);
//这个如果直接写一个this,会提示过时。另外,如果两个参数都写成this,会报错。原因不知
mGestureDetector
= new GestureDetector(MainActivity.this, this); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } @Override public boolean onTouchEvent(MotionEvent event) { // TODO Auto-generated method stub //通过event自动判断手势,回调相应的方法 return mGestureDetector.onTouchEvent(event); }
//按下屏幕触发,打印的是坐标
 @Override
public boolean onDown(MotionEvent arg0) { // TODO Auto-generated method stub tv.setText(arg0.getX()+" "+arg0.getY()); return false; }
//滑动屏幕的时候触发,打印的分别是起点跟终点的坐标
 @Override
public boolean onFling(MotionEvent arg0, MotionEvent arg1, float arg2, float arg3) { // TODO Auto-generated method stub tv.setText("arg1.getX()="+arg1.getX()+" arg0.getX()="+arg1.getY()+" arg2="+arg2+" arg3="+arg3); return true; } @Override public void onLongPress(MotionEvent arg0) { // TODO Auto-generated method stub } @Override public boolean onScroll(MotionEvent arg0, MotionEvent arg1, float arg2, float arg3) { // TODO Auto-generated method stub return false; } @Override public void onShowPress(MotionEvent arg0) { // TODO Auto-generated method stub } @Override public boolean onSingleTapUp(MotionEvent arg0) { // TODO Auto-generated method stub return false; } }

这个类的使用步骤如下

1.定义手势类:private GestureDetector mGestureDetector;

2.初始化类:这个是跟其他控件设置监听一样的,有多种方法

  1)匿名内部类:

 

mGestureDetector = new GestureDetector(MainActivity.this, new OnGestureListener() {
            
            @Override
            public boolean onSingleTapUp(MotionEvent arg0) {
                // TODO Auto-generated method stub
                return false;
            }
            
            @Override
            public void onShowPress(MotionEvent arg0) {
                // TODO Auto-generated method stub
                
            }
            
            @Override
            public boolean onScroll(MotionEvent arg0, MotionEvent arg1, float arg2,
                    float arg3) {
                // TODO Auto-generated method stub
                return false;
            }
            
            @Override
            public void onLongPress(MotionEvent arg0) {
                // TODO Auto-generated method stub
                
            }
            
            @Override
            public boolean onFling(MotionEvent arg0, MotionEvent arg1, float arg2,
                    float arg3) {
                // TODO Auto-generated method stub
                return false;
            }
            
            @Override
            public boolean onDown(MotionEvent arg0) {
                // TODO Auto-generated method stub
                return false;
            }
        });

 

  2).直接让主类继承:

public class MainActivity extends Activity implements OnGestureListener{

}

  3).内部类

 class MyOnGestureListener  implements OnGestureListener{

}

3.在onTouchEvent()事件中使用这个类

   @Override
    public boolean onTouchEvent(MotionEvent event) {
        // TODO Auto-generated method stub
    
    
     //通过event自动判断手势,回调相应的方法       
    return mGestureDetector.onTouchEvent(event);
    
    }

不过,现在还有一点不是很明白,就是方法中的return false跟return true有什么区别

 

 

 

android-GestureDetector 滑屏手势方式实现

标签:

原文地址:http://www.cnblogs.com/zhangshuli-1989/p/zhangshuli_zj_15013013.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!