实现轮转广告带底部指示的自定义ViewPager控件

在项目中经常需要使用轮转广告的效果,在android-v4版本中提供的ViewPager是一个很好的工具,而一般我们使用Viewpager的时候,都会选择在底部有一排指示物指示当前显示的是哪一个page,下面我们就做这个功能的实现

有许多博客和开源项目都致力于这项工作,但是他们的工作大都是为了制作类似于启动页的效果,ViewPager全屏显示,或者自己可操作的属性难以满足要求,因此我想把ViewPager和底部的指示物封装在一个自定义的View中,作为一个新的控件在xml中使用,所以自己来实现了一个。
而且,在用自定义视图封装ViewPager时,出现了一个问题,就是ViewPager的所有页不能全部显示的问题,不知道是因为这个问题太简单还是什么其它原因,在网上并没有搜到这个问题的解决方法(事实上连提问的人都没有……),困扰了我半个多星期,终于解决,这一点在正文里会介绍,先来贴一下效果图:

下面来介绍我的实现过程:

首先在res/values/目录下创建attrs.xml文件,用来定义新View自定义的属性:

复制代码 代码如下:



   
       
       
       
       
       
       
       
       
       
   


其中:

dotsViewHeight定义底部指示物所在视图(我定义为一个LinearLayout)的高度,也就是示例图中圆圈所在灰色透明部分的高度,默认为40像素;

dotsSpacing定义底部指示物之间的间距,默认为0;

dotsFocusImage定义代表当前页的指示物的样子;

dotsBlurImage定义代表非当前页的指示物的样子;

android:scaleType定义ViewPager中ImageView的scale类型,如果ViewPager中的View不是ImageView,则此属性没有效果,默认为ScaleType.FIT_XY;

android:gravity定义底部指示物在父View(即示例灰色透明部分)的gravity属性;

dotsBackground定义底部指示物的背景颜色或背景图;

dotsBgAlpha定义底部指示物的背景颜色或背景图的透明度,取值为0-1,0代表透明;

changeInteval定义ViewPager自动切换的时间间隔,单位为ms,默认为1000ms(这个地方实际的间隔比设置的要大,不知道是什么原因,望高手解答);

下一步,定义PageAdapter,为ViewPager提供内容:

复制代码 代码如下:

public class ViewPagerAdapter extends PagerAdapter {

    private List views = null;
    private ScaleType scaleType;

    public ViewPagerAdapter(List views) {
        this(views, ScaleType.CENTER);
    }

    public ViewPagerAdapter(List views, ScaleType scaleType) {
        super();
        this.views = views;
        this.scaleType = scaleType;
    }

以上就是实现轮转广告带底部指示的自定义ViewPager控件的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » 移动