gpt4 book ai didi

android - 每个 View 是否都有自己的 Canvas /位图可供绘制?

转载 作者:行者123 更新时间:2023-11-29 00:06:34 25 4
gpt4 key购买 nike

我有一个具有相同自定义 View 类的三个全屏 subview 的相对布局。我想知道我是否应该担心内存。从这个答案来看: Understanding Canvas and Surface concepts

所有 View 都通过具有底层位图的相同 Canvas 进行绘制,这样内存就不会增加三倍。任何人都可以确认吗?这是有道理的,否则全屏 TextView 将非常低效。

奖励:canvas 的目的是定义位图的可绘制区域并将 View 坐标转换为位图坐标吗?

最佳答案

根据文档 http://developer.android.com/guide/topics/graphics/2d-graphics.html#draw-with-canvas :

When you're writing an application in which you would like to perform specialized drawing and/or control the animation of graphics, you should do so by drawing through a Canvas. A Canvas works for you as a pretense, or interface, to the actual surface upon which your graphics will be drawn — it holds all of your "draw" calls. Via the Canvas, your drawing is actually performed upon an underlying Bitmap, which is placed into the window.

onDraw(Canvas canvas) 中,您将获得一个 canvas 对象。此 canvas 有一个底层 bitmap。并非所有 View 都具有相同的 Canvas 。 Canvas 只是普通 bitmap(屏幕上的像素)之上的一层。 canvas 让您可以随心所欲地操作位图。所以每个 View 都有一个 Canvas ,但不是它自己的位图。

所以不,就内存而言,三 View 并不意味着内存增加了三倍,因为只有 一个 位图。然而,您可以创建自己的位图,如果您这样做,那么您将占用大量内存。如果您创建 3 个屏幕大小的位图,您的内存将增加三倍。

关于android - 每个 View 是否都有自己的 Canvas /位图可供绘制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33362460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com