我已经创建了一个调用DrawView的活动,扩展了View,我在Canvas上绘制了类似二叉树的东西。画布大小大于屏幕大小,onDraw函数绘制所有画布,而不仅仅是其可见部分。我已经添加了一个水平和垂直的scrollView,显然onDraw被一次又一次地调用来刷新视图。 我想知道是否可以使用该图像在图像上绘制画布(位图或类似图像)以显示树,而不需要调用onDraw函数。 如果我无法做到这一点,我能做些什么才能获得更快的视野?Android:如何获得更快的onDraw()
1
A
回答
1
从技术上讲,画布绘制在位图上。所以它实际上是比屏幕更大的位图。你为什么让位图比屏幕大?更大的Bitmaps =更多的内存使用 - 这可能会减慢一点。你只能真正在画面的剪裁范围内绘制 - 你可能认为你正在画屏幕,但你没有。在另一个位图上绘图不会帮助你 - 你已经这么做了。不看你的代码,你可以尝试:
- 只画出二叉树通过调用
invalidate(rect)
只重画发生了什么变化有什么变化 - 如果二叉树的意思是静态的,只需要创建一个PNG /它的JPG和显示图像与绘制它自己所有
- 确保你不叫失效比你更需要
4
如果您使用API 11或更高版本,则可以尝试在清单中的应用程序标记中使用硬件加速属性。
<application ... android:hardwareAccelerated="true" ...>
除此之外,你可以考虑使用另一种渲染而不是视图,也可以看看SurfaceView。
一般来说,我认为你不应该重写视图,除非你正在构建一个UI组件(就像一个Button),不要在此引用我。
相关问题
- 1. JavaScript:requestAnimateFrame获得更快
- 2. 的Android的OnDraw()
- 3. 如何OnDraw的
- 4. Android的OnDraw()和更新与计时器
- 5. 如何使用OnDraw中的canvas.drawText更新文本? Android
- 6. Android位图OnDraw
- 7. Android onDraw方法
- 8. Android Studio ImageView onDraw
- 9. OnDraw Android(monodroid)
- 10. android - onDraw()方法
- 11. 获得多个FileInfo的更快方法?
- 12. 如何在onDraw中绘制4行? - android
- 13. 如何在android中动画onDraw图像?
- 14. onDraw方法在Android中如何工作?
- 15. Mysql:如何优化此查询。以获得更快的结果
- 16. 如何在Windows上获得更快的SSH克隆速度?
- 17. 如何在Ruby 1.8.7中获得更快的YAML加载?
- 18. 如何为ACTION_MOVE获得更快的触摸频率
- 19. 如何获得和Android的
- 20. 如何获得Android的源
- 21. 如何获得与Android的
- 22. 如何获得和Android的
- 23. 获得最快在Android设备
- 24. OnDraw上的Android Draw ImageViiew
- 25. 如何获得Cimplicity Plant Edition以更快地启动项目?
- 26. 如何在画布中更快地获得图像
- 27. MYSQL NOT IN功能 - 如何提高并获得更快
- 28. 如何优化此查询以更快地获得结果?
- 29. invalidate()不记得OnDraw方法
- 30. 如何让PHPUnit + Selenium运行得更快?
我的树是静态的,那么如何实现类似于第二个解决方案点的东西?我的意思是,我可以导出png/jpg,但是如何在用户滚动时在视图上显示它? – Ant4res 2012-02-29 17:07:31
一旦你创建了一个你想要的静态png/jpg图像,你就可以调用canvas.drawBitmap()来查看文档。或者(根据您的需要),您可以使用ImageView并在其中设置图像。 – dbryson 2012-02-29 17:12:53
非常感谢,我会尽力按照您的建议去做。 – Ant4res 2012-02-29 17:17:48