为了实现在透明圆环上绘制字体,查到是用canvas.drawTextOnPath()这个函数。但遗憾的是,我在手机上死活都画不出来字体。用canvas.drawPath()正常,说明path是正确的,但就是drawTextOnPath()无效。在网上搜了一堆关于canvas画图的东西,链接如下:
canvas.drawText看不到 字体
Canvas、Path 和 Paint 实例 (游戏开发必备)
Android 中 drawTextOnPath 文字效果演示(中级)
怎么实现字符串 90度旋转,使用canvas.drawText()
上面这些东西足以把canvas绘制的方方面面讲的很清除了,但我的canvas.drawTextOnPath()就是不中。后来用google查的国外盆有的一篇文章:
里面给出的解释是:
Answer
drawTextOnPath() was not supported with hardware acceleration until Android 4.1. To work around this problem, simply set a software layer type on your View when running on Android < 4.1.
Just call View.setLayerType(View.LAYER_TYPE_SOFTWARE, null). This will force software rendering and fix your problem.
原来这是android SDK的一个bug,在android4.0.3及其以下(其实是4.1版本 以下),drawTextOnPath是无效的,解决方法是在自定义ImageView的构造函数里增加这一句话:
this.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
一切就OK了!
另外还可以在Manifinest里面禁止硬件加速<applicationandroid:hardwareAccelerated="false"/>参见http://bbs.csdn.net/topics/380198530。但我不推荐这种方式,这会使所有的view包括程序中的surfaceView都禁止加速了,损失太大。
看来对于程序员,google才是最铁的战友!就一句话费我整整一天时间。。。
-----------------本文系原创,转载请注明作者:yanzi1225627
主:问题的实质是硬件加速,想多了解也可以看这里:http://architecture.riaos.com/?p=3007443
分享到:
相关推荐
Leaflet.Canvas-Markers-0.2.0 https://github.com/corg/Leaflet.Canvas-Markers
讲解使用canvas.save()和canvas.restore()的demo
修改html2canvas.js源码,可以解决截图不全问题.使用方式参考 http://blog.csdn.net/q2365921/article/details/54377479
canvas.text.js
canvas-nest.js一个基于html5 canvas绘制的网页背景效果
html2canvas 的 @1.0.0-rc.4 版本,兼容IOS13,npm install时候安装版本不对可以直接下载这个,选择dist内的js文件引入
APNG经过修改后,在QT,浏览器上可用的apng-canvas.js 参考博客使用:http://blog.csdn.net/ly305750665/article/details/77972415
前端开发 生成海报 截图等功能 1.该脚本允许您直接在用户浏览器上对网页或其部分进行“截图”。屏幕截图基于 DOM,因此可能不是 100% 准确到真实表示,因为它不会制作实际的屏幕截图,而是根据页面上可用的信息构建...
html2canvas.js截图_生成海报
FMX 的 Canvas 在不同的系统上会分别使用: WinVista、Win7: D2D (FMX.Canvas.D2D.pas) WinXP: GDI+ (FMX.Canvas.GDIP.pas) Mac 系列: Core Graphics (FMX.Canvas.Mac.pas) 和 HTML5 中的 Canvas 非常类似, 现在的 ...
HTML5 Canvas.mobi - kindle
文件1:canvas_transiton.html -- 首屏页面canvas动画 文件2:offcanvas.js -- 转场动画方法
资源分类:Python库 所属语言:Python 资源全名:canvas_api_client-0.2.0-py2.py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
html2canvas-1.0.0-rc.4版本
通过该js实现html在线截图,生成Base64码,从而实现在线截图并下载
Android截图圆形Canvas.rar
Delphi 为窗体绘制渐变背景,这里使用了Delphi中的Canvas.Brush.Color来实现窗口背景的渐变色,不错吧?如示例图的左右渐变效果,实现的代码: for i:=0 to self.Width-1 do begin c1:=GetRValue(StartColor) ...
canvas.c - A drawing canvas widget
Android 自定义画布canvas 实现绘制和清空画布功能,内含源码、apk