这是一个非常具体的情况,所以我会尽我所能来适当组织这个问题。我有一个自定义ViewGroup
正在为我的目的工作,但它的初始化导致跳帧。Android的ViewGroup使用
我的应用程序包含一个ViewPager
的Fragment
的每个父容器是一个ScrollView
。在这些之中,我有很多不同的观点,其中一个是包含垂直行自定义视图(用于操纵数据集)的LinearLayout
。见图片“前台,可见,二级应用”
此布局,我已经扩展LinearLayout
,每一个在运行时填充,从充气XML每一个孩子。
它工作正常,问题是,在运行时对所有这些子视图充气会导致跳帧。我使用方法跟踪来发现每个LayoutInflater.inflate()
的呼叫正在平均4-6毫秒。在我的所有包含一个或多个这些列表的片段之间,它在启动时会加入大量(40-50)跳帧。
手动创建子视图而不是膨胀提高了一点,但还不够。仍然非常明显的跳帧。
它需要某种形式的重复使用,类似于ListView
所做的。
我看到一个解决方案,尽管它看起来并不理想。 即用多种视图类型替换片段容器ScrollView
与ListView
。
一些问题,我这个看到的是
- 它需要的意见上,下之间长达5-6个不同视图类型,这些列表之间。似乎写得很乱。
- 每个子视图都需要能够通过简单的展开/折叠动画来垂直扩展大小。不知道这是甚至可能与
ListView
行有关。 - 它涉及重写几乎整个应用程序。我愿意做但愿尽可能避免。
我不知道是不是在所有可能的事:
- 使用
LinearLayout
这些列表代替,使用ListView
,并且具有其尺寸扩大到显示所有项目。它将嵌套在父项ScrollView
中。如果它的大小扩展到所有项目,它甚至会重用任何视图吗?
在这种情况下是否还有其他类型的容器?我还没有使用新的RecyclerView
,但从我读过的内容看来,它基本上与ListView
相同。
基本上我想创建的是回收视图的LinearLayout
。
希望有任何建议。请让我知道,如果这个问题不能很好地阅读,我可以添加更多的信息或邮政编码,如果需要的话。我意识到我在这里要做的事情有点不合常规,并且可能由于设计本身存在缺陷。但我对目前的介绍感到非常满意,并希望保持这种状态。
很棒的建议。我会尽快完成这个尝试。 –
如果它帮助你解决你的问题,请将答案标记为已接受。 – Anonymous
我仍然有框架跳过这个。我有另一个想法,在工作线程中夸大这些视图,并在'onPostExecute'中附加到父项。它在我的设备上完美运行,这样做有什么问题吗? –