마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

View움직이는 뷰를 캡쳐 하려는데 처음 화면 만 캡쳐 되고 다음 화면은 캡쳐 되지 않습니다.

0 추천

돌아가는 뷰를 캡쳐해서 버튼을 누르면 그상황에 맞게 이미지뷰에 뿌려주려하는데 이상하게 처음 화면만 캡쳐가되고 버튼을 눌러도 아무 변화가 없습니다.. 

 

@SuppressLint("NewApi") public class MainActivity extends Activity {
 
 
 
Button BTN;
Bitmap Poto_bit;
RelativeLayout Screen_layout;
ImageView POTO,B;
int i=3;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        BTN = (Button)findViewById(R.id.BTN);
        Screen_layout =(RelativeLayout)findViewById(R.id.POTO_SCREEN);
        POTO = (ImageView)findViewById(R.id.POTO);
        mHandler.sendEmptyMessage(0);
        B =(ImageView)findViewById(R.id.SCREEN_SHOT_LOCATION_4);
 
    }
 
    Handler mHandler = new Handler(){
    public void handleMessage(Message msg){
 
   
 
    i=i+3;
    Screen_layout.setRotation(i);
    mHandler.sendEmptyMessageDelayed(0, 1);
   
   
   
    };
    };
    
    public void mOnClick(View v)
    {
    switch (v.getId()) {
case R.id.BTN:
Screen_layout.setDrawingCacheEnabled(true);
Poto_bit=Screen_layout.getDrawingCache();
POTO.setImageBitmap(Poto_bit);
Toast.makeText(this, "ScreenShot_okay", Toast.LENGTH_LONG).show();
// Screen_layout.setDrawingCacheEnabled(false);
break;
 
default:
break;
}
    }
}
 
왜 이러는건지 모르겠습니다 setRotation(i); 함수가 Animation 처럼 움직이는것처럼 보이지만 실제로 객체는 움직이지 않는건지요.
 
CJ여비 (5,730 포인트) 님이 2015년 1월 12일 질문

1개의 답변

+1 추천
 
채택된 답변

Screen_layout.setDrawingCacheEnabled(false);

Screen_layout.setDrawingCacheEnabled(true);

 

false 를 주고난뒤 true를 줘보셔요

nicehee (73,100 포인트) 님이 2015년 1월 12일 답변
CJ여비님이 2015년 1월 12일 채택됨
답변 감사드립니다. 처음 버튼 부분에서
Screen_layout.setDrawingCacheEnabled(true);
주고 끝날때
Screen_layout.setDrawingCacheEnabled(false);
줘버리니까 .
java.lang.IllegalArgumentException: Cannot draw recycled bitmaps 애러가 나서 주석처리하고 돌리다가
nicehee님 말씀 듣고 버튼 2개를 만들어서  하나의 버튼엔 캡쳐하는 소스 다른 버튼엔 Screen_layout.setDrawingCacheEnabled(false); 소스를 넣고 서로 번갈아 누르니 실시간 캡쳐가 잘되는것 같습니다.
근데 저 소스를 합치면
java.lang.IllegalArgumentException: Cannot draw recycled bitmaps이 애러가 나버리네요.. 코드의 실행 순서를 같고 수동으로 눌러주냐 자동으로 눌러주냐의 차이인데 왜 애러가 나는지 모르겠습니다. \
nicehee님 덕분에 해결하였습니다.

Screen_layout.setDrawingCacheEnabled(false);
Screen_layout.setDrawingCacheEnabled(true);
이 뜻이
Screen_layout.setDrawingCacheEnabled(true);
//내용
Screen_layout.setDrawingCacheEnabled(false);
Screen_layout.setDrawingCacheEnabled(true);

이렇게 하라시는줄 알았는데 .. 초반에  false를 주고 true를 주니 해결되었습니다.
...