2012-09-29 9 views
6

デバイスsdカードからドロアブルとしてpngイメージをロードしようとしています。 私は次の関数を使用しますが、それは動作しません:sdカードからdrawableをロードしています

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

画像のパスは次のとおりです。MNT/SDカード/ MyFolderを/ image.png

アプリがクラッシュした私は、そのメソッドを呼び出ししようとしたとき、どのようにすべき私のsdcardにある私のPNGイメージをロードし、それをDrawableオブジェクトにキャストしますか?

+1

ルック好きですシンプルだ) – Doomsknight

+0

@Doomsknightあなたは一例を挙げてもらえますか?私は今BitmapFromFileを見ていましたが、それに関する情報は見つかりませんでした。 – idish

+0

@Doomsknightだから、ビットマップを描画可能なオブジェクトに後でキャストする必要がありますか? – idish

答えて

13

実際には、ファイルパスから直接BitmapDrawableコンストラクタがあります。あなたが使用しているメソッドはdepricatedです。試してみてください:

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

このdoesntの仕事ならば、ビットマップを取得し、そこから引き出し可能を作成してみてください:

ビットマップがdecodeFile

で作成することができますあなたはこのようにそれを使用することができます:

Bitmap myBitmap = BitmapFactory.decodeFile(pathName); 

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

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

描画可能使用するビットマップに変換するために詳細は見た目Here (Bitmaps)Here (Bitmap Drawables)してください。

+0

コードの最初の部分は、コンストラクタであるので=新しいBitmapDrawable()にする必要があります。 –

+0

@ JohnJSmithが変更されました。 :) – Doomsknight

0

私は `decodeFile` http://developer.android.com/reference/android/graphics/BitmapFactory.html#decodeFile(java.lang.Stringでその

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); 
} 
関連する問題