2011-12-03 9 views
9

私はPNGを/ drawable-hdpi/to/drawable /から移動し、XMLビットマップを/ drawable-hdpi /に代入した後、これらのビットマップをBitmapFactory.decodeResource()メソッドでデコードします - nullを返します。 見知らぬ人がいることです何:私は android decodeResourceはxmlのnullを返します。bitmap - APIレベル7

  • (実際の描画可能なIDを与える)この方法では、実際のP​​NGファイルをデコードすることができます

    1. 私はcontext.getResources().getDrawable(xml_id)使用して描画可能を得ることができます - すべてのImageViewsコンポーネントが正しく復号され
    2. 12-03 16:18:13.557: D/skia(2566): --- SkImageDecoder::Factory returned null
      12-03 16:18:13.557: D/skia(2566): --- SkImageDecoder::Factory returned null
      12-03 16:18:13.567: D/skia(2566): --- SkImageDecoder::Factory returned null

    私はlogcatに表示することである(。しかし、原因のpへのthats 2私は考え)

    だから私は実際のリソース(私がチェックしたもの)の代わりにデコードするxmlファイルがデコーダに与えられているという野生の推測をします。

    ヒントxmlビットマップでBitmapFactory.decodeResource()に可能ですか? Btw、私はAPI 7を使用しています。

    また、origina lpngsをdrawable-nodpiに入れようとしましたが、どちらも役に立ちませんでした。 ありがとう

  • 答えて

    -1

    XMLビットマップは何ですか? BitmapFactory.decodeResource()はビットマップイメージを読み込みます。PNGまたはJPEGイメージを使用する必要があります。

    ランダムなものを-hdpiや-nodpiなどに投げるのをやめてください。与えられたリソース名に対して、異なるdpi修飾子のすべては、同じものに対して異なるバリエーションを提供します。ビットマップとXMLファイルのいくつかを持ってはいけません。また、-nodpiと他のバリエーションを混在させても意味がありません。

    +2

    まあ、間違った表現を使用したことがあります。**意味は** XMLのエイリアスリソースIDです**参照: [link] http://developer.android.com/guide/topics/resources/drawable- resource.html#ビットマップ。 –

    +1

    私はそれを得る、decodeResource()リソースがPNGまたはエイリアスかどうかをチェックするロジックを持っていない、それはちょうど、pityをデコードします。 –

    1

    XMLビットマップは、XMLで定義されたリソースで、ビットマップファイルを指します。このエフェクトは、生のビットマップファイルのエイリアスです。 XMLは、ディザリングやタイリングなどのビットマップの追加のプロパティを指定できます。

    http://developer.android.com/guide/topics/resources/drawable-resource.html

    私は同じ問題を抱えていますが、私は、回避策としてこれを使用します。残念ながらこのメソッドでは、ストリームをデコードするときにOptionsを渡す方法がありません。

      //init input stream 
        is = getContext().getResources().openRawResource(resID); 
    
        Bitmap returnBitmap; 
    
        //Load bitmap directly - will fail if xml 
        Bitmap newBmp = BitmapFactory.decodeStream(is, options); 
        if(newBmp == null){ 
         //Load bitmap from drawable auto scales 
         newBmp = ((BitmapDrawable) getContext().getResources().getDrawable(resID)).getBitmap(); 
        } 
    
    8

    描画可能を取得して、ビットマップに変換:

    Drawable drawable = getResources().getDrawable(resId); 
    Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap(); 
    

    今、あなたは、Bitmapオブジェクトを使用することができます。

    +0

    これは私にとってこの問題を解決しました! –

    +2

    エラーが発生しました: 'android.graphics.drawable.StateListDrawableをandroid.graphics.drawable.BitmapDrawableにキャストできません。 –

    +0

    ' getDrawable(resId) 'は非推奨です。代わりに 'ContextCompat.getDrawable(context、resId)'を使用してください。 – Jeffrey

    0

    「グロー」は別のXMLビットマップである。この

    <bitmap 
        android:src="@drawable/glow" 
        android:tileMode="disabled" android:gravity="center" > 
    </bitmap> 
    

    のような別のXMLビットマップにXMLビットマップをリンクしようとしたときにも、このエラーがaccures。

    関連する問題