6

デバイスのSDカードからpng画像をドローアブルとして読み込もうとしています。次の関数を使用していますが、機能しません。

public Drawable getDrawable()
{
return new BitmapDrawable(imagePath);
}

画像パスは次のとおりです:mnt / sdcard / MyFolder / image.png

そのメソッドを呼び出そうとするとアプリがクラッシュします。SDカードにあるpng画像を読み込んで、Drawableオブジェクトにキャストするにはどうすればよいですか?

4

2 に答える 2

13

実際には、ファイルパスから直接BitmapDrawableコンストラクターがあります。あなたが使用している方法は、非難されています。試す:

Drawable myDrawable = new BitmapDrawable(getResources(), pathName);

これが機能しない場合は、ビットマップを取得して、そこからドローアブルを作成してみてください。

ビットマップはで作成できますdecodeFile

次のように使用できます。

Bitmap myBitmap = BitmapFactory.decodeFile(pathName);

その後、描画などにビットマップを使用できます。

ビットマップを描画可能な使用に変換する

Drawable myDrawable = new BitmapDrawable(getResources(), myBitmap);

詳細については、Here( Bitmaps および Here(Bitmap Drawables)を参照してください。

于 2012-09-29T13:20:36.760 に答える
0

私は単純ですそのようにします

public Drawable getDrawableFromPath(String filePath) {
    Bitmap bitmap = BitmapFactory.decodeFile(filePath);
    //Here you can make logic for decode bitmap for ignore oom error.
    return new BitmapDrawable(bitmap);
}
于 2012-12-28T11:35:13.170 に答える