A : 如何做到滚动并手动操控轮播?
B : 当然使用ViewPager了
A : 嗯 是这样的 ViewPager2就可以垂直了呀
博主: androidx 项目开发者请自行离开 ViewPager2的确可以实现
B : 项目使用的com.android.support:appcompat怎么办呢?
A :把整体项目升级到androidx
博主:的确是个好方法 未免忒费事了吧!!!后续会出一篇《如何升级androidx项目》
B :做为开发者 代码只要跑起来就不要乱动了 升级暂不采纳 会出现很多冲突!
A : ......
B : 那自定义一个垂直的 ViewPager
垂直滚动的ViewPager
publicclassVerticalViewPagerextendsViewPager{publicVerticalViewPager(Context context){this(context, null);}publicVerticalViewPager(Context context, AttributeSet attrs){super(context, attrs);//设置viewpage的切换动画,真正实现垂直滑动的viewpagersetPageTransformer(true,newVerticalTransformer());}/**
* 拦截touch事件
*
*/@OverridepublicbooleanonInterceptTouchEvent(MotionEvent ev){boolean intercept =super.onInterceptTouchEvent(swapEvent(ev));swapEvent(ev);return intercept;}@OverridepublicbooleanonTouchEvent(MotionEvent ev){returnsuper.onTouchEvent(swapEvent(ev));}private MotionEvent swapEvent(MotionEvent event){//获取宽高float width =getWidth();float height =getHeight();//将Y轴的移动距离转变成X轴的移动距离float swappedX =(event.getY()/ height)* width;//将X轴的移动距离转变成Y轴的移动距离float swappedY =(event.getX()/ width)* height;//重设event的位置
event.setLocation(swappedX, swappedY);return event;}public classVerticalTransformer implementsViewPager.PageTransformer{publicstaticfinal String TAG ="classVerticalTransformer";@OverridepublicvoidtransformPage(View view,float position){float alpha =0;if(0<= position && position <=1){
alpha =1- position;}elseif(-1< position && position <0){
alpha = position +1;}
view.setAlpha(alpha);float transX = view.getWidth()*-position;
view.setTranslationX(transX);float transY = position * view.getHeight();
view.setTranslationY(transY);}}}
A : 你小子真有你的真的可以垂直滚动了?那轮播呢?不能每次都手动吧!
B : ......(心中在咒骂)
博主 : 可以参考我之前的一篇自定义轮播 下方快捷入口