Подтвердить что ты не робот

Исправлена ​​ошибка с битами Bitmap tileMode?

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

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

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

Image drawable used for tile repeated

^^^^^^^^^^^^^

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 repeatedPressed state image not repeated but stretched

4b9b3361

Ответ 1

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

Ответ 2

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

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

View tile_holder = this.findViewById(R.id.tile_holder);
tile_holder.setLayerType(View.LAYER_TYPE_SOFTWARE, null);