Android BannerView通用封装详解
之前封装过一个,但总觉得不够优雅,就有了这个通用封装,很简洁,不知道够不够优雅,不过原来那个有跟随指示器和丝滑滑动效果,感兴趣可以看一下。
封装过程
1、自定义属性
selectPoint:选中指示器图标
normalPoint:未选中指示器图标
pointWidth:图标宽度
switchTime:轮播间隔事件
location:指示器位置,下中或下右
2、初始化View
初始化ViewPager和指示器组合View
3、绑定数据源
通过setImageData设置轮播图数据源
4、绑定点击事件
通过OnPageClickListener绑定点击事件
5、开启关闭轮播
start和stop方法开启和关闭轮播
用法
xml中
activity中
int[]imageList={R.drawable.me_top,R.drawable.me_top,R.drawable.me_top,R.drawable.me_top}; NewBannerViewbannerView=view.findViewById(R.id.bannerView); bannerView.setImageData(imageList); bannerView.start(); bannerView.setOnPageClickListener(newNewBannerView.OnPageClickListener(){ @Override publicvoidonPageClick(intposition){ Toast.makeText(getActivity(),position+"",Toast.LENGTH_SHORT).show(); } });
BannerView
publicclassNewBannerViewextendsRelativeLayoutimplementsView.OnClickListener{ privateContextcontext; privateintselectPoint,normalPoint; privatefloatpointWidth=7; privateintlocation; privateintCENTER=0,RIGHT=1; privateintlastPosition=0; privateViewPagerviewPager; privateintswitchTime=5000; privateint[]images; privateOnPageClickListeneronPageClickListener; privateHandlerhandler=newHandler(newHandler.Callback(){ @Override publicbooleanhandleMessage(Messagemsg){ if(msg.what==101){ viewPager.setCurrentItem(viewPager.getCurrentItem()+1); start(); } returnfalse; } }); publicNewBannerView(Contextcontext){ this(context,null); } publicNewBannerView(Contextcontext,AttributeSetattrs){ this(context,attrs,0); } publicNewBannerView(Contextcontext,AttributeSetattrs,intdefStyleAttr){ super(context,attrs,defStyleAttr); this.context=context; initAttr(attrs); } privatevoidinitAttr(AttributeSetattrs){ TypedArrayarray=context.obtainStyledAttributes(attrs,R.styleable.NewBannerView); selectPoint=array.getResourceId(R.styleable.NewBannerView_selectPoint,R.mipmap.ic_launcher_round); normalPoint=array.getResourceId(R.styleable.NewBannerView_normalPoint,R.mipmap.ic_launcher_round); pointWidth=array.getDimension(R.styleable.NewBannerView_pointWidth,pointWidth); location=array.getInteger(R.styleable.NewBannerView_location,RIGHT); switchTime=array.getInteger(R.styleable.NewBannerView_switchTime,switchTime); array.recycle(); } publicvoidsetImageData(finalint[]images){ this.images=images; finalLinearLayoutll_point=newLinearLayout(context); LayoutParamslayoutParams=newLayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); layoutParams.addRule(ALIGN_PARENT_BOTTOM,RelativeLayout.TRUE); layoutParams.bottomMargin=20; if(location==CENTER){ layoutParams.addRule(CENTER_HORIZONTAL,RelativeLayout.TRUE); }else{ layoutParams.addRule(ALIGN_PARENT_RIGHT,RelativeLayout.TRUE); layoutParams.rightMargin=20; } LinearLayout.LayoutParamsparams1=newLinearLayout.LayoutParams(UIUtil.dip2px(pointWidth),UIUtil.dip2px(pointWidth)); LinearLayout.LayoutParamsparams2=newLinearLayout.LayoutParams(UIUtil.dip2px(pointWidth),UIUtil.dip2px(pointWidth)); params1.leftMargin=0; params2.leftMargin=UIUtil.dip2px(pointWidth); for(inti=0;i以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。