父LinearLayout视图可能有数百个子视图。为了获得更好的性能,我的解决方案如下:像懒加载。
LinearLayout
与(可能)几百子视图那种违背更好的性能。我认为你在寻找的是一个ListView
与无尽的适配器(一个简单的谷歌搜索将显示如何实现它,而不是那么困难)。只要到达最后一个加载的元素,该适配器就会开始加载视图(加载新视图时显示加载视图)。
如果你仍然想使用LinearLayout
:
如果你只是想使LinearLayout
填满屏幕的内容时,它的第一个规定,您可以在onCreate
方法张贴在您的视图之一Runnable
(如果这是您首先填充LinearLayout
的地方)。在那Runnable
找到LinearLayout
的高度,并将其与当前现在的孩子的高度相比较。如果组合子高度较小,则高度将增加更多视图以进行补偿。
如果LinearLayout
处于ScrollView
,你要添加其他孩子当加载视图变得可见然后监视ScrollView
的滚动和当加载视图变得可见添加新的儿童。通过检查用户滚动的量与当前存在的LinearLayout
儿童的总高度相比,看到加载视图何时变得可见。
初始响应:
你的问题有点含糊关于你想知道什么。如果你有特定的问题,你应该从那开始。
例如,顶级LinearLayout视图有300个子视图。但是 设备屏幕尺寸仅显示11个子视图一次。
请不要让自己陷入这样的场景。如果内存不足(即所有这些视图将保留在内存中),那么这些视图数量太大会导致性能不佳甚至应用程序崩溃。
android如何计算一次有多少个子视图可以显示?
每个View
和ViewGroup
有onMeasure
方法来衡量本身和它的孩子(如果可用)。该LinearLayout
将有一个名为其onMeasure
方法,在这种方法中,将测量它的孩子(与措施method
)给他们,他们应该多大一些建议(在LinearLayout
接收它应该从它的父有多大的一些建议)。如果您想了解如何完成此操作,请查看LinearLayout
的源代码。
视图如何知道它会被绘制?
我不明白你想知道什么。要在屏幕上绘制视图,将调用onDraw
方法。
读从这里http://developer.android.com/reference/android/ MeasureSpec.UNSPECIFIED view/View.MeasureSpec.html –