Почему я не могу принудительно отобразить одно из своих представлений в программном обеспечении?

В пользовательском представлении, которое у меня есть, я использую Canvas.drawBitmap с исходным растровым изображением, ширина которого превышает 2048 пикселей. Это, конечно, вызывает проблемы, когда аппаратное ускорение включено, когда LogCat извергает W/OpenGLRenderer(4968): Bitmap слишком велик для загрузки в текстуру при каждом вызове drawBitmap.

Поэтому, чтобы обойти это, я попытался вызвать setLayerType(View.LAYER_TYPE_SOFTWARE, null) в своем представлении. Единственная проблема в том, что это, кажется, не помогает. Когда я пытаюсь запустить свое приложение, LogCat по-прежнему выдает предупреждения, и в итоге ничего не рисуется.

Я не могу понять, почему это так. В этой статье на сайте Android четко сказано:

Вы можете отключить аппаратное ускорение для отдельного представления во время выполнения с помощью следующего кода:

myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

Я что-то делаю не так? Почему Android не соблюдает вызов setLayerType?


[если это важно: я провожу тестирование на Samsung Galaxy Tab 10.1 под управлением Android 3.2]


comment
Проверьте canvas.isHardwareAccelerated(). Это может отличаться от представления   -  person imort    schedule 18.02.2013


Ответы (1)


Сначала попробуйте изменить размер растрового изображения. Используйте createBitmap.

person Trine    schedule 07.08.2012