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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。