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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。