Ошибка в рисовании растрового XML - PullRequest
17 голосов
/ 28 сентября 2011

У меня проблемы с тем, что мой ресурс для рисования использует tileMode repeat.В некоторых случаях изображение просто растягивается, а иногда оно повторяется должным образом.

Ниже приведены XML-файлы, которые я использую для создания состояний кнопок:

Используется растягиваемое изображениедля повторения плитки

Image drawable used for tile repeated

^^^^^^^^^^^^^ 1014 *

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>

См.изображения ниже, о чем именно я говорю.

Normal state image properly repeated Pressed state image not repeated but stretched

Ответы [ 2 ]

22 голосов
/ 30 сентября 2011

Это известная ошибка, частично исправленная в Android 3.0 и полностью исправленная в ICS.

2 голосов
/ 20 ноября 2012

У нас была похожая проблема при записи 3.2 на устройстве Sony TV Google.Мы заметили очень похожее чередование фона, возникающее при использовании android:tileMode="repeat" на растровом изображении в качестве фонового изображения.

В этом случае исправление должно было отключить аппаратное ускорение для представления, содержащего растровое изображение, следующим образом (из функции в нашей деятельности):

View tile_holder = this.findViewById(R.id.tile_holder);
tile_holder.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...