当我在 ViewPager 中打开一个页面时,它会实例化相邻的页面。我想要实现的是
1.仅在页面处于焦点时才加载页面内容。
2.显示加载屏幕,同时我填充焦点所在的页面布局,然后用页面布局替换加载屏幕。
有人可以指出我实现这两个功能的正确方向吗?
当我在 ViewPager 中打开一个页面时,它会实例化相邻的页面。我想要实现的是
1.仅在页面处于焦点时才加载页面内容。
2.显示加载屏幕,同时我填充焦点所在的页面布局,然后用页面布局替换加载屏幕。
有人可以指出我实现这两个功能的正确方向吗?
我不确定解决您的第一个问题的好方法(我不相信您可以控制加载哪些页面以及加载顺序),但我有一些可以帮助您解决第二个问题的方法:
这是我创建的视图示例,该视图加载到我的 ViewPager 的每个视图中:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center">
<LinearLayout
android:id="@+id/loading_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ProgressBar
style="@style/GenericProgressIndicator"/>
<TextView
android:id="@+id/loading_message_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/loading_message_text"/>
</LinearLayout>
<WebView
android:id="@+id/webview"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:fadingEdge="vertical"
android:visibility="gone"
/>
</RelativeLayout>
在RelativeLayout 中嵌套了两个元素:一个LinearLayout 代表我的加载消息(包括ProgressBar 和一个TextView),一个WebView 将在加载后保存我的内容。WebView 最初将其可见性设置为 GONE 以完全隐藏它。在代码中,我膨胀视图并启动 AsyncTask 来加载我的数据。加载数据后,我将 LinearLayout 的可见性设置为 GONE,将 WebView 的可见性设置为 VISIBLE。
我的 AsyncTask 中的 onPostExecute - 加载数据后,隐藏加载消息并显示数据
protected void onPostExecute(Void v)
{
LinearLayout loadingMessage = (LinearLayout)articleLayout.findViewById(R.loading_message);
WebView articleContent = (WebView)articleLayout.findViewById(R.id.webview);
[...]
loadingMessage.setVisibility(View.GONE);
articleContent.setVisibility(View.VISIBLE);
}