android canvas应用案例分享

avatar
作者
筋斗云
阅读量:0

以下是一个简单的Android Canvas应用案例分享:

一、案例名称:Canvas绘制简单图形

二、应用简介:

本应用通过Android Canvas实现简单的图形绘制功能,包括绘制直线、矩形和圆形。用户可以在屏幕上手动绘制这些图形,并可以清除屏幕上的所有内容。

三、实现步骤:

  1. 创建布局文件

res/layout目录下创建一个名为activity_main.xml的布局文件,用于显示Canvas绘制区域。

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:app="http://schemas.android.com/apk/res-auto"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"     android:layout_height="match_parent"     tools:context=".MainActivity">      <CanvasView         android:id="@+id/canvasView"         android:layout_width="match_parent"         android:layout_height="match_parent" /> </RelativeLayout> 
  1. 创建CanvasView类

java/your_package_name目录下创建一个名为CanvasView.java的类,继承自View类,并重写onDraw()方法。

import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.AttributeSet; import android.view.View;  public class CanvasView extends View {      private Paint paint;      public CanvasView(Context context) {         super(context);         init();     }      public CanvasView(Context context, AttributeSet attrs) {         super(context, attrs);         init();     }      public CanvasView(Context context, AttributeSet attrs, int defStyleAttr) {         super(context, attrs, defStyleAttr);         init();     }      private void init() {         paint = new Paint();         paint.setColor(Color.BLACK);         paint.setAntiAlias(true);     }      @Override     protected void onDraw(Canvas canvas) {         super.onDraw(canvas);         // 在这里绘制图形     } } 
  1. 处理用户输入

MainActivity.java中处理用户的触摸事件,以便在用户触摸屏幕时记录触摸点的坐标,并在onDraw()方法中使用这些坐标来绘制图形。

import android.graphics.Path; import android.os.Bundle; import android.view.MotionEvent; import androidx.appcompat.app.AppCompatActivity;  public class MainActivity extends AppCompatActivity {      private CanvasView canvasView;     private Path path;      @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);          canvasView = findViewById(R.id.canvasView);         path = new Path();          canvasView.setOnTouchListener(new View.OnTouchListener() {             @Override             public boolean onTouch(View v, MotionEvent event) {                 float x = event.getX();                 float y = event.getY();                  switch (event.getAction()) {                     case MotionEvent.ACTION_DOWN:                         path.moveTo(x, y);                         break;                     case MotionEvent.ACTION_MOVE:                         path.lineTo(x, y);                         break;                     case MotionEvent.ACTION_UP:                         // 在这里绘制图形                         break;                 }                  canvasView.invalidate();                 return true;             }         });     } } 
  1. 绘制图形

MainActivity.javaonDraw()方法中,使用Path对象来绘制图形。例如,可以绘制直线、矩形和圆形。

@Override protected void onDraw(Canvas canvas) {     super.onDraw(canvas);      // 绘制路径     canvas.drawPath(path, paint);      // 清除路径     path.reset(); } 

四、运行结果:

运行应用后,用户可以在屏幕上手动绘制直线、矩形和圆形。点击屏幕上的“清除”按钮可以清除屏幕上的所有内容。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!