当前位置:   article > 正文

Android Seekbar进度条末端显示不全的解决方法_android 获取seekbar分段为根据进度获取长度啥不是很精确

android 获取seekbar分段为根据进度获取长度啥不是很精确

调试环境基于Android 6.0。

在调整我们的应用UI时,如果使用到了seekbar,那可能会出现下面这各情况,进度条末端的切图形状没有显示出来,比如我的切图末端 是圆弧形,显示的却是直角形。
seekbar红框处没有显示完全

这种情况下可以用如下的方式解决:

  1. <SeekBar
  2. android:="@+id/seek"
  3. android:layout_width="@dimen/seekbar_width"
  4. android:layout_height="wrap_content"
  5. android:layout_gravity="center_vertical"
  6. android:progressDrawable="@drawable/seekbar_picture"
  7. android:thumb="@drawable/thumb"
  8. android:paddingEnd="10px" ---设置内边距右对齐10像素,避免thumb被覆盖
  9. android:paddingStart="10px" ---设置内边距左对齐10像素,避免thumb被覆盖
  10. />

关键是最后两句,指定具体的seekbar进度条长度数值 。对齐像素由thumb的直径决定。

以下是具体说明:

首先需要确定,Seekbar的切图,其三属性background、progress、secondaryProgress与thumb其高度需要保持一致。

其次,为了防止thumb在起点或末端时被覆盖,Android缺省的参数中是有设置padding,即内边距有被设置。

实际切图大小

假设切图提供的progress为400px的长度,XML定义的progress为400px,thumb半径为10px。
则由上图可知实际显示的progress只有400 -10*2 =390px,故progress有20px没有显示完全。

因此解决的方法之一正如开头所述:

  1. 在不改变UI布局的情况下,将切图裁剪一个thumb直径的像素长度。
  2. 定义padding,明确参数,确定bakground及progress等从seekbar控件内部偏移几个像素(偏移量大于等于thumb半径)为起点绘制。

经过上述步骤 ,即可显示完整的seekbar。

备注:
seekbar中background的绘制是循环绘制的,若xml定义的长度远超切图的长度,会再次出现一个进度条,故切图长度需明确。
若设置paddingEnd和paddingStart为0px,则seekbar进度条与xml定义长度一致,但这时会出现thumb在起点与末端 会有一半图形被覆盖的情况,所以最好是预留一个半径的像素。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/474138
推荐阅读
相关标签
  

闽ICP备14008679号