Android开发:canvas.drawTextOnPath()无效----Android4.03的又一个bug!!!!(关于Canvas绘制的方方面面)

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

android截取图片一个圆,得到的图片总是存在锯齿,怎么办?

android Path、Typeface和绘制弧线

setTypeface方法:设置字体样式

canvas.drawText看不到 字体

Canvas、Path 和 Paint 实例 (游戏开发必备)

Android 中 drawTextOnPath 文字效果演示(中级)

图形与图形处理(Path、drawTextOnPath)  

怎么实现字符串 90度旋转,使用canvas.drawText()

android中使用canvas.drawText函数可否设置旋转

      上面这些东西足以把canvas绘制的方方面面讲的很清除了,但我的 canvas.drawTextOnPath()就是不中。后来用google查的国外盆有的一篇文章:

drawTextOnPath() not working from 4.1.2 to 4.0.3

里面给出的解释是:

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
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值