View.isHardwareAccelerated () всегда ложно
У меня есть View, аппаратно ускоренный на многих устройствах. В этом представлении мне нужно проверить, используется ли аппаратное ускорение.Согласно документации Android SDKэто делается с помощьюView.isHardwareAccelerated()
, Интересно, что при тестировании на устройствах, которые поддерживают аппаратное ускорение, этот метод всегда возвращает false, даже если сами представления в действительности ускоряются аппаратно. (Я убедительно подтвердил это). Это становится более запутанным:
Если я позвонюView.getLayerType()
Я вижу, что это всегда установленоView.LAYER_TYPE_NONE
, Если я позвонюView.setLayerType(View.LAYER_TYPE_SOFTWARE)
Я могу эффективно отключить аппаратное ускорение. Я могу включить его, позвонив либоView.setLayerType(View.LAYER_TYPE_HARDWARE)
ИЛИ ЖЕView.setLayerType(View.LAYER_TYPE_NONE)
, Почему быView.LAYER_TYPE_NONE
включить аппаратное ускорение ???
Двигаясь дальше, для устройств, которые поддерживают ускорение hw, кажется, что я могу просто проверить статус, проверяя,View.LAYER_TYPE_SOFTWARE
установлено, однако у меня есть подозрения, что этот метод не будет работать на устройствах, которые не поддерживают ускорение hw. Я хотел бы знать, злоупотребляю ли яView.isHardwareAccelerated()
или если он просто сломан.
РЕДАКТИРОВАТЬ: Я думаю, что я немного ближе к пониманию проблемы. Этот вопрос также был полезен:
Обнаружение аппаратного ускорения во время выполнения: Android
Моя рабочая теория состоит в том, что View еще не знает, ускоряется ли его аппаратное обеспечение или нет, когда вызывается его конструктор, и именно здесь я делаю свою проверку. Если это так, мне интересно, что я могу переопределить в своем классе, который расширяет представление, которое позволит мне успешно проверить аппаратное ускорение. Я подозреваю чтоView.onSizeChanged(...)
будет работать, но я бы хотел избежать использования чего-то, что потенциально может быть вызвано много раз.
РЕДАКТИРОВАТЬ № 2:
Похоже, это было так. Я перенес мой чек вView.onSizeChanged()
и теперь он сообщает правильно. Мне все еще интересно, есть ли лучшее место в моем виде, хотя я могу переместить этот чек.