3

当我在 ViewPager 中打开一个页面时,它会实例化相邻的页面。我想要实现的是

1.仅在页面处于焦点时才加载页面内容。

2.显示加载屏幕,同时我填充焦点所在的页面布局,然后用页面布局替换加载屏幕。

有人可以指出我实现这两个功能的正确方向吗?

4

1 回答 1

3

我不确定解决您的第一个问题的好方法(我不相信您可以控制加载哪些页面以及加载顺序),但我有一些可以帮助您解决第二个问题的方法:

这是我创建的视图示例,该视图加载到我的 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);

}
于 2011-09-12T20:21:58.460 回答