ViewPager页面切换

用ViewPager来切换页面

1.adapter适配器
众所周知,viewpager需要adapter适配器来填充页面

public class MyAdapter extends PagerAdapter {List views;  //放页面的list/*** 构造方法* @param views    要填充的view*/public MyAdapter(List views) {this.views = views;}//设置ViewPager有几个滑动页面@Overridepublic int getCount() {//用图片资源数组的length也可以,用图片容器的size也可以return views.size();}//当前滑动到的ViewPager页面@NonNull@Overridepublic Object instantiateItem(@NonNull ViewGroup container, int position) {ViewPager vp = (ViewPager) container;View v = views.get(position);vp.addView(v);return v;}//官方固定写法@Overridepublic boolean isViewFromObject(@NonNull View view, @NonNull Object object) {return view == object;}@Overridepublic void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {//每次划出当前页面的时候就销毁ViewPager vp = (ViewPager) container;View v = views.get(position);vp.removeView(v);}
}

调用的时候,把自己的viewList参数传进去即可

MyAdapter adapter = new MyAdapter(viewsList);
viewPager.setAdapter(adapter);

我这里是隔一段时间自动切换页面,在handler里更新

    @SuppressLint("HandlerLeak")private Handler mHandler = new Handler() {public void handleMessage(android.os.Message msg) {switch (msg.what) {case 1:int totalcount = viewsList.size();//autoChangeViewPager.getChildCount();int currentItem = viewPager.getCurrentItem();int toItem = currentItem + 1 == totalcount ? 0 : currentItem + 1;viewPager.setCurrentItem(toItem, true);//每隔time秒钟(time可以由客户端改变)发送一个message,用于切换viewPager中的viewthis.sendEmptyMessageDelayed(1, time * 1000);}}};

2.添加切换的动画效果
需要实现PageTransformer接口,重写transformPage方法,直接上代码,代码里有注释

    //view pager 翻页3d动画效果//每当viewpager上一个可见或依附的页面发生了滚动事件就会调用PageTransformer,// 这让应用可以使用自定义transformation让viewpager某一个页面视图上实现某些特定的动画属性。public class SimplePageTransform implements ViewPager.PageTransformer {/**** @param view      应用切换动画到哪一个页面上* @param position  表示相对于当前页正中的位置,0表示在正中的这个页面,1表示右边一个完整的页面,-1表示左边一个完整的页面*/@Overridepublic void transformPage(View view, float position) {int width = view.getWidth();int pivotX = 0;if (position <= 1 && position > 0) {// right scrollingpivotX = 0;} else if (position == 0) {} else if (position < 0 && position >= -1) {// left scrollingpivotX = width;}//设置x轴的锚点view.setPivotX(pivotX);//设置绕Y轴旋转的角度view.setRotationY(90f * position);}}

参考文章


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部