안드로이드 개발 질문/답변
(글 수 45,052)
커니님의 블로그에서 본 뷰에 표시되는 내용 캡쳐하는 소스인데요
captureButton.setOnClickListener(this);
public void onClick(View v) { container.buildDrawingCache(); Bitmap captureView = container.getDrawingCache(); FileOutputStream fos; try { fos = new FileOutputStream(Environment.getExternalStorageDirectory().toString()+"/capture.jpeg"); captureView.compress(Bitmap.CompressFormat.JPEG, 100, fos); } catch (FileNotFoundException e) { e.printStackTrace(); } Toast.makeText(getApplicationContext(), "Captured!", Toast.LENGTH_LONG).show(); }위와 같이 버튼을 눌러서 하지 않고
옵션메뉴를 클릭해서 하려는데 무엇이 문제인지 모르겠습니다 ㅠㅠ
R.id.main 으로 하지 않고 new MyView(this) 로 해서 버튼을 만들수가 없거든요
MyView 전체를 캡쳐하고 싶은데 이부분을 어떻게 처리해야 할지요 ㅠㅠ
아래와 같이 했더니 되지 않습니다
case문 부분을 봐주세요ㅠㅠ
public class Main extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new MyView(this)); } public class MyView extends View { public MyView(Context context) { super(context); }
Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.gingerdroid);
protected void onDraw(Canvas canvas) { canvas.drawBitmap(bm, 0, 0, null); } }
private static final int SAVE_MENU_ID = Menu.FIRST; public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); menu.add(0, SAVE_MENU_ID, 0, "Save").setShortcut('3', 'c'); return true; } public boolean onPrepareOptionsMenu(Menu menu) { super.onPrepareOptionsMenu(menu); return true; }
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) { case SAVE_MENU_ID: View MyView = new MyView(null); MyView.buildDrawingCache(); Bitmap captureView = MyView.getDrawingCache(); FileOutputStream fos; try { fos = new FileOutputStream(Environment.getExternalStorageDirectory().toString()+"/capture2.jpeg"); captureView.compress(Bitmap.CompressFormat.JPEG, 100, fos); } catch (FileNotFoundException e) { e.printStackTrace(); } Toast.makeText(getApplicationContext(), "Captured!", Toast.LENGTH_LONG).show(); return true; } return super.onOptionsItemSelected(item); } }