DrawerLayout 中listView 滑动不好控制(竖直滑动和水平方向滑动判断)
2016-07-27 14:29
543 查看
import android.content.Context;
import android.support.v4.widget.DrawerLayout;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.ViewConfiguration;
public class MyDrawerLayout extends DrawerLayout {
public MyDrawerLayout(Context context) {
this(context, null);
}
public MyDrawerLayout(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public MyDrawerLayout(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
final ViewConfiguration configuration = ViewConfiguration
.get(getContext());
mTouchSlop = configuration.getScaledTouchSlop();
}
private int mTouchSlop;
private float mLastMotionX;
private float mLastMotionY;
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
try {
final float x = ev.getX();
final float y = ev.getY();
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
mLastMotionX = x;
mLastMotionY = y;
break;
case MotionEvent.ACTION_MOVE:
int xDiff = (int) Math.abs(x - mLastMotionX);
int yDiff = (int) Math.abs(y - mLastMotionY);
final int x_yDiff = xDiff * xDiff + yDiff * yDiff;
boolean xMoved = x_yDiff > mTouchSlop * mTouchSlop;
if (xMoved) {
if (xDiff > yDiff * 4) {
return true;
} else {
return false;
}
}
break;
default:
break;
}
return super.onInterceptTouchEvent(ev);
} catch (IllegalArgumentException ex) {
}
return false;
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
try {
return super.onTouchEvent(ev);
} catch (IllegalArgumentException ex) {
}
return false;
}
}
import android.support.v4.widget.DrawerLayout;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.ViewConfiguration;
public class MyDrawerLayout extends DrawerLayout {
public MyDrawerLayout(Context context) {
this(context, null);
}
public MyDrawerLayout(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public MyDrawerLayout(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
final ViewConfiguration configuration = ViewConfiguration
.get(getContext());
mTouchSlop = configuration.getScaledTouchSlop();
}
private int mTouchSlop;
private float mLastMotionX;
private float mLastMotionY;
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
try {
final float x = ev.getX();
final float y = ev.getY();
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
mLastMotionX = x;
mLastMotionY = y;
break;
case MotionEvent.ACTION_MOVE:
int xDiff = (int) Math.abs(x - mLastMotionX);
int yDiff = (int) Math.abs(y - mLastMotionY);
final int x_yDiff = xDiff * xDiff + yDiff * yDiff;
boolean xMoved = x_yDiff > mTouchSlop * mTouchSlop;
if (xMoved) {
if (xDiff > yDiff * 4) {
return true;
} else {
return false;
}
}
break;
default:
break;
}
return super.onInterceptTouchEvent(ev);
} catch (IllegalArgumentException ex) {
}
return false;
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
try {
return super.onTouchEvent(ev);
} catch (IllegalArgumentException ex) {
}
return false;
}
}
相关文章推荐
- centos6.5搭建FTP服务器
- 运维自动化的思想
- HDU 5737 Differencia(归并树)
- Interface In Java(Note)
- ReactNative中iOS和Android的style分开设置教程
- 用递归方式在JSON中查找对象
- ReactNative中iOS和Android的style分开设置教程
- Oracle Created (Default) Database Users
- iOS NSKeyedArchiver序列化后进行数据持久化(swift)
- IE浏览器不用迅雷下载
- SVN中trunk,branches,tags用法详解
- 数据结构实验之链表三:链表的逆置
- git安装
- 点击菜单栏实现内容切换
- 算法竞赛入门经典(第二版)-刘汝佳-第四章 函数与递归 刽子手游戏
- OA系统权限管理设计方案
- iOS应用架构谈 本地持久化方案及动态部署
- GitHub使用(三)
- Redis 安装日记
- 分享pdf转换成jpg在线转换的方法