您的位置:首页 > 移动开发 > Android开发

仿QQ侧滑 添加事件下发

2015-08-03 10:47 615 查看
上一篇模拟的QQ侧滑的效果 : 

http://blog.csdn.net/wwwbjj1988/article/details/47167161

这次把事件下发也做好了,左侧布局和右侧布局各有一个ListView

效果图: 因为是在模拟器里运行,所以感觉会有点卡,实际很流畅



主要是在自定义viewgroup中加了一个事件下发的方法 , 具体如下

//判断条件阻断触摸事件
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
// TODO Auto-generated method stub

switch(ev.getActionMasked()){
case MotionEvent.ACTION_DOWN :{
//初始化x 和 y 坐标
x = (int) ev.getX();
y = (int) ev.getY();
break;
}
case MotionEvent.ACTION_MOVE :{
//获取当前坐标
int nowX = (int) ev.getX();
int nowY = (int) ev.getY();
//判断当前坐标和初始坐标不一样
if(nowX != x && nowY != y){

float chax = (float)nowX - (float)x;
float chay = (float)nowY - (float)y;
//横向移动
if(Math.abs(chax) > Math.abs(chay)){
return true;
}
//纵向移动
else{
return false;
}
}
break;
}
//只有在没有下发事件时up这里才能收到up事件
case MotionEvent.ACTION_UP :{
//当前已展示左侧列表后 点击位置在右侧
if(isLeftShowing && ev.getX() >= maxLeft){
dissLeftTask();
return true;
}
//up事件下发给子view的 itemclick
return false;
}
}
return false;
}

源码 :  http://download.csdn.net/detail/wwwbjj1988/8955169

经检测发现有时有无法滑动的问题,解决办法是 子view.setOnTouchListener() , 同时 onTouch() 中返回true就可以了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息