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

ImageView.setImageBitmap(bitmap)을 여러번 사용할 때. getDraingCache() 한번만 동작

0 추천
package com.circular.clcell3.myapplication;

import android.graphics.Bitmap;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;

import com.mikhaellopez.circularfillableloaders.CircularFillableLoaders;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    static ImageView iv;
    static CircularFillableLoaders cfb;
    Alpha alpha;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        alpha = new Alpha();
        iv = (ImageView)findViewById(R.id.iv);

        cfb = (CircularFillableLoaders)findViewById(R.id.circularfillabeloaders);
        cfb.setDrawingCacheEnabled(true);
        cfb.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        alpha.sendEmptyMessage(0);
    }
}
class Alpha extends Handler{
    @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
        Bitmap btm = MainActivity.cfb.getDrawingCache();
        Log.d("btm : ", btm.toString());
        MainActivity.iv.setImageBitmap(btm);
    }
}

커스텀뷰는 실시간으로 변하는 뷰입니다. 

참고하시려면 :  https://github.com/lopspower/CircularFillableLoaders

 

그래서 커스텀뷰를 클릭할때마다 바로 아래 있는 이미지뷰에 실시간으로 현재 뷰를 찍어서 복사하려고 했는데, 처음 한번만 복사되고 이후는 눌러도 반응이 없습니다. 이미지 뷰는 처음꺼 복사된 그대로 멈춥니다. 커스텀 뷰는 계속해서 변하구요.  로그는 계속 찍히기에 혹시 비트맵이 변하지 않는건가 하여 비트맵을 toString으로 로그찍어보니 계속 같은 문자열만 나옵니다. 실제로 비트맵이 한번 가져온 이후로 바뀌지 않은건가요?

어떻게 해결할 수 있을까요... 읽어주신 분들께 감사드립니다. 필요하신 정보가 있다면 즉시 추가 하겠습니다.

 

아래는 연속으로 터치했을 때의 로그입니다.


11-17 19:42:47.351 10012-10012/com.circular.clcell3.myapplication D/ViewRootImpl: ViewPostImeInputStage processPointer 0
11-17 19:42:47.501 10012-10012/com.circular.clcell3.myapplication D/ViewRootImpl: ViewPostImeInputStage processPointer 1
11-17 19:42:47.501 10012-10012/com.circular.clcell3.myapplication D/btm :: android.graphics.Bitmap@ed337fe
11-17 19:42:47.931 10012-10012/com.circular.clcell3.myapplication D/ViewRootImpl: ViewPostImeInputStage processPointer 0
11-17 19:42:48.011 10012-10012/com.circular.clcell3.myapplication D/ViewRootImpl: ViewPostImeInputStage processPointer 1
11-17 19:42:48.011 10012-10012/com.circular.clcell3.myapplication D/btm :: android.graphics.Bitmap@ed337fe
11-17 19:42:48.421 10012-10012/com.circular.clcell3.myapplication D/ViewRootImpl: ViewPostImeInputStage processPointer 0
11-17 19:42:48.481 10012-10012/com.circular.clcell3.myapplication D/ViewRootImpl: ViewPostImeInputStage processPointer 1
11-17 19:42:48.481 10012-10012/com.circular.clcell3.myapplication D/btm :: android.graphics.Bitmap@ed337fe
11-17 19:42:48.881 10012-10012/com.circular.clcell3.myapplication D/ViewRootImpl: ViewPostImeInputStage processPointer 0
11-17 19:42:48.931 10012-10012/com.circular.clcell3.myapplication D/ViewRootImpl: ViewPostImeInputStage processPointer 1
11-17 19:42:48.931 10012-10012/com.circular.clcell3.myapplication D/btm :: android.graphics.Bitmap@ed337fe

clcell3 (200 포인트) 님이 2016년 11월 17일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...