W niestandardowym widoku, używam Canvas.drawBitmap ze źródłową bitmapą, która jest szersza niż 2048px. To oczywiście powoduje problemy przy włączonej akceleracji sprzętowej, a LogCat wypluwa "W/OpenGLRenderer (4968): Bitmapa jest zbyt duża, aby można ją było załadować do tekstury" za każdym razem, gdy wywoływana jest funkcja drawBitmap.Dlaczego nie mogę zmusić jednego z moich widoków do renderowania w oprogramowaniu?
Aby obejść ten problem, próbowałem wywoływać w moim widoku setLayerType(View.LAYER_TYPE_SOFTWARE, null)
. Jedynym problemem jest to, że nie pomaga. Kiedy próbuję uruchomić moją aplikację, LogCat nadal będzie dawał ostrzeżenia i nic nie zostanie wyciągnięte.
Nie mogę zrozumieć, dlaczego tak się dzieje. This article on the Android site wyraźnie stwierdza:
Możesz wyłączyć sprzętową akcelerację dla indywidualnego widzenia w czasie wykonywania następującego kodu:
myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
Czy coś robię źle? Dlaczego Android nie respektuje połączenia setLayerType?
[w przypadku ma to znaczenie: Ja wykonywania moich testów na Samsung Galaxy Tab 10.1 z systemem Android 3.2]
Sprawdź canvas.isHardwareAccelerated(). Może być inny niż widok – imort