带有ListView界面左右滑动,切换界面
来源:互联网 发布:回力鞋怎么知是正品 编辑:程序博客网 时间:2024/05/29 09:23
相信大家在做OnGestureListener滑动切换窗口的时候,会遇到这样的问题。就是当界面中含有listview的时候,OnGestureListener的左右触屏滑动就被listview自己吃掉了。
翻看api帮助文档和自己的一些理解,决定从对listview重写开始,开解决这个头疼的问题。
以下是本人对ListView类的重写:
class GestureListView extends ListView {
public GestureListView(Context context) {
super(context);
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
if(mLvDetector.onTouchEvent(ev)) return true;
return super.onTouchEvent(ev);
}
private GestureDetector mLvDetector = new GestureDetector(new OnGestureListener() {
//手指在屏幕上移动距离小于此值不会被认为是手势
private static final int SWIPE_MIN_DISTANCE = 120;
//手指在屏幕上移动速度小于此值不会被认为手势
private static final int SWIPE_THRESHOLD_VELOCITY = 200;
@Override
public boolean onDown(MotionEvent e) {
int position = pointToPosition((int)e.getX(), (int)e.getY());
if( position != ListView.INVALID_POSITION) {
View child = getChildAt(position - getFirstVisiblePosition());
if(child != null) child.setPressed(true);
}
return true;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
//left
Log.i("GestureDemo", "ListView left");
mVf.showNext();
return true;
}else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
//right
Log.i("GestureDemo", "ListView right");
mVf.showPrevious();
return true;
}
return false;
}
@Override
public void onLongPress(MotionEvent e) {
System.out.println("Listview long press");
int position = pointToPosition((int)e.getX(), (int)e.getY());
if( position != ListView.INVALID_POSITION) {
View child = getChildAt(position - getFirstVisiblePosition());
if(child != null) GestureListView.this.showContextMenuForChild(child);
}
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
return false;
}
@Override
public void onShowPress(MotionEvent e) {
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
return false;
}
});
}
- 带有ListView界面左右滑动,切换界面
- 带有ListView界面左右滑动,切换界面
- 带有ListView的界面左右滑动,切换界面。
- 带有ListView的界面无法通过手势左右滑动切换界面问题解决办法
- 带有ListView的界面无法通过手势左右滑动切换界面问题解决办法
- 带有ListView的界面左右滑动,切换界面。 (手势监听)
- 带有ListView的界面无法通过手势左右滑动切换界面问题解决办法
- 带有ListView界面左右滑动返回(关闭界面)
- android实现多界面左右滑动切换
- Android实现界面左右滑动切换
- Android实现界面左右滑动切换
- 监听界面左右滑动
- android-使用ViewGroup实现左右滑动切换界面的效果
- 仿照QQ的左右滑动切换界面的效果
- 可左右上下滑动切换图片的界面
- 含有listview的界面实现左右滑动监听
- ViewPager滑动切换界面
- Animation 滑动切换界面
- 各种经验与教训
- Struts是如何实现MVC的
- poj 1376 Robot BFS
- 近似算法求解调度问题
- TCP与UDP的区别
- 带有ListView界面左右滑动,切换界面
- WINDOWS UPDATE 错误 80070003
- Java反射实体类属性(get ,set方法)
- 新白娘子传奇经典句子
- 枚举所有图标
- Google Guice简介
- SQL2000 的字符型数据类型
- VS2008中openGL开发环境配置
- 在iOS上实现Android风格的控件Toast