Android View 는 어떻게 그립 니까?

3134 단어 AndroidView그리 기
위의 글 에서 말 했 습 니 다Android 는 어떻게 측정 합 니까하지만 예 쁜 컨트롤 은 어디 까지 자 랐 는 지 만 알 고 있 습 니 다.물론 안 됩 니 다.OnDraw 방법 을 간단하게 다시 쓰 고 Canvas(캔버스)대상 에 각양각색의 붓 을 올 리 면 이 컨트롤 의'섹시'한 외 모 를 그 릴 수 있다.그럼 View 는 어떻게 그 렸 나 요?
View 를 어떻게 그 리 는 지 알 기 위해 서 는 canvas(캔버스)가 무엇 인지 알 아야 합 니까?paint 가 무엇 을 할 수 있 습 니까?
I.canvas 는 캔버스 를 나타 내 는 것 입 니 다.그 위 에 당신 이 생각 하 는 것 을 그 릴 수 있 습 니 다.우리 가 onDraw 방법 을 다시 쓸 때 Canvas 대상 을 얻 을 수 있 습 니 다.이것 이 바로 당신 의 무대 입 니 다.당신 이 생각 하 는 것 을 그 릴 수 있 습 니 다.코드 올 렸 어.

@Override
  protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
  }
어떤 컨트롤 을 다시 그 려 야 할 때,우 리 는 이 큰 무대(Canvas)에서 Canvas.DrawXXX 방법 으로 다양한 그림 을 그 려 야 합 니 다.
II.paint 는 캔버스 에 자 유 롭 게 휘 두 르 는 붓 이다.그림 을 그 리 려 면 붓 을 조정 하고 붓 을 조정 한 후에 그림 을 캔버스 에 그 려 야 핸드폰 화면 에 표시 할 수 있다.Paint 에 서 는 붓 을 설정 하 는 데 많은 속성 과 방법 을 제공 합 니 다.
1.setAntiAlias:붓 의 톱날 효 과 를 설정 합 니 다.
2、setColor:화필 색 설정
  3、setARGB:  화필 의 a,r,p,g 값 을 설정 합 니 다.
  4、setAlpha:  알파 값 설정
5.setTextSize:글꼴 크기 를 설정 합 니 다.
  6、setStyle:  붓 스타일 을 설정 하여 빈 속 이나 옹 골지 게.
7.setStroke Width:빈 테두리 폭 을 설정 합 니 다.
  8、getColor:  붓 색깔 을 얻다
  9、getAlpha:  붓 의 알파 값 을 얻다.
우 리 는 붓 과 캔버스 를 알 게 된 이상 짧 고 간결 한 예 를 통 해 캔버스 와 붓 이 원 하 는 도형 을 어떻게 공동으로 작용 하 는 지 알 게 되 었 다.그대로 코드:

public class MyView extends View {

  private Paint paint;
  public MyView(Context context, AttributeSet attrs) {
    super(context, attrs);
    init();
  }

  private void init() {
    paint=new Paint(Paint.ANTI_ALIAS_FLAG);
    paint.setColor(Color.RED);
    paint.setStrokeWidth(5);
    paint.setTextSize(28);
    
  }

  @Override
  protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    setMeasuredDimension(measureWidth(widthMeasureSpec),
        measureWidth(heightMeasureSpec));
  }

  public int measureWidth(int measureSpec) {
    int result = 0;
    int specMode = MeasureSpec.getMode(measureSpec);
    int specSize = MeasureSpec.getSize(measureSpec);
    if (specMode == MeasureSpec.EXACTLY) {
      result = specSize;
    } else {
      result = 200;
      if (specMode == MeasureSpec.AT_MOST) {
        result = Math.min(specSize, result);
      }
    }
    return result;
  }
  
  @Override
  protected void onDraw(Canvas canvas) {
    canvas.drawText("  ", 0, 80, paint);
    super.onDraw(canvas);
  }
}


상술 한 코드,우 리 는 이렇게 몇 가지 일 을 했다.
I.우 리 는 지난 글 의 지식 을 활용 하여 onMeasure 방법 을 재 작성 하여 이 간단 한 사용자 정의 컨트롤 이 wrap 에 적응 하도록 합 니 다.content 속성.
II.우 리 는 OnDraw 방법 을 호출 하여 Canvas 와 paint 를 가 져 와 view 에'중국'문 자 를 썼 다.
최종 실행 효 과 는:

이것 이 바로 제 가 안 드 로 이 드 뷰 에 대해 어떻게 밝 은 견 해 를 그 리 는 지 에 대해 많은 조언 을 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기