在所有活动中显示slideUpPanel

时间:2018-06-20 08:53:28

标签: android android-fragments android-recyclerview android-viewpager

我试图在所有活动中添加一个slideUpPanel(Sliding up panel)。该面板由一个viewpager组成,而后者又由两个片段组成。这些片段中的一个具有recyclerView(超过1000个项目),另一个片段具有一些根据用户的选择动态变化的数据。此面板与Google Play音乐和Soundcloud的面板非常相似。现在,为了显示该面板,我测试了两种方法:

1)我创建了一个基本活动,并向其中添加了向上滑动面板,然后将其余活动扩展到基本活动。这样一来,我只需创建一个面板和viewpager。

2)我在所有活动中都包含向上滑动面板。但是这种方法非常难以管理,因为我已经为所有活动创建了viewpagers,并且如果一个活动中的数据发生更改,我必须编写代码以反映所有活动中的更改。

这两种方法的问题在于,每次我打开一个新活动时,都会创建一个新的viewpager实例和片段。因此,假设如果我在recyclerview片段中有1000多个项目,那么切换活动将花费2-3秒钟以上的时间,因为每次创建新的片段实例并将数据再次全部加载时,切换活动将花费2-3秒以上。这肯定会导致不良的用户体验。

有什么方法可以仅一次(在应用程序启动时)创建viewpager和片段,并仅在用户关闭应用程序时销毁它们?并且用户每次切换活动时都不应加载数据。我只想减少活动切换时间。有什么想法吗?

谢谢。

2 个答案:

答案 0 :(得分:0)

好吧,对于您的滑动面板之类的ui元素,它在许多项目中都保持不变,因此最好只有一个活动。

因此,如果您有1个活动,则可以在滑动面板内部放置一个Viewpager,而该部分保持不变。接下来,在您的活动中,您可以将FrameLayout wich用于承载片段。这样做可以实现滑动面板的单个实例以及带有片段的内容之间的导航。

收集大量数据使您希望尽量减少这些项目。

答案 1 :(得分:0)

这有两种方法(假设您使用的是 sothree 的 SlidingUpPanelLayout)

  • 底部导航视图 简单的方法是创建一个底部导航视图并将其保留在 MainActivity 并将向上滑动面板布局附加到底部导航视图 ( layout_above = bottomnavbar_id ) 因为底部导航保留在整个应用程序中,因此向上滑动面板也必须坚持下去

  • 没有底部导航视图 在 MainActivity 中创建一个框架布局,将属性宽度和高度设置为 match_parent 并创建滑动uppanelayout 并赋予属性 gravity="bottom" 使框架布局保持在该 slideuppanellayout 之上,使用该 frame_layout 显示您想要从片段显示的内容

就这些