Android Hardware Accelaration

前言:问题来自于StackOverflow上,关于绘制可缩放地图应用的问题。Android硬件加速,也就是GPU渲染,是为了减轻绘制界面时的UI卡顿,通过GPU分担CPU的计算量。但是GPU有内存限制的,如果绘制的Shape过大,会出现报错“Shape path is too large to be rendered into a texture”。因此将这个 Q&A 翻译出来,以便更好理解。


问题

我使用自定义的path绘制地图。在我的Android4.0.4设备上,移动和缩放地图的体验很好,非常流畅。

但是当系统更新到4.1.2时,oh my god, everything is different:放大时,地图很模糊;移动时,地图卡顿像抽风一样。但是我并没有改过代码!

更奇怪的是,虚拟机上跑起来缩放依然流畅。

上面的控诉都是有图为证的:unsharp as in the attached picture/see the screenshot below。

你问我实现了什么功能?我做了很多x=0-2000和y=0-1500区域的path,并且当前只绘制能够在屏幕上显示的path。缩放,我采用的是自定义的view中onDraw()方法中的canvas.scale(x,y);移动,我采用的是自定义view中onDraw()方法的canvas.translate(x,y)。

我想尝试的是:
1.希望将所有的path转换而不是通过canvas转换,也许canvas是有用的,但是我的shape变得非常大,大到无法绘制(…“Shape path too large to be rendered into a texture”
2.用更大的坐标系重建path。同1一样的问题,而且它很慢“Shape path too large to be rendered into a texture”
3.将shape切割成更多shape并不能解决问题,我已经在我的4.0.4版本上尝试过了,我也想正确的绘制出边界啊…(比如海岸线什么的)

Can you help me?


回答

我更新到JellyBean版本后也是酱,因为该版本默认开启了Hardware Accelerated。我在AndroidManifest里禁用了这个:android:hardwareAccelerated=“false”
regards

woooo……

作者根本就已经实现了我想做的功能:地图,可移动,可缩放,流畅,不卡顿。只需要禁用一下GPU强制渲染…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值