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() и теперь он сообщает правильно. Мне все еще интересно, есть ли лучшее место в моем виде, хотя я могу переместить этот чек.

Ответы на вопрос(2)

Ваш ответ на вопрос