星级评分条|星级评分条,不用ratingbar

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


图片我准备了这几张:

星级评分条|星级评分条,不用ratingbar
文章图片

星级评分条|星级评分条,不用ratingbar
文章图片

星级评分条|星级评分条,不用ratingbar
文章图片

星级评分条|星级评分条,不用ratingbar
文章图片

星级评分条|星级评分条,不用ratingbar
文章图片

星级评分条|星级评分条,不用ratingbar
文章图片

什么?你想要半星?...自己改去..
接下来是重点,seekbar的监听:
复制代码
sbrLevel.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {@Overridepublic void onStopTrackingTouch(SeekBar seekBar) {}@Overridepublic void onStartTrackingTouch(SeekBar seekBar) {}@Overridepublic 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】这用着舒服多了,星星的间距,大小,样式统统扔给美工...哈哈哈哈哈

    推荐阅读