2012-09-29 2 views
6

디바이스 sd 카드에서 드로어 블로서 png 이미지를로드하려고합니다. 나는 다음과 같은 기능을 사용할 수 있지만 작동하지 않습니다sd 카드에서 드로어 블로드하기

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

이미지 경로는 다음과 같습니다 MNT/SDCARD/MyFolder에/image.png를

앱 충돌을 내가 그 메소드를 호출하려고, 어떻게해야 내 PNG 이미지를 내 sdcard에로드하고 Drawable 객체로 캐스팅합니까?

+1

봐처럼 간단 할 수 있어요) – Doomsknight

+0

@Doomsknight 예를 들어 주시겠습니까? BitmapFromFile을 찾고 있었지만 정보를 찾을 수 없습니다. – idish

+0

@Doomsknight 내가 볼 수 있듯이 이후 비트 맵을 드로어 블 오브젝트에 캐스팅해야할까요? – idish

답변

13

사실 파일 경로에서 바로 BitmapDrawable 생성자가 있습니다. 사용중인 방법이 부적절합니다. 시도 :

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

이 나던 작품은 비트 맵을 얻고 그것에서 그릴 수 만드는 시도하는 경우 :

이 비트 맵은 decodeFile

만들 수 있습니다

당신은 다음과 같이 사용할 수 있습니다 :

Bitmap myBitmap = BitmapFactory.decodeFile(pathName); 

비트 맵을 그리기 등에 사용할 수 있습니다.

추가 정보를 살펴 Here (Bitmaps)Here (Bitmap Drawables)을 가지고 당김 사용

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

에 비트 맵 변환합니다.

+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); 
} 
관련 문제