自动轮播图是安卓开发常用控件,如果在需要开发时,每个地方去写,这样就比较耗时、费力,不妨可以封装成一个自定义控件,在需要使用使只去设置数据就可以了,这样在后续开发中不仅省时,而且可以更好的排错。上面github地址中提供了源码,需要更详细的了解可以去阅读源码一下。
1507193217(1).jpg
一、实现自定义属性
虽然这个并不难,但也是自定义控件常用的特点
首先将控件继承RelativeLayout,并在values文件夹attrs.xml文件中声明
读取属性
TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.AutoViewpager);
mDuration = ta.getInteger(R.styleable.AutoViewpager_duration, NORMAL_DURATION);
mDotSize = ta.getDimensionPixelSize(R.styleable.AutoViewpager_dotSize, DOT_NORAML_SIZE);
mIsAuto = ta.getBoolean(R.styleable.AutoViewpager_isAuto, true);
mDrawable = ta.getDrawable(R.styleable.AutoViewpager_dotSrc);
mDotPosition = ta.getInteger(R.styleable.AutoViewpager_dotPosition, 2);
//释放资源
ta.recycle();
在代码使用读取出来的属性
注意:在小圆点使用Drawable图片时,由于涉及到图片的selected属性,所以每一个小圆点需要使用到一个新的Drawable,所以需要使用的图片的克隆,否则一个Drawable对象如果使用selected,会引起所有的图片selected,无法实现小圆点的选中状态。
Drawable newDrawable = mDrawable.getConstantState().newDrawable();
imageView.setImageDrawable(newDrawable);
二、设置Viewpager的适配器
为了能无限轮播,将getCount()方法返回Integer的最大值
@Override
public int getCount() {
if (mList != null) {
return Integer.MAX