解决首页广告ScrollView 嵌套viewpage 影响viewpager 滑动
来源:互联网 发布:沈阳盘古网络 编辑:程序博客网 时间:2024/05/16 01:24
Scrollview 中嵌套viewpager 影响viewpager横向滑动的原因是viewpager中本身存在的手势事件和scrollview的事件相冲突,解决方法为重写
onScrollChanged 事件,起一个线程,不断判断滑动是否为横向滑动大于纵向滑动,具体代码如下:将ScrollView 替换成如下的自定义viewpager;
public class PullableScrollView extends ScrollView implements Pullable{private float xDistance, yDistance, xLast, yLast; int newy=0; int oldy=-1; boolean flag=false; private OnScrollListener onScrollListener; private PauseOnScrollListener onScrollListeners; public PullableScrollView(Context context) { super(context); } public PullableScrollView(Context context, AttributeSet attrs) { super(context, attrs); } public PullableScrollView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override public boolean canPullDown() { if (getScrollY() == 0) return true; else return false; } @Override public boolean canPullUp() { if (getScrollY() >= (getChildAt(0).getHeight() - getMeasuredHeight())) return true; else return false; } public void setOnScrollListener(OnScrollListener onScrollListener) { this.onScrollListener = onScrollListener; } public void setOnScrollListener(PauseOnScrollListener onScrollListener) { this.onScrollListeners = onScrollListener; } @Override public int computeVerticalScrollRange() { return super.computeVerticalScrollRange(); } @Override protected void onScrollChanged(int l, int t, int oldl, int oldt) { super.onScrollChanged(l, t, oldl, oldt); if(onScrollListener != null){ onScrollListener.onScroll(t); } newy=oldt; if (!flag){ flag=true; new Thread(new Runnable() { @Override public void run() { thread_run(); } }).start(); } Log.e(l+"aaa"+t+"bb",oldl+"ccc"+oldt);if(t==oldt){ if(onScrollListener != null){ }} } void thread_run() { while (flag) { if (oldy == newy) { flag = false; onScrollListener.onstop(); } else { oldy=newy; } try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } /** * * 滚动的回调接口 */ public interface OnScrollListener{ /** * 回调方法, 返回MyScrollView滑动的Y方向距离 * @param scrollY * 、 */ public void onScroll(int scrollY); public void onstop(); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: xDistance = yDistance = 0f; xLast = ev.getX(); yLast = ev.getY(); break; case MotionEvent.ACTION_MOVE: final float curX = ev.getX(); final float curY = ev.getY(); xDistance += Math.abs(curX - xLast); yDistance += Math.abs(curY - yLast); xLast = curX; yLast = curY; if (xDistance > yDistance) { return false; } } return super.onInterceptTouchEvent(ev); }}
0 0
- 解决首页广告ScrollView 嵌套viewpage 影响viewpager 滑动
- viewpager嵌套viewpage冲突问题(网易首页广告)
- ViewPager,ScrollView 嵌套ViewPager滑动冲突解决
- ViewPager,ScrollView 嵌套ViewPager滑动冲突解决
- ViewPager,ScrollView 嵌套ViewPager滑动冲突解决
- ViewPager,ScrollView 嵌套ViewPager滑动冲突解决
- ViewPager,ScrollView 嵌套ViewPager滑动冲突解决
- ViewPager,ScrollView 嵌套ViewPager滑动冲突解决
- ViewPager,ScrollView 嵌套ViewPager滑动冲突解决
- ViewPager,ScrollView 嵌套ViewPager滑动冲突解决
- ViewPager,ScrollView 嵌套ViewPager滑动冲突解决
- ViewPager,ScrollView嵌套ViewPager滑动冲突解决
- ScrollView嵌套ViewPager滑动冲突的解决
- 解决ScrollView嵌套viewpager滑动冲突
- 解决ScrollView嵌套ViewPage, 并且ViewPage里面嵌套了ListView的滑动冲突原理
- 解决scrollView嵌套viewpager+listview,scrollview不能滑动的问题
- 解决ScrollView嵌套ViewPager,导致ViewPager不能滑动的问题
- Android中Viewpager,ScrollView嵌套ViewPager滑动冲突解决
- 燕十八php基础视频学习杂记
- ssh无密码登陆
- poj1611 The Suspects(AC)
- 给listview设置分割线与边界的距离
- Hadoop之HDFS介绍
- 解决首页广告ScrollView 嵌套viewpage 影响viewpager 滑动
- 为什么喜欢随时记笔记的人更容易成功?
- jQuery中的事件(一)
- 细说HTML元素的ID和Name属性的区别
- des 和 3des 的base64加密
- quartz使用(三)
- Android Action Bar 详解篇
- 如何制作微信二维码指纹扫描图片
- 手机多媒体Notification,摄像,音频