3

こちらのドキュメントによると、A png リソースはBitmapDrawable. ただし、カスタム ビューのコンストラクターで次の操作を実行しようとすると、黒のピクセルのみを含む png ファイルがクラッシュするという奇妙な動作が見られますClassCastException(ラップされている)。InvocationTargetException

  ...
  tempDrawable = typedArr.getDrawable(R.styleable.CustomView_src); // ソースは png ファイルを指します
  Log.i("TestPNGToResource", "標準クラス名" + tempDrawable.getClass().getCanonicalName());
  tempBitmap = ((BitmapDrawable) tempDrawable).getBitmap();
  ...

Android 2.2 および 2.3 で次のログが表示されます

09-24 13:21:37.575: I/TestPNGToResource(532): 正規クラス名 android.graphics.drawable.ColorDrawable

リソースが BitmapDrawable に変換されないのはなぜですか?

4

2 に答える 2

0

これは 9 パッチ イメージでは発生しないと思いますよね? また、画像ファイルを使用する場合、apk ファイルを抽出しても、その中に画像ファイルが表示されますか?

とにかく、それが役立つかどうかはわかりませんが、この値を確認しようとしましたか:

TypedValue value = a.peekValue(R.styleable.CustomView_src);

次に、それが色の種類のいずれかである場合、この色で独自のドローアブルを作成できます。問題は、それが得られる場合のサイズを取得する方法です。

ただし、示した特別なケースで参照型を取得した場合は、BitmapFactory.decodeResource()を使用してビットマップを作成するだけで、強制的に BitmapDrawable にすることができます。

于 2013-09-27T23:06:13.140 に答える