美文网首页
android 评分设置显示小星星

android 评分设置显示小星星

作者: 毹毹 | 来源:发表于2017-05-16 10:31 被阅读257次

    在android中经常会遇到评分这中情况,如下图所示

    网络来源

    当然android中本身就可以实现---RatingBar控件

    <RatingBar

    android:id="@+id/ratingBar"

    android:numStars="5" //总级别,总分,星星个数

    android:rating="1.5"  //当前级别,分数,星星个数

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"/>

    大多时候你并不想用android原生的组件,并不是你觉得他太low,而是往往有一定局限,无法实现你想要的效果,这时候就自己定制一款吧!

    我想要实现由自己的图来实现评分的星星数量和颜色。

    如下图

    网络来源

    我有五颗星星作为评价(不可点,只是显示状态)

    下面来具体实现下:

    1、自定义View----GradeStarView

    GradeStarView继承LinearLayout

    private Context mContext;    private int[] mImages;    private int number = 5;    private ListmImgGradeStars;

    public GradeStarView(Context context) {

    //        super(context);

    this(context, null);

    }

    public GradeStarView(Context context, AttributeSet attrs) {

    super(context, attrs);

    this.mContext = context;

    this.setOrientation(LinearLayout.HORIZONTAL);

    mImages = new int[]{R.drawable.ic_xx,

    R.drawable._xx, R.drawable.ic_xx,

    R.drawable.ic_xx, R.drawable.ic_xx,

    R.drawable.ic_xx_no};

    mImgGradeStars = new ArrayList();

    LayoutParams layoutParams = new LayoutParams(LayoutParams.WRAP_CONTENT,

    LayoutParams.WRAP_CONTENT);

    layoutParams.leftMargin = 2;

    layoutParams.rightMargin = 2;

    for (int i = 0; i < number; i++) {

    ImageView imageView = new ImageView(mContext);

    mImgGradeStars.add(imageView);

    this.addView(imageView, layoutParams);

    }

    }

    //设置显示星星的方法

    public voidsetRating(intrating) {

    intratingCount = rating /2;

    intratingHalf = ((rating %2) *5) %10;

    for(int i=0;i<number;i++){

    finalImageViewratingImage =mImgGradeStars.get(i);

    if(i <= (ratingCount-1)) {

    ratingImage.setImageResource(mImages[0]);

    }else if(i ==ratingCount) {

    if(ratingHalf>0&&ratingHalf<=5) {

    ratingImage.setImageResource(mImages[mImages.length-2]);

    }else if(ratingHalf >5&& ratingHalf <=9) {

    ratingImage.setImageResource(mImages[0]);

    }else if(ratingHalf ==0) {

    ratingImage.setImageResource(mImages[mImages.length-1]);

    }

    } else {

    ratingImage.setImageResource(mImages[mImages.length - 1]);

    }

    }

    }

    调用的时候:

    gradeStarView= (GradeStarView) findViewById(R.id.grade_StarView);

    gradeStarView.setRating(Integer.parseInt(star));

    相关文章

      网友评论

          本文标题:android 评分设置显示小星星

          本文链接:https://www.haomeiwen.com/subject/etiiottx.html