最近在开发一个需求的时候,要做一个seekbar,它是这样的:
背景和进度条都好说,但是那个滑动按钮就不好整了,里面的图片是用户的头像,需要动态更新的,而且用户的头像也没有这个黄色的外边框啊,我查了一下seekbar的方法,发现seekbar.setThumb(Drawable drawable),那我怎么才能生成这样的drawable呢,网上找了半天,发现了LayerDrawable,看着很眼熟,具体查看之后才发现,原来LayerDrawable就是我们在xml里定义的layer-list,就是一个层叠的drawable。
Drawable[] array = new Drawable[2]; array[0] = getContext().getResources().getDrawable(R.drawable.bg_tots_select_seek_thumb); array[1] = frontDrawable; LayerDrawable result = new LayerDrawable(array); result.setLayerInset(0, 0, 0, 0, 0); result.setLayerInset(1, 7, 7, 7, 7); mSeekBar.setThumb(result); mSeekBar.setThumbOffset(0);
所以我就用这个方法生成了seekbar的thumb,LayerDrawable需要传入一个drawable数组,数组里的drawable从下到上层叠在一起,setLayerInset()方法是给drawable设置padding的,第一个参数是drawable的位置,后面四个参数对应着left,top,right,bottom的padding。
生成了drawable之后用seekbar.setThumb方法就能把drawable设置成按钮了,最好setThumbOffset是指按钮不能超出seekbar的宽度。