Android 사용자 정의 View 그리 기 방법 및 과정(2)

2986 단어 AndroidView그리 기
지난 편'안 드 로 이 드 사용자 정의 View(1)Paint,Rect,Canvas 소개'는 View 와 View 에 사용 되 는 도구 류 를 어떻게 정의 하 는 지 에 대해 가장 기본 적 인 이 야 기 를 했다.View 그리 기 방법 및 과정

public class MyView extends View {
 private String TAG = "--------MyView";
 private int width, height;
 public MyView(Context context, AttributeSet attrs) {
 super(context, attrs);
 Log.i(TAG,"MyView()");
 }

 @Override
 protected void onSizeChanged(int w, int h, int oldw, int oldh) {
 super.onSizeChanged(w, h, oldw, oldh);
 width = w;
 height = h;
 Log.i(TAG,"onSizeChanged()");
 }

 @Override
 protected void onDraw(Canvas canvas) {
 super.onDraw(canvas);
 Log.i(TAG,"onDraw()");

 Rect rect = new Rect(0, 0, width, height);
 Paint paint = new Paint();
 paint.setColor(Color.RED);
 canvas.drawRect(rect, paint);
 }

 @Override
 protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
 super.onMeasure(widthMeasureSpec, heightMeasureSpec);
 Log.i(TAG,"onMeasure()");
 }
 

 @Override
 protected void onFinishInflate() {
 super.onFinishInflate();
 Log.i(TAG,"onFinishInflate()");
 }
}

03-15 01:28:53.111 30961-30961/com.myView I/--------MyView: MyView()
03-15 01:28:53.111 30961-30961/com.myView I/--------MyView: onFinishInflate()
03-15 01:28:53.210 30961-30961/com.myView I/--------MyView: onMeasure()
03-15 01:28:53.210 30961-30961/com.myView I/--------MyView: onMeasure()
03-15 01:28:53.520 30961-30961/com.myView I/--------MyView: onMeasure()
03-15 01:28:53.520 30961-30961/com.myView I/--------MyView: onMeasure()
03-15 01:28:53.520 30961-30961/com.myView I/--------MyView: onSizeChanged()
03-15 01:28:53.543 30961-30961/com.myView I/--------MyView: onDraw()
1.MyView()구조 방법,이것 은 설명 하지 않 고 첫 번 째 호출 을 확정 합 니 다.
역할:Context 전송
2.onFinishInflate()View 의 모든 하위 컨트롤 이 xml 로 매 핑 된 후에 촉발 합 니 다.
3.onMeasure()는 View 가 부모 용기 에 놓 일 때 호출 합 니 다.
역할:View 의 크기 를 측정 하고 아래 방식 으로 View 의 크기 를 수정 할 수 있 습 니 다.

 @Override
 protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
 super.onMeasure(widthMeasureSpec, heightMeasureSpec);
 setMeasuredDimension(100,100);
 }
다음 과 같은 방식 으로 컨트롤 의 너비 와 높이 를 얻 을 수 있 습 니 다.

 @Override
 protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
 super.onMeasure(widthMeasureSpec, heightMeasureSpec);
 int width = MeasureSpec.getSize(widthMeasureSpec);
 int height = MeasureSpec.getSize(heightMeasureSpec));
 }
4.onSizeChanged()는 컨트롤 크기 가 바 뀌 었 을 때 호출 합 니 다.그래서 여기 초기 화 는 한 번 호출 됩 니 다.
역할:컨트롤 의 너비 와 높이 가 져 오기
5.onDraw()마지막 으로 그림 그리 기
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기