3D轮播图与外层ViewPager滑动冲突问题
2017-12-22 11:19
330 查看
场景:
app主界面是一个具有4个fragment的viewPager,第一个fragment中有一个轮播图,轮播图显示3个具有3D效果和投影的图片,中间大图,两侧显示图的一点点,也就是画廊效果,图片可点击,点击进入h5。
轮播图布局:
只滑动中间的大图可以滑动,但是滑动两侧的图片则直接滑动了第2个fragment,被主界面的viewpager接管了,因此需要在轮播图的viewpager的父布局做个触摸监听,当滑动的时候,停止主界面的viewpager滑动功能,强制进入当前轮播图viewpager的滑动事件,滑动结束也就是松开手指,恢复主界面的滑动功能。
主界面的viewPager 自定义:
并且按下图片时停止轮播图的滑动,pauseTimer:
轮播图Viewpager触摸监听:
app主界面是一个具有4个fragment的viewPager,第一个fragment中有一个轮播图,轮播图显示3个具有3D效果和投影的图片,中间大图,两侧显示图的一点点,也就是画廊效果,图片可点击,点击进入h5。
轮播图布局:
<LinearLayout android:id="@+id/ll_viewpager" android:clipChildren="false" android:orientation="vertical" android:visibility="gone" android:layout_width="match_parent" android:layout_height="wrap_content"> <com.cmcc.cmrcs.android.ui.view.NoScrollViewPager android:id="@+id/viewpager" android:layout_width="308dp" android:visibility="visible" android:layout_gravity="center_horizontal" android:clipChildren="false" android:layout_height="154dp" /> </LinearLayout>
只滑动中间的大图可以滑动,但是滑动两侧的图片则直接滑动了第2个fragment,被主界面的viewpager接管了,因此需要在轮播图的viewpager的父布局做个触摸监听,当滑动的时候,停止主界面的viewpager滑动功能,强制进入当前轮播图viewpager的滑动事件,滑动结束也就是松开手指,恢复主界面的滑动功能。
主界面的viewPager 自定义:
public class NoScrollViewPager extends ViewPager { private boolean mScrollble = true; public NoScrollViewPager(Context context) { super(context); } public NoScrollViewPager(Context context, AttributeSet attrs) { super(context, attrs); } @Override public boolean onTouchEvent(MotionEvent ev) { if (!mScrollble) { return false; } return super.onTouchEvent(ev); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { if (!mScrollble) { return false; } return super.onInterceptTouchEvent(ev); } public boolean isCanScrollble() { return mScrollble; } /** * 设置能否滑动 * @param scrollble */ public void setCanScrollble(boolean scrollble) { this.mScrollble = scrollble; } }
//轮播图滑动侧边图,解决和外层viewpager冲突,按下停止外层滑动,松开则释放限制 llViewPager.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { android.util.Log.d(TAG, "onTouch: 1"); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: ((HomeActivity)getActivity()).getViewPager().setCanScrollble(false); pauseTimer(); break; case MotionEvent.ACTION_MOVE: break; case MotionEvent.ACTION_UP: ((HomeActivity)getActivity()).getViewPager().setCanScrollble(true); startTimer(); break; default: ((HomeActivity)getActivity()).getViewPager().setCanScrollble(true); startTimer(); } return mViewPager.onTouchEvent(event); } });
并且按下图片时停止轮播图的滑动,pauseTimer:
public void pauseTimer() { if (timer != null) { timer.cancel(); } }
轮播图Viewpager触摸监听:
View.OnTouchListener onTouchListener = new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { //手指按下和划动的时候停止图片的轮播 case MotionEvent.ACTION_DOWN: android.util.Log.d(TAG, "onTouch: 2"); case MotionEvent.ACTION_MOVE: android.util.Log.d(TAG, "onTouch: 3"); pauseTimer(); // isContinue = false; break; default: startTimer(); // isContinue = true; } return false; } };
相关文章推荐
- 完美解决ScrollView嵌套ViewPager滑动失效和无法正常滑动冲突问题
- 基于ViewPager的自动轮播模块–解决与ScrollView冲突问题
- Android Viewpager与WebView轮播滑动冲突的解决方案
- ViewPager禁止滑动,设置页片间距,设置当前显示的页面,缓存个数,以及解决嵌套ViewPager左右滑动冲突问题
- 简单完美解决PullToRefreshLayout中PullableListView嵌套ViewPager时滑动冲突的问题
- PtrClassicFrameLayout与viewpager横向滑动冲突的问题
- 解决ViewPager横向的ViewGroup滑动冲突的问题,例如HorizontalListView,RecyclerView,各种layout等
- android ViewPager嵌套使用的滑动冲突解决方案,优先让里层的ViewPager滑动完毕后外层的ViewPager再滑动
- 解决ScrollView嵌套ViewPager出现的滑动冲突问题
- scrollView中放ViewPager和GridView滑动起来,事件冲突的问题。
- 安卓解决viewPager+scrollView+listView滑动冲突的问题
- listview嵌套viewpager 滑动冲突问题
- ViewPager滑动报错id冲突问题
- 自定义viewpager实现滑动拦截与分发解决嵌套listview等滑动冲突问题
- viewpager+fragment+viewpager+scrollview滑动冲突问题
- listview嵌套viewpager 滑动冲突问题
- Viewpager和各种其他组件的滑动冲突问题,例如百度地图,scrollview等
- android scrollView 内嵌ViewPager或Gallery等水平滑动控件冲突问题解决实现同时滑动
- React Native通过修改ScrollableTabView和ViewPager来解决左右滑动冲突的问题
- 完美解决viewpager跟其他类型的listview 或 gridview一起使用时,滑动冲突问题