阅读量:0
以下是一个简单的Android Canvas应用案例分享:
一、案例名称:Canvas绘制简单图形
二、应用简介:
本应用通过Android Canvas实现简单的图形绘制功能,包括绘制直线、矩形和圆形。用户可以在屏幕上手动绘制这些图形,并可以清除屏幕上的所有内容。
三、实现步骤:
- 创建布局文件:
在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>
- 创建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); // 在这里绘制图形 } }
- 处理用户输入:
在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; } }); } }
- 绘制图形:
在MainActivity.java
的onDraw()
方法中,使用Path
对象来绘制图形。例如,可以绘制直线、矩形和圆形。
@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); // 绘制路径 canvas.drawPath(path, paint); // 清除路径 path.reset(); }
四、运行结果:
运行应用后,用户可以在屏幕上手动绘制直线、矩形和圆形。点击屏幕上的“清除”按钮可以清除屏幕上的所有内容。