轻量级的Picture
来源:互联网 发布:飞控编程用什么语言 编辑:程序博客网 时间:2024/06/01 08:10
轻量级的Picture
在Android中绘图时,我们经常会使用Drawable和Bitmap,有时候会觉得略显笨重。正因为如此,Android为我们提供了另一套轻量级的Api — Picture
一个Picture对象通过beginRecording()得到一个Canvas对象,然后可以用这个Canvas对象记录了绘制的步骤,最后可以将Picture回显在视图上。对于大多数内容,如文字、线条、矩形等等,Picture都比与它同等的API快一些,因为picture回显时不会引起其他方法的调用。
我们记录绘制操作的recordCanvas是通过public Canvas beginRecording (int width, int height)
得到的,这里的width和height就是我们希望创建的picture的宽高。我们得到recordCanvas对象后,就可以对在recordCanvas上绘制我们想要的内容,在绘制完成后调用public void endRecording ()
。这里有三点值得注意:
- 在recordCanvas上绘制的内容现在还不会显示
- 在调用endRecording()后,我们就不能继续使用之前的recordCanvas
- 如果我们没有调用endRecording()就直接使用了picture,endRecording()就会被自动调用
当我们想将Picture回显到view上时,直接在View的onDraw()中canvas.drawPicture(Picture)或者Picture.draw(Canvas)就好。
对了,使用Picture时记得关闭硬件加速,否要么都不显示,要么会抛java.lang.SecurityException
,当时找原因找了好久-_-
private final class PictureView extends View { private Picture mPic; private Paint mPaint; public PictureView(Context context) { super(context); init(); } public void init(){ mPic = new Picture(); mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); mPaint.setTextSize(30); Canvas c = mPic.beginRecording(200, 200); mPaint.setColor(Color.YELLOW); c.drawCircle(mPic.getWidth() / 2, mPic.getHeight() / 2, mPic.getWidth() / 2, mPaint); mPaint.setColor(Color.BLACK); c.drawText("Hello~~", 0, 60, mPaint); c.drawLine(0, 60, 100, 60, mPaint); mPic.endRecording(); } @Override protected void onDraw(Canvas canvas) { mPic.draw(canvas); }}
0 0
- 轻量级的Picture
- Picture Control的使用
- picture control的用法
- picture
- picture
- picture
- Picture
- picture
- picture
- Picture
- picture
- Picture
- Picture
- picture
- 【Picture】
- Picture
- picture
- vc picture控件的使用
- Andriod通过代码添加图片和音频的方法
- U盘做启动盘后怎样恢复初始容量
- pebble baymax color watchface!
- HTML5 history API,创造更好的浏览体验
- VC下minizip+ZLib 解压文件
- 轻量级的Picture
- spring装配集合
- DWZ(二):常用组件了解
- 兔子--ps中各种工具的作用
- leetcode刷题,总结,记录,备忘 108
- 英文论文中“such as, for example, e.g., i.e., etc., et al. ”的用法分析
- springmvc+velocity+ Rest Services(xml,json)实例
- Android自定义控件---继承Linearlayout
- 揭密extern "C"