思路:
自定义CustomView,重写onTouch(),和onDraw()。在onTouch中识别触屏事件,并记录触屏发生的位置。为了在ACTION_DOWN发生后能够接收到后续的触屏事件,我们需要让onTouch()返回true。
在onDraw()中,将上一次触屏的Point和这一次触屏发生的Point,连成一条直线。因为invalidate()后,canvas被清空了,我们需要用mBitmap保存每一次绘画的结果。
package com.ipjmc.hello;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
public class CustomView extends View {
private int mLastX, mLastY; //上次触屏的位置
private int mCurrX, mCurrY; //当前触屏的位置
private Bitmap mBitmap; //保存每次绘画的结果
private Paint mPaint;
public CustomView(Context context, AttributeSet attrs) {
super(context, attrs);
mPaint = new Paint();
mPaint.setStrokeWidth(6);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
int width = getWidth();
int height = getHeight();
if (mBitmap == null) {
mBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
}
//先将结果画到Bitmap上
Canvas tmpCanvas = new Canvas(mBitmap);
tmpCanvas.drawLine(mLastX, mLastY, mCurrX, mCurrY, mPaint);
//再把Bitmap画到canvas上
canvas.drawBitmap(mBitmap, 0, 0, mPaint);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
mLastX = mCurrX;
mLastY = mCurrY;
mCurrX = (int) event.getX();
mCurrY = (int) event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
mLastX = mCurrX;
mLastY = mCurrY;
break;
default:
break;
}
invalidate();
return true; //必须返回true
}
}
- 大小: 4.5 KB
分享到:
相关推荐
**清空画板**的功能一般会有一个“清除”按钮,点击后调用`Canvas`的`drawColor()`方法,将整个画布填充为设定的颜色,通常是白色,实现画板的清空。 **保存到本地**功能通常涉及到图像处理。开发者可能使用`Bitmap...
为了实现画板功能,我们需要创建一个新的自定义View子类。例如,我们可以创建一个名为`MyCanvas`的类,继承自`View`。 2. **onDraw()方法**: 这是绘制图形的核心方法。在`MyCanvas`类中,我们需要重写`onDraw()`...
该资源包含了使用android实现的一个简单的画板以及结合xfermode实现遮罩层画板效果。具体实现,可以参考博客http://blog.csdn.net/mockingbirds/article/details/49455421
在Android开发中,创建一个画板应用是相当常见的需求,比如儿童教育应用、手写笔记应用等。`DrawBoardDemo`就是一个很好的实例,它展示了如何实现在Android上进行绘图和清除基本操作。这个项目主要涉及到以下几个...
在Android开发中,创建一个简易画板(PaintOnTouchEvent)是一项常见的需求,它涉及到自定义View、触摸事件处理以及用户交互的设计。这个项目的核心在于如何有效地处理OnTouchEvent,以实现用户在屏幕上绘制图形的...
1. **SketchView**: SketchView是这个模块的核心组件,它是一个自定义的View类,用于实现画板功能。SketchView利用Android的`Canvas`和`Matrix`类来处理所有的图形绘制和变换操作。Canvas是Android图形系统的基础,...
在Android开发中,创建一个简易画板应用是一个常见的练习,它可以帮助开发者深入理解自定义View的概念和绘图机制。这个源码项目就是基于这样的目的,使用了Android的自定义View来构建一个基本的画板功能,让用户可以...
这个"android简单的画图板实现代码"就是一个适合初学者的示例项目,旨在帮助开发者了解如何在Android环境中实现画图功能。我们将深入探讨这个项目中的关键知识点。 首先,我们需要了解Android图形绘制的基础。在...
在Android平台上,开发一个简易的绘图板是一个常见的需求,特别是在构建教育、创意或娱乐类应用时。这个“android之简易绘图板”项目显然旨在提供一个基础的绘画功能,让用户能够在屏幕上自由绘制图形和线条。然而,...
在Android平台上,"画板"应用是一个允许用户进行绘画创作的软件。这个强大的画板应用提供了丰富的功能,包括但不限于选择不同颜色、画笔粗细、橡皮擦、填充工具等,使得用户可以在移动设备上享受绘画的乐趣。对于...
本项目"Android 画板(白板)源码 涂鸦 画图 图画"提供了一个完整的实现,让用户能够自由地进行绘图操作。以下是基于该源码的主要知识点: 1. **绘图基础**: - Android的`Canvas`类:它是Android图形系统的核心,...
本项目标题"android 画笔画板功能效果的实现.zip"揭示了其核心内容:实现了一个能够模拟钢笔和水彩笔效果的画板,并且具备清除画布功能。下面我们将详细探讨这些知识点。 1. **Canvas与Paint类**: Android中的`...
这个Android签名画板module的使用方式应该是相当直观的,开发者只需要将其导入项目,根据提供的API文档或示例代码进行简单的配置和调用,就可以快速地在应用中实现画板功能。这极大地简化了开发过程,提高了开发效率...
本示例中的“Android自定义SurfaceView——实现画板功能”旨在教你如何利用`SurfaceView`创建一个可以画画的应用。`SurfaceView`是Android系统提供的一种用于高效显示动态图像的视图组件,它拥有自己的渲染线程,...
为了实现画板功能,我们首先需要创建一个窗口并初始化一个空白的图像,通常使用`cv2.namedWindow()`创建窗口,`cv2.imshow()`显示图像。然后,我们需要捕获用户的鼠标事件,如按下、移动和释放。OpenCV提供了`cv2....
在Android开发中,"颜色画板选择"是一个常见的功能,它允许用户在画板上选取特定的颜色,并获取选中区域的颜色值。这个功能通常应用于设计工具、色彩选择器或者美术类应用,为用户提供自由选择颜色的界面。在这个...
在Android开发中,Canvas是用于在屏幕上绘制图形的重要工具,它是`android.graphics`包中的一个类。Canvas提供了各种方法来绘制线条、形状、文本、图片等元素,使得开发者能够实现丰富的用户界面,如画板应用。本文...
这个"Android 图画板Demo"旨在教你如何构建这样一个功能丰富的交互式绘图应用。 首先,我们需要了解Android中的触摸事件处理。在Android中,`MotionEvent`类用于表示用户在屏幕上的一系列触摸动作,如按下、移动和...
"Android画板"这个项目就是一个这样的示例,它展示了如何在Android环境中实现这些功能。下面我们将深入探讨这个Demo所涉及的关键知识点。 1. **Android Canvas**: Android的Canvas类是绘制2D图形的核心工具。开发者...
"完整的安卓画板源代码 Android小画板" 提供的源代码是一个实例,它实现了画板应用的基础功能,使得开发者可以深入理解并学习如何在Android环境中创建一个交互式的绘图工具。下面将详细阐述涉及的知识点。 1. **...