图片轮播之无限轮播
来源:互联网 发布:js将集合转换为数组 编辑:程序博客网 时间:2024/05/17 01:54
用ViewPager来实现轮播,会考虑到无限轮播和左右循环,需要做到以下5步:
//1.把图片的总数改为整数的最大值,做为虚假的图片数量
//2.在用到position的地方进行%运算,这样可以保证得到的position的不会数组越界
//3.设置虚假图片位置的起点为整数最大值的中间
//4.算出真正图片位置与起点的偏差值
//5.整数最大值的中间-真正图片位置与起点的偏差值
//1.把图片的总数改为整数的最大值,做为虚假的图片数量
//2.在用到position的地方进行%运算,这样可以保证得到的position的不会数组越界
//3.设置虚假图片位置的起点为整数最大值的中间
//4.算出真正图片位置与起点的偏差值
//5.整数最大值的中间-真正图片位置与起点的偏差值
/*================================= 适配器的设置 =================================*/class PictureAdapter extends PagerAdapter {@Overridepublic int getCount() {// TODOif (mData != null) {//1.把图片的总数改为整数的最大值,做为虚假的图片数量return Integer.MAX_VALUE;}return 0;}@Overridepublic boolean isViewFromObject(View view, Object object) {// TODOreturn view == object;}@Overridepublic Object instantiateItem(ViewGroup container, int position) {// TODO//2.在用到position的地方进行%运算,这样可以保证得到的position的不会数组越界//position(真正的图片位置) = position(虚假的图片位置) % mData.size()(图片数量);position = position % mData.size();ImageView iv = new ImageView(UIUtils.getContext());iv.setImageResource(R.drawable.ic_default);String url = URLS.IMAGEBASEURL + mData.get(position);BitmapHelper.display(iv, url);container.addView(iv);return iv;}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {// TODOcontainer.removeView((View) object);}}/*================================= viewPager的触摸事件设置 =================================*/// 设置viewpager的滑动事件mViewPager.setOnPageChangeListener(new OnPageChangeListener() {@Overridepublic void onPageSelected(int position) {// TODO//2.在用到position的地方进行%运算,这样可以保证得到的position的不会数组越界//position(真正的图片位置) = position(虚假的图片位置) % mData.size()(图片数量);position = position % mData.size();for (int i = 0; i < mData.size(); i++) {View indicatorView = mContainer.getChildAt(i);indicatorView.setBackgroundResource(R.drawable.indicator_normal);if (i == position) {indicatorView.setBackgroundResource(R.drawable.indicator_selected);}}}@Overridepublic void onPageScrolled(int position, float positionOffset,int positionOffsetPixels) {// TODO}@Overridepublic void onPageScrollStateChanged(int state) {// TODO}});//4.算出真正图片位置与起点的偏差值int diff = Integer.MAX_VALUE / 2 % mData.size();//3.设置虚假图片位置的起点为整数最大值的中间,这样可以使得轮播一开始从可以划到左边的效果,但是可能出现获取到的真正图片位置不是从0开始的现象,所以要算出真正图片位置与起点的偏差值mViewPager.setCurrentItem(Integer.MAX_VALUE / 2 - diff);
0 0
- 图片轮播之无限轮播
- 图片无限轮播
- 图片无限轮播
- 图片无限轮播
- 图片无限轮播
- 图片无限轮播
- 图片无限轮播
- 图片无限轮播
- 图片无限轮播
- 图片无限轮播
- iOS开发之无限轮播图片
- 无限轮播之网络图片
- 图片自动无限轮播
- 图片的无限轮播
- iOS 无限轮播图片
- 图片的无限轮播
- Banner 图片无限轮播
- Banner无限图片轮播
- LinearLayout 动态添加子Button,并自动换行
- Matlab读入的图像缘何和OpenCv的不一样?
- leetcode-- Lowest Common Ancestor of a Binary Search Tree
- 一键锁屏和清除数据
- oracle 内核参数二
- 图片轮播之无限轮播
- js 定时器、延时和周期
- 析构函数
- 图片轮播之自动轮播
- 属性动画
- 16.UISegmentedControl
- rt5350 捕获sn9c291 ov9712 模块jpeg图片效果
- POJ 2492 A Bug's Life(加权并查集)
- 以性别预测为例,谈谈数据挖掘中的分类问题