Android自定义View实现五星好评效果
本文实例为大家分享了Android实现五星好评效果的具体代码,供大家参考,具体内容如下
这个效果想必大家都非常熟悉,那么Android如何自定义实现这种效果呢?
首先自定义属性:
下面看看具体实现:
/** *CreatedbyMichaelon2019/11/1. */ publicclassRatingStarextendsView{ privateintnormalId; privateintfocusId; privateBitmapnormalImg; privateBitmapfocusImg; privateintnumber; privateintw1; privateinth1; privateintmarginLeft; privateintmarginTop; privateintmarginBottom; privateintmarginRight; privateintheight; privateintwidth; privateintp; privatefloatw0; privateinti0; privateintmGrade; publicRatingStar(Contextcontext){ this(context,null); } publicRatingStar(Contextcontext,@NullableAttributeSetattrs){ this(context,attrs,0); } publicRatingStar(Contextcontext,@NullableAttributeSetattrs,intdefStyleAttr){ super(context,attrs,defStyleAttr); TypedArrayarray=context.obtainStyledAttributes(attrs,R.styleable.RatingStar); normalId=array.getResourceId(R.styleable.RatingStar_starNormal,0); focusId=array.getResourceId(R.styleable.RatingStar_starFocus,0); normalImg=BitmapFactory.decodeResource(getResources(),normalId); focusImg=BitmapFactory.decodeResource(getResources(),focusId); number=array.getInteger(R.styleable.RatingStar_starNumber,5); array.recycle(); i0=-1; } @Override protectedvoidonMeasure(intwidthMeasureSpec,intheightMeasureSpec){ w1=normalImg.getWidth(); h1=normalImg.getHeight(); //中间间隔 p=30; marginTop=20; marginBottom=20; marginLeft=20; marginRight=20; height=h1+marginTop+marginBottom; width=w1*number+(number-1)*p+marginLeft+marginRight; setMeasuredDimension(width,height); } @Override protectedvoidonDraw(Canvascanvas){ super.onDraw(canvas); for(inti=0;i最后看看具体布局中使用:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。