2011-11-04 8 views
1

안녕하세요, 저는 드로어 블을 안드로이드가있는 파일에 복사하고 싶습니다. 내 문제는 내 이미지 파일이 완전히 검은 색입니다. 나는 이유를 모른다.어떻게 안드로이드에서 drawable draw?

try{ 
    Drawable image = getResources().getDrawable(R.drawable.header); 
    Bitmap bitmap = Bitmap.createBitmap(image.getMinimumWidth(), image.getMinimumHeight(), Bitmap.Config.ARGB_8888); 
     File fs = new File(Environment.getExternalStorageDirectory()+"/file/header.png");         
     FileOutputStream fos; 
     fos = new FileOutputStream(fs); 
     Canvas canvas = new Canvas(bitmap); 
     image.draw(canvas); 
     bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos); 
     //refermer 
     fos.flush(); 
     fos.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

답변

2

이는 사용자 정의 캔버스에서 그리기 할 때 measure-layout-draw 루틴을 따르지 않았기 때문일 수 있습니다. 조회수가 측정되지 않았고 아직 배치되지 않았기 때문에 검정색 화면이 표시됩니다.

즉, 이미지에서 측정 값을 호출하거나 원하는 측정 너비와 측정 된 높이를 먼저 설정하십시오. 이것은 이미지 뷰에서 measure (int, int)를 호출하거나 image.setMeasuredWidth (int) 및 image.setMeasuredHeight (int)를 호출하여 수행 할 수 있습니다.

그 후에는 뷰를 배치해야합니다. image.layout (int, int, int, int)을 호출하십시오. 그 후, image.draw (canvas)를 사용할 때 비트 맵에서 볼 수 있어야합니다. 여기

추가 읽기 : http://developer.android.com/guide/topics/ui/how-android-draws.html

+0

당김 PDF 죄송 integrer, 나는 코드의이 부분을 넣어 잊어 버렸습니다. 나는 정확하게 이미지의 크기를 정의한다. Drawable image = getResources(). getDrawable (R.drawable.header); 비트 맵 bitmap = Bitmap.createBitmap (image.getMinimumWidth(), image.getMinimumHeight(), Bitmap.Config.ARGB_8888); – Agriesean