星级评分条,不用ratingbar

说起星级评分,最先想到的就是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的背景图片~~...

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值