BitmapDrawable bd= (BitmapDrawable)context.getResources().getDrawable(drawable);
Bitmap bitmap = bd.getBitmap();
Bitmap newBitmap = bitmap.copy(Bitmap.Config.ARGB_8888, false);
Drawable d = new BitmapDrawable(newBitmap);
위와 같이 코드를 사용하고 있는데요.
bd를 그냥 사용할시에는 크기가 제대로 나오는데
d를 사용하게 되는 경우 사이즈가 bd때보다 확연하게 작게 나오네요.
혹시 이러한 현상에 대해 아시는 분 계신가요?
// 추가질문
Drawable객체에 대해 단순히 format을 바꿀려면 어떻게 해야 하나요?
가령 Bitmap.Config.ARGB_8888 형식을 Bitmap.Config.ARGB_4444 형태로 바꾸는 식으로 구현하고자 합니다.
올려주신 소스코드를 보니 d를 사용했기때문에 문제가 생기는 거군요. BitmapDrawable은 다양한 생성자를 제공하는데 그중에 Bitmap과 Resoureces를 받는 생성자를 쓴다면 Density에 맞춰서 크기를 잡아주게 되고 그냥 Bitmap만 받는 생성자를 사용하면 Default Density인 160을 적용합니다.
Drawable은 그려질 무언가를 감싸주는 역할만 하지 직접 이미지를 가공하지는 않습니다. BitmapDrawalbe에 비추어 보자면 BitmapDrawable은 draw(Canvas canvas)가 호출될때 자신이 가지고 있는 density 정보를 바탕으로 그리는 크기를 조절하지만 본인이 직접 원본인 Bitmap의 가공은 하지 않는겁니다.
아... 그렇군요. 그런 부분이 있었네요. 감사합니다.
역시 기본이 중요하네요. 도움 많이 되었습니다.
http://developer.android.com/reference/android/graphics/drawable/BitmapDrawable.html




어떤 drawable 디렉토리에 이미지 파일을 넣었는지가 중요합니다. 해당 단말기의 density에 맞는 디렉토리가 아니라면 BitmapDrawable의 경우는 사이즈를 조절합니다.