View.isHardwareAccelerated () jest zawsze fałszywe

Mam widok, który jest przyspieszany sprzętowo na wielu urządzeniach. W obrębie tego widoku muszę być w stanie sprawdzić, czy używana jest akceleracja sprzętowa.Zgodnie z dokumentacją Android SDK, odbywa się to za pomocąView.isHardwareAccelerated(). Interesującą rzeczą jest to, że podczas testowania na urządzeniach, które obsługują akcelerację sprzętową, ta metoda zawsze zwraca wartość false, nawet jeśli same widoki są akcelerowane sprzętowo. (Ostatecznie to zweryfikowałem). Robi się bardziej mylący:

Jeśli zadzwonię doView.getLayerType() Widzę, że zawsze jest ustawiony naView.LAYER_TYPE_NONE. Jeśli zadzwonię doView.setLayerType(View.LAYER_TYPE_SOFTWARE) Mogę skutecznie wyłączyć przyspieszenie sprzętowe. Mogę go ponownie włączyć, dzwoniącView.setLayerType(View.LAYER_TYPE_HARDWARE) LUBView.setLayerType(View.LAYER_TYPE_NONE). Dlaczego miałbyView.LAYER_TYPE_NONE włączyć przyspieszenie sprzętowe ???

W przypadku urządzeń, które obsługują przyspieszenie hw, wydaje mi się, że mogę po prostu sprawdzić status, sprawdzając, czy nieView.LAYER_TYPE_SOFTWARE jest ustawiony, jednak podejrzewam, że ta metoda nie działa na urządzeniach, które nie obsługują przyspieszenia hw. Chciałbym wiedzieć, czy źle używamView.isHardwareAccelerated() lub jeśli jest po prostu zepsuty.

EDIT: Myślę, że jestem trochę bliżej zrozumienia problemu. To pytanie było również pomocne:

Wykryj przyspieszenie sprzętowe w czasie wykonywania: Android

Moja działająca teoria głosi, że View jeszcze nie wie, czy jest przyspieszany sprzętowo, czy nie, kiedy wywoływany jest jego konstruktor, czyli tam, gdzie wykonuję mój test. Jeśli tak jest, zastanawiam się, co mogę nadpisać w mojej klasie, która rozszerza widok, co pozwoli mi z powodzeniem sprawdzić przyspieszenie sprzętowe. Podejrzewam toView.onSizeChanged(...) zadziała, ale chciałbym uniknąć używania czegoś, co potencjalnie można by nazwać wielokrotnie.

EDYCJA # 2: Wygląda na to, że to było to. Przeniosłem moje zameldowanieView.onSizeChanged() i teraz raportuje poprawnie. Nadal zastanawiam się, czy w moim Widoku jest lepsze miejsce, w którym mogę przenieść ten czek.

questionAnswers(2)

yourAnswerToTheQuestion