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

代码如下

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有什么区别

最新文章

  1. Centos6.5 gitlab安装使用
  2. iOS开发者账号配置进行设备调试
  3. SVN与TortoiseSVN实战:TortoiseSVN新建及合并分支
  4. Android_AutoCompleteTextView,MultiAutoCompleteTextView
  5. poj 1066 Treasure Hunt
  6. Android RelativeLayout常用属性介绍
  7. mysql TIMESTAMP与DATATIME的区别---转载加自己的看法
  8. python中如何将生成等差数列和等比数列
  9. Android Studio下导出jar包和aar包
  10. EventBus3.0 study
  11. Kali Linux配置ssh服务
  12. (简单)华为Nova青春 WAS-AL00的USB调试模式在哪里开启的流程
  13. 强连通分量(Kosaraju)
  14. Matlab文本处理:提取指定内容
  15. sql基础笔记备忘
  16. Educational Codeforces Round 26-D. Round Subset
  17. RabbitMQ for CentOS安装教程
  18. ROSETTA使用技巧随笔--RosettaLigand Docking
  19. WPF LinkButton
  20. DIOCP3 - 关于接收数据

热门文章

  1. js中数组增删查改unshift、push、pop、shift、slice、indexOf、concat、join
  2. 关于Android手机MTP模式连接的一些设置(win7和ubuntu下,以红米1s为例)
  3. 用户向导左右滑动页面实现之ImageSwitcher
  4. nodeJs学习路线
  5. 15.C语言多线程实现变色龙以及cmd窗口标题变化
  6. Gym - 100685F Flood BFS
  7. 洛谷T21776 子序列
  8. Android自定义组件系列【14】——Android5.0按钮波纹效果实现
  9. maven pom下载不了
  10. POSTGRESQL NO TABLE