Android自定义View(四)

要点:

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/

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180422G071QS00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券