안 드 로 이 드 개발 다양한 그래 픽 그리 기 기능 예시 구현
여기에 본인 의 개발 사례 를 결합 해 안 드 로 이 드 플랫폼 에서 다양한 그래 픽 을 그 리 는 방법 을 간단히 소개 한다.
먼저 View 클래스 를 사용자 정의 합 니 다.이 view 클래스 는 Paint 대상 이 도형 의 속성 을 제어 해 야 합 니 다.Path 대상 이 도형 그리 기 경 로 를 기록 해 야 합 니 다.Canvas 클래스 가 그림 그리 기 작업 을 수행 해 야 합 니 다.비트 맵 클래스 가 그림 의 결 과 를 담 을 필요 가 있 습 니 다.
Paint mPaint = new Paint();
mPaint.setAntiAlias(true);
mPaint.setColor(0xFFFF0000);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeWidth(12);
이 코드 는 Paint 대상 을 초기 화하 고 붓 의 색상,유형,굵기 를 설정 합 니 다.
BitmapmForeBitmap = Bitmap.createBitmap(mWidth, mHeight, Bitmap.Config.ARGB_8888);
CanvasmCanvas = new Canvas(mForeBitmap);
PathmPath = new Path();
이 코드 는 Bitmap 대상 을 만 들 고 그 를 매개 변수 로 Canvas 대상 에 게 전달 하 며 Path 대상 을 초기 화 합 니 다.View 가 사용자 의 터치 이벤트 에 응답 하려 면 View 류 의 onTouchEvent 함 수 를 실현 해 야 합 니 다.코드 는 다음 과 같 습 니 다.
@Override
public boolean onTouchEvent(MotionEvent event) {
float x = event.getX();
float y = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
touch_start(x, y);
invalidate();
break;
case MotionEvent.ACTION_MOVE:
touch_move(x, y);
invalidate();
break;
case MotionEvent.ACTION_UP:
touch_up();
invalidate();
break;
}
return true;
}
그 중 touchstart,touch_move 와 touchup 함 수 는 각각 누 르 고 이동 하고 들 어 올 리 는 이 벤트 를 처리 합 니 다.함수 의 실현 은 뒤에서 소개 합 니 다.invalidate 함 수 는 onDraw 함 수 를 호출 하여 그림 효 과 를 실시 간 으로 표시 합 니 다.touch_start 함 수 는 다음 과 같 습 니 다.
mPath.reset();
mPath.moveTo(x,y);
mX= x;
mY= y;
Path 를 비 울 때마다 출발점 으로 이동 하고 출발점 을 기록 합 니 다.touch_move 함 수 는 다음 과 같 습 니 다.
switch(mShape)
{
case 1:
float dx = Math.abs(x - mX);
float dy = Math.abs(y - mY);
if (dx >= TOUCH_TOLERANCE || dy >= TOUCH_TOLERANCE) {
mPath.quadTo(mX, mY, (x + mX)/2, (y + mY)/2);
mX = x;
mY = y;
}break;
case 2:
mPath.reset();
mPath.moveTo(mX, mY);
mPath.lineTo(x, y);
break;
case 3:
mPath.reset();
RectF mRect = new RectF();
mRect.set(mX, mY, x, y);
mPath.addOval(mRect, Path.Direction.CW);
break;
case 4:
mPath.reset();
RectF mRect1 = new RectF();
mRect1.set(mX, mY, x, y);
mPath.addRect(mRect1, Path.Direction.CW);
break;
}
mShape 의 값 에 따라 다른 도형 을 그립 니 다.1 시 에 Bezier 곡선 을 그립 니 다.2 시 에 직선 을 그립 니 다.3 시 에 타원 을 그립 니 다.4 는 직사각형 을 그립 니 다.각각 Path 류 의 서로 다른 함수 로 이 루어 집 니 다.touch_up 함 수 는 다음 과 같 습 니 다:
mCanvas.drawPath(mPath,mPaint);
mPath.reset();
Path 를 Canvas 의 Bitmap 에 그립 니 다.마지막 으로 OnDraw 함수 에서 현재 Bitmap 를 그 려 야 합 니 다.
protectedvoid onDraw(Canvas canvas)
{
// TODO Auto-generated method stub
super.onDraw(canvas);
canvas.drawBitmap(mBitmap,0, 0, mBitmapPaint);
}
큰 성 과 를 거 두 었 습 니 다.캡 처 는 다음 과 같 습 니 다.더 많은 안 드 로 이 드 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.,,,,,,,
본 고 에서 말 한 것 이 여러분 의 안 드 로 이 드 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.