Как понять использует ваше приложение аппаратное ускорение или нет

Я хочу включить аппаратное ускорение для приложения.

Я добавил в строку манифеста Android

 <application
        android:hardwareAccelerated="true"/>

Я думаю, что эта строка должна включать аппаратное ускорение для всех представлений в приложении, но когда я проверяю (используя метод view.getLayerType()), я получаю результат 0. Я делаю вывод, что вы не используете аппаратное ускорение.

Я не понимаю, как работает аппаратное ускорение.

Почему, если я включил аппаратное ускорение на уровне приложения, все представления в приложении для вызова метода view.getLayerType() возвращают 0? Я ожидаю, что должно вернуться 2, потому что я включил аппаратное ускорение на более высокий уровень.

Не правда ли?

Получается, что для каждого вида вам нужно установить свойство android:layerType в xml?


person AndreyNik    schedule 06.02.2015    source источник


Ответы (1)


Упомянутый вами тег включает аппаратное ускорение, но оно вам нужно только для API 13 или ниже, так как оно по умолчанию включено в API версии 14 и выше.

Чтобы проверить, использует ли ваше представление (или Canvas для пользовательских представлений, которые вы рисуете) аппаратное ускорение, вы можете вызвать

View.isHardwareAccelerated()
Canvas.isHardwareAccelerated()

getLayerType() возвращает тип слоя вида, который, как и ожидалось, по умолчанию равен NONE:

По умолчанию представление не имеет слоя, а тип слоя — LAYER_TYPE_NONE.

Кроме того, имейте в виду, что вы должны вызывать isHardwareAccelearted() после того, как представление прикреплено к окну, чтобы получить правильный ответ. До этого ответ мог быть неверным.

Ваше здоровье

person m.hashemian    schedule 15.04.2015
comment
View.isHardwareAccelerated() действительно возвращает true. Спасибо - person AndreyNik; 01.06.2015