Согласно документации here, ресурс png должен быть преобразован в BitmapDrawable
. Тем не менее, я наблюдая странное поведение которой PNG-файл, который имеет только черные пиксели в нем в результате аварии из-за ClassCastException
(завернутые в InvocationTargetException
), если я пытаюсь сделать следующее в настраиваемое представление в конструкторе:Android - ресурс png, преобразованный в ColorDrawable на android <4.0
... tempDrawable = typedArr.getDrawable(R.styleable.CustomView_src); // Source points to a png file Log.i("TestPNGToResource", "Canonical Class Name " + tempDrawable.getClass().getCanonicalName()); tempBitmap = ((BitmapDrawable) tempDrawable).getBitmap(); ...
Я вижу следующие входа в систему андроида 2.2 и 2,3
09-24 13:21:37.575: I/TestPNGToResource(532): Canonical Class Name android.graphics.drawable.ColorDrawable
Почему ресурс не преобразуется в BitmapDrawable?
Если у png есть цветные пиксели, это все еще происходит? Не уверен, что png-оптимизация 'aapt' может фактически преобразовать сплошное цветное изображение в' ColorDrawable' или если это ошибка при разрешении ваших настраиваемых атрибутов – zapl
Это не происходит для изображений с цветными пикселями. Если возникла ошибка с пользовательскими атрибутами, она должна была сбой на любом устройстве. Он работает так, как ожидается, на Nexus 4 с 4.3. – 500865