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

일반 클래스에서 canvas 사용여부

0 추천
안녕하세요. 초보 개발자입니다.ㅠ

제가 지금 막힌 부분이 있는데요.ㅠ 고수님들의 답변을 듣고자 이렇게 글을 남기게 되었습니다.

canvas를 이용해서 그림을 그릴 때 보통 onDraw라는 override된 메소드를 쓰잖아요.

이 onDraw말고 아무것도 상속받지 않은 클래스의 메소드에서 그림을 그릴 수있게 구현이 가능할까요?

아무것도 상속받지 않은 클래스에서 메소드명을 하나 만들고 Canvas 객체를 만들어서 그려봤지만

화면에 아무것도 뿌려지지 않더라고요.ㅠ

public class LyricView
{

Canvas canvas;

public void DrawOneLineLyric()
 {
        canvas = new Canvas();
        Bitmap bitmap = Bitmap.createBitmap(1280,250,Bitmap.Config.ARGB_8888);
        Canvas exerCanvas = new Canvas(bitmap);
        Paint pnt = new Paint(Paint.FAKE_BOLD_TEXT_FLAG);        
        pnt.setStyle(Style.FILL);
        pnt.setColor(Color.WHITE);
        exerCanvas.drawText("하하하", 0, 73, pnt);

        canvas.drawBitmap(bitmap, 0, 0, pnt);
 }

}

이게 짧막하게 짠 코드인데요. 아무 상속받지 않은 클래스에서

어떻게 그림을 그리게 하는 메소드를 만들 수 있을까요.?

 

하나 더 질문이 있는데요.

만약 위에서 그려 줄 뷰가 없어서 상속을 받아야해서  받았다면

일반 activitiy에서 LyricView lyricView = new LyricView(context);

이런식으로 초기화를 해줘야 객체를 사용 할 수 있잖아요.

저 context에 들어갈 값을 어떻게 줘야 할까요.

확답이 아니더라도 먼가 알려주실께 있으면 답변 부탁드립니다.ㅠ
다갖춘남자 (220 포인트) 님이 2014년 1월 15일 질문

1개의 답변

+1 추천
 
채택된 답변
  1. 상속받지 않은 일반 object class 라면 canvas 구성후 만들어진 bitmap 을 activity 내에서 호출 하면 어느 정도는 사용 가능 해 보입니다. 
  2. programmatically 하게 코드를 추가할 때 context 는 클래스명.this 식으로 넣어주면 됩니다.

 

aucd29 (218,390 포인트) 님이 2014년 1월 15일 답변
다갖춘남자님이 2014년 1월 15일 채택됨
답변 정말 감사합니다.
혹시 다른분들 필요하실수도 있어서 해결방법 남길께요.
xml파일에 ImageView 하나 넣어주고 class에서 그린 bitmap을 return 시켜 imageview.setImageBitmap 함수를 통해 그리게 해주었습니다.
참고로 xml layout은 frame layout 사용했습니다.
...