GestureDetector- 滑屏手势方式实现
2024-08-31 18:43:39
今天做的项目中,需要使用滑屏来调出一个界面,经过自己的尝试,结合网上的方法,成功实现了。
代码如下
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有什么区别
最新文章
- Centos6.5 gitlab安装使用
- iOS开发者账号配置进行设备调试
- SVN与TortoiseSVN实战:TortoiseSVN新建及合并分支
- Android_AutoCompleteTextView,MultiAutoCompleteTextView
- poj 1066 Treasure Hunt
- Android RelativeLayout常用属性介绍
- mysql TIMESTAMP与DATATIME的区别---转载加自己的看法
- python中如何将生成等差数列和等比数列
- Android Studio下导出jar包和aar包
- EventBus3.0 study
- Kali Linux配置ssh服务
- (简单)华为Nova青春 WAS-AL00的USB调试模式在哪里开启的流程
- 强连通分量(Kosaraju)
- Matlab文本处理:提取指定内容
- sql基础笔记备忘
- Educational Codeforces Round 26-D. Round Subset
- RabbitMQ for CentOS安装教程
- ROSETTA使用技巧随笔--RosettaLigand Docking
- WPF LinkButton
- DIOCP3 - 关于接收数据