实现画板功能可通过现有的ImageView组件,也可以通过自定义DrawingView组件,添加新的画板功能。二组件都继承android.view.View类。
一:DrawingView程序部分:
(1)继承View类,重写构造方法。在传入参数Context、AttributeSet的方法中新建画笔对象paint。
(2)重写onDraw(android.graphics.Canvas)方法:
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
//如果bitmap没有被创建,初始化一个bitmap。
if (bitmap == null) {
bitmap = Bitmap.createBitmap(this.getWidth(), this.getHeight(),
Config.ARGB_8888);//设置大小为屏幕大小,颜色为32位色。
this.canvas = new Canvas(bitmap);//创建画布为缓冲绘图区bitmap。
this.canvas.drawColor(Color.CYAN);//将画布的颜色填充为青色。
}
// 将bitmap对象绘制到DrawingView界面上。参数二指源区域,参数三指目标区域,用于贴图。
canvas.drawBitmap(bitmap, 0, 0, paint);
(在使用ImageView组建画图时,需要imageview.setImageBitmap(bitmap);将缓冲区图片设置到imageview上)
}
(3)重写View的触控事件。
//该方法返回布尔值,应在绘图后返回ture表示事件已被成功处理。
public boolean onTouchEvent(MotionEvent event) {
//对事件进行分类处理。
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN://按下触控板
x1 = event.getX();
y1 = event.getY();
break;
case MotionEvent.ACTION_UP://离开触控板
//判断当前功能并绘制相应图形。
(String进行比较时,if string.equals("...");表示比较String的值相等。
而if(StringA=="...");则二者的值和地址都需要相等才能返回真。)
if (shape.equals("直线")) {
x2 = event.getX();
y2 = event.getY();
canvas.drawLine(x1, y1, x2, y2, paint);
}
if(shape.equals("矩形")){
x2 = event.getX();
y2 = event.getY();
canvas.drawRect(x1, y1, x2, y2, paint);
}
break;
case MotionEvent.ACTION_MOVE:
if (shape.equals("曲线")) {
x2 = event.getX();
y2 = event.getY();
canvas.drawLine(x1, y1, x2, y2, paint);
x1 = x2;
y1 = y2;
}
break;
}
//................
//重绘
this.invalidate();
(invalidate();会通知区域无效,排队等待消息后重绘,若加入this.Update()则立即重绘,强调同步);
return true;
}
}
二:main.xml菜单编辑部分:
<item>添加选项,同类选项之间被添加在同一<menu>下。
(.xml文件形式以<类型名>......</类型名>完成一次嵌套并结束。这里不应使用中文命名。)
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<!--表示进入菜单时的第一阶目录。其中有Color选单-->
<item android:id="@+id/color" android:title="@string/color">
<menu>
<!--Color选单下的内容,包含了四种颜色选择-->
<group android:checkableBehavior="single" android:enabled="true">
<item android:id="@+id/red" android:title="@string/Red"/>
<item android:id="@+id/yellow" android:title="@string/Yellow"/>
<item android:id="@+id/blue" android:title="@string/Blue"/>
<item android:id="@+id/black" android:title="@string/Black"/>
</group>
</menu>
</item>
以此方法建立工具选单,画笔粗细选单。
三:strings.xml菜单标题对照部分:
<string name="color">颜色选择</string>
<string name="Red">红色</string>
<string name="Yellow">黄色</string>
<string name="Blue">蓝色</string>
<string name="Black">黑色</string>
在执行应用时将菜单中的标题改换成中文。
以此方法建立工具选单,画笔粗细选单的标题对照。
四:MainActivity.java部分:
(1)实例化一个DrawingView对象dv;
(2)在onCreate(Bundle savedInstanceState)方法中获取绘制图形组件对象:
dv = (DrawingView)this.findViewById(R.id.drawingView1);//通过地址访问。
(3)添加菜单的方法
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
(4)添加菜单功能选择的方法
public boolean onOptionsItemSelected(MenuItem item) {
//将菜单中选项组建的Title转型成String
String MenuName = item.getTitle().toString();
//选择功能
//直线
if(MenuName.equals("直线")){
dv.shape = "直线";
}
......其余以此为例。
//选择颜色
//红色
if(MenuName.equals("红色")){
dv.paint.setColor(Color.RED);(访问格式:对象.属性.方法;)
}
......其余以此为例。
//选择画笔粗细
//3像素宽度
if(MenuName.equals("3dp")){
dv.paint.setStrokeWidth(3);
}
(在创建item组件时,不能以数字开头命名,故创建时可命名为Dp3。)
......其余以此为例。
return true;
}
简易画板效果预览:
相关推荐
使用Android的自定义View写的Android画板程序,主要使用DrawPath()实现,需要的童鞋可以下来看看。
Android 短代码实现 最简易的画板
android 手势画板,可以任意滑动 画图涂鸦
继承View类,实现触摸事件OnTouchEvent,使用菜单选项。
这是一个使用自定义View实现显示图片,并实现了手势缩放、拖拽、切换。在缩放状态下单手指拖拽图片,在未缩放状态下可以实现图片切换或其他功能,已经留好对应接口。只要修改相关代码就可以了
几何画板自定义工具包-800多个小工具,导入到几何画板软件使用更方便。需要先安装几何画板软件再导入工具包。
几何画板重要工具包,提供便捷的几何画板工具,随心所欲地创造几何图形。 工具包括:线工具、角工具、三角形、四边形、正多边形、圆工具、新新坐标系、迷你坐标系、经典坐标系、函数工具、箭头工具、圆锥曲线A、圆锥...
基于android实现了画板,支持返回上一次和下一次的绘制记录,支持清空画板,支持橡皮擦功能,支持保存到本地,支持画笔更换颜色
android 自定义view 画板
几何画板安装包加800多个自定义工具包
一个简易画板的实现 有简单的画图,画图形,改颜色功能
该资源包含了使用android实现的一个简单的画板以及结合xfermode实现遮罩层画板效果。具体实现,可以参考博客http://blog.csdn.net/mockingbirds/article/details/49455421
android 签名画板 , 可以自定义画笔 , 类似于银行签名确认,使用简单,可以保存当前画板数据
android实现的超简单的绘图板,没有使用双缓冲技术
刚开始学HTML5中的canvas,实现的一个简易的画板。(只注重了功能的实现,没有对样式添加太多)
Python开发的PyGame实现简易画板_Demo
这是我初学qt编写的简易画板程序,程序结构和算法不算优秀,请多多指教
主要为大家详细介绍了Android自定义SurfaceView实现画板功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
非常好的android画图源码,可以绘制线段、直线、矩形、圆,可以插入图片、更换背景、还可以将画图保持成图片。
自定义view-Android实现手写板和涂鸦