时间:2021-05-20
本文实例为大家分享了Android实现画板的具体代码,采用的技术是双缓冲技术,供大家参考,具体内容如下
1.双缓冲技术的概念
所谓的双缓冲技术其实很简单,当程序需要在指定的View上进行绘制时,程序并不需要直接绘制到该View组件,而是先绘制到一个内存中的Bitmap图片上(就是缓冲),等内存中的Bitmap绘制好之后,再一次性将Bitmap绘制到View组件上。
2.Android采用双缓冲实现画板
实现的思路:
1).定义一个内存中图片,将他作为缓冲区Bitmap cacheBitmap = null;
2).定义缓冲区Cache的Canvas对象 Canvas cacheCanvas = null;
3).设置cacheCanvas将会绘制到内存的bitmap上。
cacheCanvas.setBitmap(cacheBitmap);
4). 将cacheBitmap绘制到该View上.
canvas.drawBitmap(cacheBitmap,0,0,p);
3.代码实现
package com.lidong.android_ibrary.view;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Path;import android.util.AttributeSet;import android.view.MotionEvent;import android.view.View;/***@类名 : DrawView*@描述 : 使用双缓存技术实现绘制*@时间 : 2016/4/26 9:18*@作者: 李东*@邮箱 : lidong@chni.com.cn*@company: chni*/public class DrawView extends View { float preX; float preY; private Path path; private Paint paint = null; private int VIEW_WIDTH = 800; private int VIEW_HEIGHT = 600; //定义一个内存中图片,将他作为缓冲区 Bitmap cacheBitmap = null; //定义缓冲区Cache的Canvas对象 Canvas cacheCanvas = null; public DrawView(Context context) { this(context,null); } public DrawView(Context context, AttributeSet attrs) { super(context, attrs); //创建一个与该VIew相同大小的缓冲区 cacheBitmap = Bitmap.createBitmap(VIEW_WIDTH,VIEW_HEIGHT,Bitmap.Config.ARGB_8888); //创建缓冲区Cache的Canvas对象 cacheCanvas = new Canvas(); path = new Path(); //设置cacheCanvas将会绘制到内存的bitmap上 cacheCanvas.setBitmap(cacheBitmap); paint = new Paint(); paint.setColor(Color.RED); paint.setFlags(Paint.DITHER_FLAG); paint.setStyle(Paint.Style.STROKE); paint.setStrokeWidth(5); paint.setAntiAlias(true); paint.setDither(true); } @Override protected void onDraw(Canvas canvas) { Paint p = new Paint(); //将cacheBitmap绘制到该View canvas.drawBitmap(cacheBitmap,0,0,p); canvas.drawPath(path,paint); } @Override public boolean onTouchEvent(MotionEvent event) { //获取拖动时间的发生位置 float x = event.getX(); float y = event.getY(); switch (event.getAction()){ case MotionEvent.ACTION_DOWN: path.moveTo(x,y); preX = x; preY = y; break; case MotionEvent.ACTION_MOVE: path.quadTo(preX,preY,x,y); preX = x; preY = y; break; case MotionEvent.ACTION_UP: //这是是调用了cacheBitmap的Canvas在绘制 cacheCanvas.drawPath(path,paint); path.reset(); break; } invalidate();//在UI线程刷新VIew return true; }}4.实现的效果
代码下载:Android实现画板代码
以上就是本文的全部内容,希望对大家学习Android软件编程有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
什么是双缓冲技术?双缓冲技术就是当用户操作界面完成后,会有一个缓冲区保存用户操作的结果。为什么要使用双缓冲技术?拿Android游戏开发来说,界面贞每次都是全部
Android中的SurfaceView类就是双缓冲机制。因此,在进行Android游戏开发时应尽量使用SurfaceView而不要使用View,这样的话效率较
实现刮刮卡我们可以Get到哪些技能?*圆形圆角图片的实现原理*双缓冲技术绘图*Bitmap获取像素值数据*获取绘制文本的长宽*自定义View的掌握*获取屏幕密度
Android开发中,在自定义view中,使用Canvas的相应操作,实现类似签名的画板,但有一个问题则是,正常的Canvas操作可以用画板对手机的滑动进行绘制
本文实例为大家分享了Android画画板展示的具体代码,供大家参考,具体内容如下main.xml布局main布局/*画板canvas画板paint手势识别器整体