我把viewpage放在listview中第一行,然后viewpage就不能左右滑动了不知道要如何做才能让viewpage在listview中可以正常左右滑动呢?
解决方案 »
- 怎样在安卓中实现在锁屏状态下弹出对话框,并可以震动和铃声,就像闹钟似的?
- 关于ADB Forward, 怎么把Android发给PC的TCP请求forward给PC
- service后台播放问题
- 请问大家有见过mp3播放器播放一首就停止的吗?
- Runtime.getRuntime().exec执行cmd命令时权限不足的问题
- 问一个关于Android的问题,新手上路
- 新配置的android环境为什么一代码提示就卡死。
- android 问题 急急急
- sipdroid语音视频通话
- Unable to start activity ComponentInfo{**} java.lang.NullPointerException
- 动态更改 App的图标
- ProgressBar 有停止、销毁等操作吗?
拦截响应onTouchEvent处理横向滑动事件就行啦
public class ViewPagerInListView extends ViewPager {
public ViewPagerInListView(Context context) {
super(context);
}
public ViewPagerInListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public boolean onInterceptTouchEvent(MotionEvent arg0)
{
//当拦截触摸事件到达此位置的时候,返回true,
//说明将onTouch拦截在此控件,进而执行此控件的onTouchEvent
return true;
}
/** 触摸时按下的点 **/
PointF downP = new PointF();
/** 触摸时当前的点 **/
PointF curP = new PointF();
public boolean onTouchEvent(MotionEvent arg0) {
//每次进行onTouch事件都记录当前的按下的坐标
curP.x = arg0.getX();
curP.y = arg0.getY(); if(arg0.getAction() == MotionEvent.ACTION_DOWN){
downP.x = arg0.getX();
downP.y = arg0.getY();
getParent().requestDisallowInterceptTouchEvent(true);
} if(arg0.getAction() == MotionEvent.ACTION_MOVE){
float dx = Math.abs(arg0.getX()-downP.x);
float dy = Math.abs(arg0.getY()-downP.y);
if (dy<dx)
{
//此句代码是为了通知他的父ViewPager现在进行的是本控件的操作,不要对我的操作进行干扰
getParent().requestDisallowInterceptTouchEvent(true);
}
else
{
getParent().requestDisallowInterceptTouchEvent(false);
}
} if(arg0.getAction() == MotionEvent.ACTION_UP){
getParent().requestDisallowInterceptTouchEvent(false);
float dx = Math.abs(arg0.getX()-downP.x);
float dy = Math.abs(arg0.getY()-downP.y);
if (dy<dx)
{
// 向右
if (arg0.getX()-downP.x>0)
{
what.getAndAdd(-1);
if (what.get() < 0) {
what.getAndAdd(imageViews.size());
}
viewHandler.sendEmptyMessage(what.get());
}
else
{
what.incrementAndGet();
if (what.get() > imageViews.size() - 1) {
what.getAndAdd(-imageViews.size());
}
viewHandler.sendEmptyMessage(what.get());
}
}
if (dx==0&&dy==0)
{
Intent intent = new Intent();
intent.putExtra("id",""+curTitleShowId);
intent.putExtra("title",""+curTitle);
intent.putExtra("typeTilte",""+title);
intent.setClass(act, NewsInfoActivity.class);
act.startActivity(intent);
act.overridePendingTransition(R.anim.push_left_in,R.anim.push_left_out);
}
}
return super.onTouchEvent(arg0);
}
}