2016-04-11 16 views
0

这是一个非常具体的情况,所以我会尽我所能来适当组织这个问题。我有一个自定义ViewGroup正在为我的目的工作,但它的初始化导致跳帧。Android的ViewGroup使用

我的应用程序包含一个ViewPagerFragment的每个父容器是一个ScrollView。在这些之中,我有很多不同的观点,其中一个是包含垂直行自定义视图(用于操纵数据集)的LinearLayout。见图片“前台,可见,二级应用”

此布局,我已经扩展LinearLayout,每一个在运行时填充,从充气XML每一个孩子。

它工作正常,问题是,在运行时对所有这些子视图充气会导致跳帧。我使用方法跟踪来发现每个LayoutInflater.inflate()的呼叫正在平均4-6毫秒。在我的所有包含一个或多个这些列表的片段之间,它在启动时会加入大量(40-50)跳帧。

手动创建子视图而不是膨胀提高了一点,但还不够。仍然非常明显的跳帧。

它需要某种形式的重复使用,类似于ListView所做的。

我看到一个解决方案,尽管它看起来并不理想。 即用多种视图类型替换片段容器ScrollViewListView

一些问题,我这个看到的是

  • 它需要的意见上,下之间长达5-6个不同视图类型,这些列表之间。似乎写得很乱。
  • 每个子视图都需要能够通过简单的展开/折叠动画来垂直扩展大小。不知道这是甚至可能与ListView行有关。
  • 它涉及重写几乎整个应用程序。我愿意做但愿尽可能避免。

我不知道是不是在所有可能的事:

  • 使用LinearLayout这些列表代替,使用ListView,并且具有其尺寸扩大到显示所有项目。它将嵌套在父项ScrollView中。如果它的大小扩展到所有项目,它甚至会重用任何视图吗?

在这种情况下是否还有其他类型的容器?我还没有使用新的RecyclerView,但从我读过的内容看来,它基本上与ListView相同。

基本上我想创建的是回收视图的LinearLayout

希望有任何建议。请让我知道,如果这个问题不能很好地阅读,我可以添加更多的信息或邮政编码,如果需要的话。我意识到我在这里要做的事情有点不合常规,并且可能由于设计本身存在缺陷。但我对目前的介绍感到非常满意,并希望保持这种状态。

回答

0

从我的理解你有可点击的标题视图,当点击一个内部布局显示/隐藏。

因此,您可以在没有内部布局的情况下让视图充气。只需点击标题即可。然后,当点击标题时,如果相应的内部布局尚未膨胀,那么您就会膨胀它。否则,你显示/隐藏它。这应该从最初的通货膨胀中节省很多时间。也可以在运行时以编程方式构建布局而不是膨胀xml,因为您不必使用费用相当高的findViewById()方法,因此也可节省大量时间。

+0

很棒的建议。我会尽快完成这个尝试。 –

+0

如果它帮助你解决你的问题,请将答案标记为已接受。 – Anonymous

+0

我仍然有框架跳过这个。我有另一个想法,在工作线程中夸大这些视图,并在'onPostExecute'中附加到父项。它在我的设备上完美运行,这样做有什么问题吗? –