我遇到的问题是我的drawable资源使用了tileMode repeat。在某些情况下,图像只是拉伸,有时会被正确重复。
以下是我用来创建按钮状态的xml文件:
用于重复拼贴的图片可绘制
^^^^^^^^^^^^^
btn_menu_item.xml
<selector
xmlns:android="http://schemas.android.com/apk/res/android"
android:constantSize="true" android:visible="true" android:variablePadding="true">
<!-- selected -->
<item
android:state_selected="true"
android:drawable="@drawable/menu_item_selected"/>
<!-- focused -->
<item
android:state_focused="true"
android:drawable="@drawable/menu_item_pressed"/>
<!-- pressed -->
<item
android:state_pressed="true"
android:drawable="@drawable/menu_item_pressed"/>
<!-- normal -->
<item
android:state_pressed="false"
android:state_focused="false"
android:drawable="@drawable/menu_item_normal"/>
</selector>
menu_item_normal.xml
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_selected="true">
<shape android:shape="rectangle">
<gradient
android:startColor="#757575"
android:endColor="#929292"
android:angle="90"/>
</shape>
</item>
<item>
<bitmap
android:src="@drawable/menu_lines_texture"
android:tileMode="repeat"
android:dither="true"/>
</item>
</layer-list>
menu_item_pressed.xml
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_selected="true">
<shape android:shape="rectangle">
<gradient
android:startColor="#dd4e00"
android:endColor="#c64600"
android:angle="90"/>
</shape>
</item>
<item>
<bitmap
android:src="@drawable/menu_lines_texture"
android:tileMode="repeat"
android:dither="true"/>
</item>
</layer-list>
请参阅下面的图片,我正在谈论的是什么。
答案 0 :(得分:22)
这是一个已知错误,在Android 3.0中已部分修复,并在ICS中完全修复。
答案 1 :(得分:2)
我们在索尼的Google TV设备上写了类似的3.2问题。我们注意到在位图上使用android:tileMode="repeat"
作为背景图像时出现了一些非常相似的背景条纹。
在这种情况下,修复是关闭包含位图的视图上的硬件加速(如我们的Activity中的函数):
View tile_holder = this.findViewById(R.id.tile_holder);
tile_holder.setLayerType(View.LAYER_TYPE_SOFTWARE, null);