上一篇模拟的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就可以了