没有废话,简单粗暴。
1.创建一个自定义 view
创建一个 DrawView,继承自 android.view.View 类。在这个类中,先定义所需的属性,再创建一个构造方法。
1 | public class DrawView extends View { |
2.修改 xml 文件
修改 activity_main.xml 文件,并将自定义的 DrawView 添加到布局管理器中。
1 | <?xml version="1.0" encoding="utf-8"?> |
3.DrawView 的构造方法
在 DrawView 的构造方法中,首先获取屏幕的宽度和高度,并创建一个与该 view 相同大小的缓存区,然后创建一个新的画面,并实例化一个路径,再讲内存中的位图绘制到 cacheCanvas 中,最后实例化一个画笔,并设置画笔的相关属性。
1 | //获取屏幕宽度 |
4.重写 onDraw 方法
在 DrawView 的 onDraw 方法中,设置背景颜色,绘制 cacheBitmap,绘制路径以及保存当前的状态到栈中,并调用 restore()方法恢复所保存的状态。
1 | //设置背景颜色 |
5.重写 onTouchEvent 方法
在 DrawView 类中,重写onTouchEvent() 方法,为该视图添加触摸时间监听器,在该方法中,首先获取触摸时间发生的位置,然后应用 switch 对时间的不同状态添加响应代码,最后调用invalidate()方法更新视图。
1 |
|
6.编写 clear() 方法
写一个 clear() 方法,用来实现橡皮擦功能。
1 | public void clear() { |
7.编写 save() 方法
写一个方法,用来保存当前的绘图。
1 |
|
8.设置权限
1 | <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> |
9.创建 menu 资源文件
在 res 目录下,创建menu 文件夹,在 menu 文件夹下,创建 toolsmenu.xml 资源文件。
1 | <?xml version="1.0" encoding="utf-8"?> |
10.添加选项菜单
<1>重写onCreateOptionsMenu方法1>
在 activity 文件中,重写onCreateOptionsMenu()方法,在该方法中,实例化一个MenuInflater对象,并解析菜单资源文件。
1 |
|
<2>重写onOptionsItemSelected方法2>
重写onOptionsItemSelected() 方法,分别对各个菜单项被选择时做出相应的处理。
1 |
|
运行,就会得到一个简易的涂鸦板,可以改变画笔颜色,画笔宽度,擦除,保存等。
真是越来越有意思了呢!