IT정보공유/Android

[안드로이드 개발 요약 - 2] View를 상속받아 onDraw 이벤트를 처리하는 방법

알지오™ 2017. 5. 22.

안드로이드 스튜디오를 통해 기본 프로젝트로 앱을 만들게 되면

MainActivity라는 클래스로 시작이 되어지는데

Activity에는 onDraw 함수가 추상화 되어 있지 않은것 같다.

 

onDraw 이벤트를 통해 화면에 그리는 걸 공부하는 차례인데

귀찮아도 어쩔 수 없이 view클래스를 만들어야만 해볼수 있기때문에 만들었다.

 

[안드로이드 개발 요약 - 1] View를 상속받아 onDraw 이벤트를 처리하는 방법

 

java 소스에서 New -> Java Class 추가를 선택하면

아래와 같은 화면이 뜬다.

 

[안드로이드 개발 요약 - 1] View를 상속받아 onDraw 이벤트를 처리하는 방법

 

새로운 클래스의 이름을 정하고 어느 클래스를 상속할지 선택해 주면 된다.

어차 나야 onDraw에 직접 동그라미 하나만 그려볼거니 

android.view.View 클래스를 상속 받는다.

 

  
//customviewtest.java

package com.alzio.myapplication;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;

/**
 * Created by Administrator on 2017-05-21.
 */

public class customviewtest extends View {
    public customviewtest(Context context)
    {
        super(context);
    }

    public void onDraw(Canvas canvas)
    {
        Paint pnt = new Paint();
        pnt.setColor(Color.WHITE);
        canvas.drawColor(Color.RED);
        canvas.drawCircle(100, 100, 50, pnt);
    }
}


 

  

//MainActivity.java

package com.alzio.myapplication;

import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.activity_main); //원래 기본으로 지정센 콘텐트뷰를 주석처리하고

        //setContentView(R.layout.customlayoutmain);//그냥 한번 내가 만든 뷰를 등록해봄. 아무이유없음
        //MainActivity에는 onDraw 가 없다. 뷰에만 있다.
        //그래서 어쩔수 없이 뷰를 추가했던 것이다.

        customviewtest cvt = new customviewtest(this);//onDraw 이벤트에서 직접 캔버스에 그려보기 위해서 만들어봄
        setContentView(cvt); //내가 추가한 뷰를 컨텐트뷰로 지정

    }

}

 

짜잔 앱을 만들어졌다.

 

[안드로이드 개발 요약 - 1] View를 상속받아 onDraw 이벤트를 처리하는 방법

 

정말 초간단하게 빨간색 배경에 흰 동그라미만 달랑 그렸다.

기타 드로이완련 함수들은 필요할때 배우면 된다.

 

이걸 누가 볼까 싶어 소스는 따로 업로드 하지 않는다.

 

댓글

💲 추천 글