이 글에서는 안드로이드의 사용자 정의 보기를 사용하여 도형 그래픽 그리기를 구현하는 방법을 주로 자세히 소개합니다. 관심 있는 친구는
개요
를 참조하세요. 이전에 Android에서 드로어블의 Shape 리소스 사용을 소개하는 기사를 작성한 적이 있습니다. 드로어블에서 셰이프 리소스를 정의하면 직사각형, 타원, 선, 링 등과 같은 간단한 그래픽 효과를 그릴 수 있습니다. 나중에 프로젝트에서 특정 위치에 수직 점선을 표시하라는 요구 사항이 발생했습니다. 위의 리소스 파일을 자신있게 넣었을 때, 그것이 내 요구 사항을 충족하지 않는다는 것을 발견했습니다. 도형을 사용하여 그린 수직 점선은 실제로는 90도 회전된 수평선입니다. 하지만 이것의 단점은 View의 유효영역이 90도 회전 후 원래 위치와 일치하는 영역이므로 마음대로 변경할 수 없다는 점입니다. 그래서 원하는 결과를 그리기 위해 커스텀 뷰를 활용해볼까 생각했습니다.
1. 가로 점선을 그립니다
코드는 다음과 같습니다.
import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.DashPathEffect; import android.graphics.Paint; import android.util.AttributeSet; import android.view.View; public class CustView extends View{ private Paint mPaint; //定义画笔 public CustView(Context context, AttributeSet attrs) { super(context, attrs); //初始化画笔 initPaint(); setLayerType(View.LAYER_TYPE_SOFTWARE, mPaint); //4.0以上关闭硬件加速,否则虚线不显示 } private void initPaint() { mPaint = new Paint(); mPaint.setAntiAlias(true); //设置抗锯齿的效果 mPaint.setStyle(Paint.Style.STROKE); //设置画笔样式为描边 mPaint.setStrokeWidth(3); //设置笔刷的粗细度 mPaint.setColor(Color.RED); //设置画笔的颜色 mPaint.setPathEffect(new DashPathEffect(new float[]{5,5,5,5}, 1)); //设置画笔的路径效果为虚线效果 } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawLine(0, 0, 100, 0, mPaint); } }
레이아웃 파일은 다음과 같이 인용됩니다.
<com.test.CustView android:layout_width="100dp" android:layout_height="10dp" android:layout_marginTop="10dp" />
지침: Custom View의 코드에서 onDraw 메소드에서 실행되는 drawLine 메소드의 전체 이름은 다음과 같습니다.
public void drawLine (float startX, float startY, float stopX , float stopY, 페인트 페인트)
startX: 시작 끝점 x 좌표
startY: 시작 끝점 y 좌표
stopX: 끝점 x 좌표
stopY: 끝점 y 좌표
위 4개의 왼쪽 값은 모두 상대 위치, 즉 왼쪽에 컨트롤이 없는 경우 왼쪽 테두리의 상대 위치로 계산됩니다. 휴대폰 화면이 계산됩니다.
canvas.drawLine(0, 0, 100, 0, mPaint); 왼쪽을 기준으로 x 및 y 좌표가 0인 위치에서 시작하여 오른쪽으로 100px 점선을 그리는 것을 의미합니다.
Button 버튼을 제거한 후 그림과 같이 화면의 왼쪽 테두리를 기준으로 상대 위치가 계산되기 시작합니다.
또 다른 주의할 점은 stopX 및 stopY 값이 xml에 있는 컨트롤의layout_width 및layout_height 값을 초과할 수 없다는 것입니다. 그렇지 않으면 가장 작은 값은 기준으로 사용되며, 초과된 길이는 무효가 됩니다.
2. 수직 점선 그리기
는 위 코드와 일치하며 다음과 같이만 수정하면 됩니다.
canvas.drawLine( 0, 0, 0, 100, mPaint);
3. 단색 원을 그립니다
1). 스타일을 단색으로
mPaint.setStyle(Paint.Style.FILL); //브러시 스타일을 채우기로 설정
2) 캔버스에 원을 그립니다. 🎜> canvas.drawCircle(50, 50, 50, mPaint);X와 Y의 동일한 값은 XML의 컨트롤.
4. 원 그리기또한 코드를 약간 수정하면 됩니다.
@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawCircle(50, 50, 50, mPaint); //画一个外圆 mPaint.setColor(Color.WHITE); //重新设置画笔颜色 canvas.drawCircle(50, 50, 30, mPaint); //画一个内圆 }
아아아아
위 내용은 Android 맞춤 뷰를 사용하여 모양 그래픽 그리기를 구현하는 방법을 알려드립니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!