星级评分条,不用ratingbar

作者: 极分享 | 来源:发表于2016-03-10 10:28 被阅读359次

    星级评分条,不用ratingbar#

    使用seekbar

    说起星级评分,最先想到的就是ratingbar...但是实在是不好用,UI适配起来太麻烦...(我使用的屏幕适配方案是像素缩放万能式,就是所有布局文件里不用dp,全用px)... 所以在网上找了找seekbar的自定义,决定使用这个.

    首先先在布局文件里定义一个seekbar

    复制代码

    <SeekBar              android:id="@+id/item_evaluate_list_sbr_level"              android:layout_width="420px"              android:layout_height="86px"              android:background="@drawable/evaluate_zero_stars"              android:max="100"              android:progress="25"              android:layout_marginRight="30px"              android:progressDrawable="@null"              android:thumb="@null"              android:thumbOffset="@null"              android:visibility="visible"/>
    

    图片我准备了这几张:








    什么?你想要半星?...自己改去..
    接下来是重点,seekbar的监听:

    复制代码

    sbrLevel.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {                    @Override                  public void onStopTrackingTouch(SeekBar seekBar) {                    }                    @Override                  public void onStartTrackingTouch(SeekBar seekBar) {                    }                    @Override                  public void onProgressChanged(SeekBar seekBar, int progress,                                                boolean fromUser) {                      String level = "";                      if (progress >= 0 && progress <= 20) {                          level = "1";                          seekBar.setBackgroundResource(R.drawable.evaluate_one_stars);                      } else if (progress > 20 && progress <= 40) {                          level = "2";                          seekBar.setBackgroundResource(R.drawable.evaluate_two_stars);                      } else if (progress > 40 && progress <= 60) {                          level = "3";                          seekBar.setBackgroundResource(R.drawable.evaluate_three_stars);                      } else if (progress > 60 && progress <= 80) {                          level = "4";                          seekBar.setBackgroundResource(R.drawable.evaluate_four_stars);                      } else {                          level = "5";                          seekBar.setBackgroundResource(R.drawable.evaluate_five_stars);                      }                        mList.get(position).setLevel(level);                  }              });
    

    嗯,原理就是通过进度,改变seekbar的背景图片~~...

    这用着舒服多了,星星的间距,大小,样式统统扔给美工...哈哈哈哈哈

    相关文章

      网友评论

        本文标题:星级评分条,不用ratingbar

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