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

canvas에 그림그리는데 에러가 납니다.

0 추천

안녕하세요 canvas를 캡쳐해서 갤러리를 넣는걸 하고있는데요.

아래와 같은 에러가 나타나는데 메인 ui스레드말고 무슨 핸들럴를 이용하라고 하는데.. canvas안에서 핸들러를 이용해야하나요

java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

public void SaveView(){
        CanvasViewAcitivty view = new CanvasViewAcitivty(this,model);
        Bitmap b = Bitmap.createBitmap(1080,1080,Bitmap.Config.ARGB_8888);
        Canvas c= new Canvas(b);
        view.draw(c);
        FileOutputStream fos = null;
        path3 = Environment.getExternalStorageDirectory().toString() + "/Fancyface/" + System.currentTimeMillis() + "g.png";
        File file= new File(path3);
        try{
            fos = new FileOutputStream(path3);
            b.compress(Bitmap.CompressFormat.PNG,100,fos);
            fos.close();
            setWallpaper(b);
        }catch (Exception e){
 
        }
        sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(file)));
    }
 
클래스
public CanvasViewAcitivty(Context context,CharacterModel model){
        super(context);
        mContext=context;
        mModel = model;
        res  = new Resources();
        ujnibitmap = new JniBitmap();
//
        mBgColor = getResources().getIntArray(R.array.bg_color);
        mFaceColor = getResources().getIntArray(R.array.face_color);
        mHairColor = getResources().getIntArray(R.array.hair_color);
        mCheekColor = getResources().getIntArray(R.array.cheek_color);
//
        bitmap1 = paintBitmap(res.face[mModel.face_index],mFaceColor[mModel.face_color_index]);//
        bitmap2 = loadBitmap(res.body[mModel.body_index]);//
        bitmap3 = paintBitmap(res.hair[mModel.hair_index],mFaceColor[mModel.heir_color_index]);//
        bitmap4 = loadBitmap(res.eye[mModel.eye_index]);/
        bitmap5 = loadBitmap(res.eyebrow[mModel.eyebrow_index]);/
        bitmap6 = loadBitmap(res.accessory[mModel.accessory_index]);//
        bitmap7 =  colorChange(res.cheek[0]);//
        bitmap8 =  loadBitmap(res.mouth[mModel.mouth_index]);/
        bitmap9 =  loadBitmap(res.glasses[mModel.glasses_index]);//
        bitmap10 = loadBitmap(res.balloon[mModel.balloom_index]);//
 
    }
 
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        Paint pnt = new Paint();
        if(mModel.bg_color_index!=0){
            canvas.drawColor(mBgColor[mModel.bg_color_index]);
        }
 
        canvas.drawBitmap(bitmap2,0,0,pnt);//
        canvas.drawBitmap(bitmap3,0,0,pnt);//
        canvas.drawBitmap(bitmap1,0,0,pnt);//
        canvas.drawBitmap(bitmap6,0,0,pnt);//
        canvas.drawBitmap(bitmap7,0,0,pnt);//
        canvas.drawBitmap(bitmap9,0,0,pnt);//
        canvas.drawBitmap(bitmap5,0,0,pnt);//
        canvas.drawBitmap(bitmap4,0,0,pnt);//
        canvas.drawBitmap(bitmap8,0,0,pnt);//
        canvas.drawBitmap(bitmap10,0,0,pnt);//
 
    }

 

흠바바 1 (4,000 포인트) 님이 2015년 4월 13일 질문

답변 달기

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