안녕하세요 View 캡쳐관련하여 테스트중에 안되는 부분이 있어 질문드립니다.

 

코드로 화면캡쳐하는 인터넷에서 흔히 볼 수 있던 소스로 View 캡쳐 후 디바이스에 파일로 저장되는 것을 확인하였습니다.

 

문제는 버튼을 클릭하였을 경우 캡쳐된 View의 Bitmap 이 정상인데

 

버튼 클릭으로 캡쳐하지 않고 onCreate()에서 바로 캡쳐 하려고 하면 Bitmap 이 null 이 됩니다.

 

아래 onCreate()에서 주석처리한 부분으로 하면 Bitmap이 null 이되는데

 

왜 null이 되고 해결방법은 무엇있지 알려주시면 감사하겠습니다.

 

 package july.insung.capture;
import android.app.Activity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
public class SampleCapture extends Activity {
 LinearLayout view1;
 Bitmap bm;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  view1 = (LinearLayout)findViewById(R.id.screen);
  //View v1 = view1.getRootView();
  //System.out.println("Root View : "+v1);
  //v1.setDrawingCacheEnabled(true);
  //bm = v1.getDrawingCache();
  //System.out.println("Bitmap : "+bm);
  //showScreen(bm);
  Button myBtn = (Button)findViewById(R.id.myBtn);
  myBtn.setOnClickListener(new View.OnClickListener(){
   public void onClick(View v) {
    View v1 = view1.getRootView();
    System.out.println("Root View : "+v1);
    v1.setDrawingCacheEnabled(true);
    bm = v1.getDrawingCache();
    System.out.println("Bitmap : "+bm);
    showScreen(bm);
   }
  });
 }
 /**
  * ��ü ��ũ�� �̹��� ����  
  * @param bm
  */
 private void showScreen(Bitmap bm) {
  try {
   File path = new File("/sdcard/samplecapture");
   if(! path.isDirectory()) {
    path.mkdirs();
   }
   FileOutputStream out = new FileOutputStream("/sdcard/samplecapture/whole_screen.jpg");
   bm.compress(Bitmap.CompressFormat.JPEG, 100, out);
  } catch (FileNotFoundException e) { 
   Log.d("FileNotFoundException:", e.getMessage());
  }  
 }
}