要点:
1、绘制图片
2、参考
1、绘制图片
drawPicture(矢量图)
使用Picture(https://developer.android.google.cn/reference/android/graphics/Picture.html)前请关闭硬件加速,以免引起不必要的问题!请参考[Android的硬件加速及可能导致的问题](https://github.com/GcsSloop/AndroidNote/issues/7)
关闭方法:
在AndroidManifest.xml的加上。
官方对Picture的描述:
A Picture records drawing calls (via the canvas returned by beginRecording) and can then play them back into Canvas (via draw(Canvas) or drawPicture(Picture)).For most content (e.g. text, lines, rectangles), drawing a sequence from a picture can be faster than the equivalent API calls, since the picture performs its playback without incurring any method-call overhead.
Note: Prior to API level 23 a picture cannot be replayed on a hardware accelerated canvas.
有道翻译:一个图片记录调用(通过画布返回的开始记录),然后可以回放到画布(通过绘制(画布)或drawPicture(图片))。对于大多数内容(例如,文本、线条、矩形),从图片中绘制序列比等效的API调用要快,因为图片执行它的播放而不产生任何方法调用开销。
注意:在API级别23之前,不能在硬件加速画布上重新播放图片。
Picture的公共方法和描述
录制的内容是不会直接显示在屏幕上的,需要使用下面几种方法把它显示出来:
(1)Picture(https://developer.android.google.cn/reference/android/graphics/Picture.html)提供的draw方法
对Canvas有影响,可操作性较弱。
(2)Canvas提供的drawPicture方法
对Canvas没有影响,可操作性较强。
(3)PictureDrawable(https://developer.android.google.cn/reference/android/graphics/drawable/PictureDrawable.html)的draw方法
对Canvas没有影响,可操作性较强。
简单示例:
layout中:
效果如下:
drawBitmap(位图)
drawBitmap的常用方法如下:
简单示例如下:
效果如下:
上面例子是通过BitmapFactory从资源文件中获取Bitmap的,获取Bitmap的三种方式如下:
通过Bitmap创建:复制一个已有的Bitmap(新Bitmap状态和原有的一致)或者创建一个空白的Bitmap(内容可改变)。
通过BitmapDrawable获取:从资源文件、内存卡、网络等地方获取一张图片并转换为内容不可变的Bitmap。
通过BitmapFactory获取:从资源文件、内存卡、网络等地方获取一张图片并转换为内容不可变的Bitmap。
BitmapFactory获取Bitmap的方法:
从资源文件drawable、mipmap、raw、assets获取:
内存卡文件:
网络文件:
注:从内存卡或网络上获取的方法我还没实现,有待解决!!
2、参考
http://www.gcssloop.com/customview/CustomViewIndex/
领取专属 10元无门槛券
私享最新 技术干货