博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android开发:canvas.drawTextOnPath()无效
阅读量:2298 次
发布时间:2019-05-09

本文共 1076 字,大约阅读时间需要 3 分钟。

 

分类: 
 
184人阅读 
(1) 
 

目录

      为了实现在透明圆环上绘制字体,查到是用canvas.drawTextOnPath()这个函数。但遗憾的是,我在手机上死活都画不出来字体。用canvas.drawPath()正常,说明path是正确的,但就是drawTextOnPath()无效。在网上搜了一堆关于canvas画图的东西,链接如下:

      上面这些东西足以把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里面禁止硬件加速<application android:hardwareAccelerated="false"/>参见http://bbs.csdn.net/topics/380198530。但我不推荐这种方式,这会使所有的view包括程序中的surfaceView都禁止加速了,损失太大。      

       看来对于程序员,google才是最铁的战友!就一句话费我整整一天时间。。。

       -----------------本文系原创,转载请注明作者:yanzi1225627

主:问题的实质是硬件加速,想多了解也可以看这里:http://architecture.riaos.com/?p=3007443
你可能感兴趣的文章
【Day24】几道值得研究注意的php相关问题(二)
查看>>
php源码之路第三章第六节( 变量的生命周期之变量的赋值和销毁)
查看>>
【Day35】浅谈PHP拦截器之__set()与__get()的理解与使用方法
查看>>
php源码之路第四章第一节( 函数的内部结构)
查看>>
【Day36】PHP定时任务获取微信access_token
查看>>
排序有哪几种好方法(仅供参考)
查看>>
SQL数据库查询实现行转列与列转行结果SQL语句(适用于SqlServer数据库,oracle需要修改case when语句)
查看>>
多个关联连接,出现无查询结果---经验(oracle数据库)
查看>>
数据库行转列的sql语句 (抛砖引玉)
查看>>
Java生成和解析XML格式文件和字符串的实例代码【dom4j中的SAXReader对象读取并解析xml文件】
查看>>
如何将tomcat控制台输出的内容直播用日志文件保存起来(Log4j)
查看>>
[JAVA]POI(Apache POI)各Jar包的作用
查看>>
实际——如何给SQL查询添加合计行(sqlserver2008。但是db2的case when 语句end后不能添加其他字段)
查看>>
DB2 的 case when then else end 条件分支的处理
查看>>
如何面试程序员
查看>>
hibernate3.3.2和相应注解所需要的jar包
查看>>
Java发送邮件的jar包和实例(经过验证可以使用)
查看>>
配置hibernate根据实体类自动建表功能(仅供参考)
查看>>
JAVA操作properties文件【要注意properties文件的路径】
查看>>
如何让win7系统发声 win7系统讲述人功能
查看>>