JAVA
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
app.iMeter = progress;
Bitmap b = BitmapFactory.decodeResource(getResources(), R.drawable.slider_pad_2x).copy(Bitmap.Config.ARGB_8888, true);
float scale = getResources().getDisplayMetrics().density;
float x = (int) (17 * scale + 0.5f);
int y = (int) ((b.getHeight()/2-3) * scale + 0.5f);
if(seekBar.getProgress() > 9) {
x = (int) (14 * scale + 0.5f);
}
if(seekBar.getProgress() > 99) {
x = (int) (11 * scale + 0.5f);
}
Canvas canvas = new Canvas(b);
canvas.drawText(""+progress, x, y, paint);
BitmapDrawable bd = new BitmapDrawable(b);
bd.setBounds(0, 0, bd.getIntrinsicWidth(), bd.getIntrinsicHeight());
seekBar.setThumb(bd);
}
XML
<SeekBar
android:id="@+id/seekBar1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="10dp"
android:background="@drawable/slider_background_2x"
android:max="200"
android:paddingLeft="17dp"
android:paddingRight="16dp"
android:progress="0"
android:progressDrawable="@drawable/transparant_dot"
android:thumb="@drawable/slider_pad_2x" />
我正在 2 个不同版本的 android 设备上对其进行测试:
- 安卓 2.3.6
- 安卓 4.2.2
在 4.2.2 上,它可以正常工作。可绘制对象显示在其上绘制的进度值。在 2.3.6 上,拇指卡在开头。当我尝试移动它时,拇指上的值确实会改变,但它仍然卡住。
我可以删除 setBounds,它仍然适用于 4.2.2,但在 2.3.6 上,当我触摸它时,拇指将完全消失。
有任何想法吗?