Android 自定义水平进度条位图可绘制对象被拉伸
我正在 Android 应用程序中使用可绘制的自定义进度条作为水平进度条。这是一个两层可绘制的。第一层是带有 tileMode="repeat"
的斜条纹 png 图像。第二层在条纹上添加阴影。这是 Progress_bar_horizontal.xml 可绘制对象的样子:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/progress">
<clip>
<layer-list>
<item>
<bitmap android:src="@drawable/diagonal_stripes_0" android:tileMode="repeat" />
</item>
<item>
<nine-patch android:src="@drawable/inset_shadow" />
</item>
</layer-list>
</clip>
</item>
</layer-list>
该可绘制对象在主题中用于重新设计进度条控件的样式:
<style name="Theme.Custom" parent="android:Theme.Light">
<item name="android:progressBarStyleHorizontal">@style/Widget.ProgressBar.Horizontal.Custom</item>
</style>
<style name="Widget.ProgressBar.Horizontal.Custom" parent="android:Widget.ProgressBar.Horizontal">
<item name="android:background">@drawable/bg_inset_gray</item>
<item name="android:progressDrawable">@drawable/progress_bar_horizontal</item>
<item name="android:indeterminateDrawable">@drawable/progress_bar_indeterminate_horizontal</item>
</style>
这个想法是制作一个斜条纹进度条,它不会拉伸,但宽度会随着操作的进行而增加。这就是使用
的原因。
大多数时候它工作得很好。然而,有时(没有任何机会故意重现)它开始拉伸可绘制的单个图块,而不是适当地剪切它。
该应用程序使用 android:minSdkVersion="7"
开发,并在采用 Android 2.2 的 HTC Desire 上运行。
任何帮助将不胜感激。
I am using custom progress bar drawable for horizontal progress bar in Android application. It is a two-leyered drawable. First layer is diagonally striped png image with tileMode="repeat"
. Second layer adds shadow over the stripes. This is how the progress_bar_horizontal.xml drawable looks like:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/progress">
<clip>
<layer-list>
<item>
<bitmap android:src="@drawable/diagonal_stripes_0" android:tileMode="repeat" />
</item>
<item>
<nine-patch android:src="@drawable/inset_shadow" />
</item>
</layer-list>
</clip>
</item>
</layer-list>
This drawable is used in theme to restyle the progress bar control:
<style name="Theme.Custom" parent="android:Theme.Light">
<item name="android:progressBarStyleHorizontal">@style/Widget.ProgressBar.Horizontal.Custom</item>
</style>
<style name="Widget.ProgressBar.Horizontal.Custom" parent="android:Widget.ProgressBar.Horizontal">
<item name="android:background">@drawable/bg_inset_gray</item>
<item name="android:progressDrawable">@drawable/progress_bar_horizontal</item>
<item name="android:indeterminateDrawable">@drawable/progress_bar_indeterminate_horizontal</item>
</style>
The idea is to make a diagonnally-striped progress bar which does not strerch, but grows in width as the operation progresses. That is why <clip>
is used.
It works fine most of the time. However from time to time (without any chances to reproduce on purpose) it starts to stretch single tile of the drawable instead of clipping it appropriately.
The application is developed with android:minSdkVersion="7"
and running on HTC Desire with Android 2.2.
Any help would be appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论