Android评分RationBar控件使用详解
Android评分RationBar控件,供大家参考,具体内容如下
主要是不想用太多三方的控件,所以决定尽可能自己写,最近有写一个评分的页面,废话不多说直接上图
我觉得嘛这个东西用ViewGroup包起来感觉会写很多View于是我决定使用之定义控件直接上代码
/** *评论专用星星 **宽高都不能用wrap_content必须使用固定值或者match_parent *
*MIXED:在控件的宽度范围内等分星星 *
*SCROLL:根据星星的宽度和每个星星之间的间距画星星 */ publicclassSuperRationBarextendsViewimplementsView.OnTouchListener{ finalpublicstaticintMIXED=0; finalpublicstaticintSCROLL=1; //不传默认为MIXED privateintmode=MIXED; //需要建立多少星星不传默认为5 privateintnumber=5; //单个星星的宽度这里宽度和高度相等必传 privateintstartWidth=50; //每个星星之间的间距默认20(mode==MIXED用不到) privateintstartPadding=10; //是否已经初始化试图 privatebooleanisInit=false; //被选中的个数 privateintselectNumber=0; //选中的样式 privateBitmapbmSel; //未选中的样式 privateBitmapbmNol; //记录每个星星的位置用,分割 privateList
pointList; //画笔 privatePaintmPaint; publicSuperRationBar(Contextcontext,AttributeSetattrs){ super(context,attrs); init(context,attrs); init(context); } privatevoidinit(Contextcontext){ mPaint=newPaint(); setOnTouchListener(this); } privatevoidinit(Contextcontext,AttributeSetattrs){ TypedArraya=context.obtainStyledAttributes(attrs,R.styleable.SuperRationBar); mode=a.getInteger(R.styleable.SuperRationBar_mode,MIXED); number=a.getInteger(R.styleable.SuperRationBar_SuperRationBar_number,5); startWidth=(int)a.getDimension(R.styleable.SuperRationBar_SuperRationBar_startWidth,50); startPadding=(int)a.getDimension(R.styleable.SuperRationBar_SuperRationBar_startPadding,10); a.recycle(); } @Override publicvoiddraw(Canvascanvas){ super.draw(canvas); if(!isInit){ return; } {//记录每个星星的位置用,分割 pointList=newArrayList<>(); } if(mode==MIXED){ //单个星星的宽度 intitemWidth=getWidth()/number; //根据每个星星之间的间距画星星 for(inti=0;i rl&&x 注释得还是挺详细的这里直接上使用代码
SuperRationBar_startWidth这个为必传而且只能在布局里面传 RationBar0.setImageResIds(R.mipmap.img_ration_bar_sel,R.mipmap.img_ration_bar_nol) .launcher();使用就这么一句调用
intnumber0=RationBar0.getSelectNumber();可以获取到当前的评分是多少
以上代码可以复制粘贴使用有经验的小伙伴们改改代码就可以实现别的功能了
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。