这是一个非常具体的案例,所以我会尽力适当地组织这个问题。我有一个自定义ViewGroup
,它正在为我的目的而工作,但它的初始化导致跳帧。
我的应用包含ViewPager
个Fragment
,其中每个父容器都是ScrollView
。在这些视图中,我有许多不同的视图,一个是包含垂直行自定义视图的LinearLayout
(用于操作数据集)。请参阅图片'前景,可见,辅助应用'
对于这种布局,我扩展了LinearLayout
,并且每个人都在运行时填充,从xml中为每个孩子充气。
它运行正常,问题是在运行时膨胀所有这些子视图会导致跳帧。我已经使用方法跟踪来发现每次LayoutInflater.inflate()
的调用都是平均4-6毫秒。在我的所有片段中,每个片段包含一个或多个这些列表,它在启动时会累积大量(40-50)跳过的帧。
手动创建子视图而不是充气可以改善它,但还不够。仍然非常引人注目的跳帧。
它需要某种形式的视图重用,类似于ListView
所做的。
我看到了一个解决方案,尽管它看起来并不理想。
这是用具有多个视图类型的ScrollView
替换片段容器ListView
。
我看到的一些问题是
ListView
行有关。我想知道是否可以做到:
LinearLayout
作为这些列表,而是使用ListView
并扩展其大小以显示所有项目。它将嵌套在父ScrollView
中。如果它的大小扩展到所有项目,它甚至会重用任何视图吗?在这种情况下,我可以使用其他类型的容器吗?我还没有使用过新的RecyclerView
,但从我所阅读的内容看起来与ListView
基本相同。
基本上我尝试创建的是LinearLayout
,可以回收视图。
不胜感激任何建议。如果这个问题读得不好,请告诉我。如果需要,我可以添加更多信息或发布代码。我意识到我在这里尝试做的事情有点不同寻常,并且可能因设计而存在内在缺陷。但我对它目前的呈现方式非常满意,并希望以这种方式保留它。