简单的实现自定义轮播图加小圆点控件

在Android的开发中,难免会遇到各种各样的技术型难题。一些比较新奇好玩的一些效果。原生的没有这些效果,so,我们只有自己写一些自定义控件,来满足我们的需求了。

轮播图控件,相信网上会有各种各样的控件,但是本着,学一点会一点的态度,发表代码,仅供参考

上代码

首先是视图布局



    
        
    
    

    

当然,小圆点需要自己绘制

       选中状态的小圆点




    
    
    
    


    未选中状态的小圆点




    
    
    
    

下面是判断选中状态的代码




    
    
    
    



这里是自定义控件的代码

public class Banner extends RelativeLayout {
    private MyHandler myHandler = new MyHandler();
    //使用静态域,使其可以类名.调用方法
    private static LinearLayout ll;
    private static ViewPager vp;
    private static List imageViews = new ArrayList<>();//图片的集合
    private static List primes = new ArrayList<>();//小圆点的集合
    private static Context myContext;
    
    /**
     * 重写三个构造方法
     */
    public Banner(Context context) {
        this(context,null);

    }

    public Banner(Context context, AttributeSet attrs) {
        this(context, attrs,0);
    }

    public Banner(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        myContext = context;
        //获取本类视图
        View view = View.inflate(context,R.layout.banner_layout,this);
        //获取控件
        vp = view.findViewById(R.id.vp);
        ll = view.findViewById(R.id.ll);
    }
    //设置适配器供调用
    public void setAdapter(PagerAdapter pagerAdapter){

        vp.setAdapter(pagerAdapter);
        vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            //当页面滑动的时候回调方法
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }
            //当松开的时候回调方法
            @Override
            public void onPageSelected(int position) {
                position = position%primes.size();
                for (int i=0; i list){
            //把获取到的视图赋值给本类视图
            imageViews = list;
            //设置小圆点,小圆点的数量要和视图一样多
            for(int i=0;i
下面是使用此控件的代码一个案例

//获取到的图片的集合
        List data1 = getAdBean.getData();
        //得到一个存放图片(视图)的集合
        list = new ArrayList();
        //便利此集合 这里的data1是我获取的图片数据的集合
        for (int i=0;i
好啦,这是一个简单的自定义控件,来实现轮播图+小圆点



你可能感兴趣的:(简单的实现自定义轮播图加小圆点控件)