在ViewPager中加载页面时显示进度图标

时间:2013-09-17 14:12:11

标签: android

我在我的应用程序中使用AsyncTask从Internet加载数据。这是我的类的onPostExecute方法,它扩展了Async类。

protected void onPostExecute(Article result) {
    super.onPostExecute(result);

    TextView txtTitle= (TextView) view.findViewById(R.id.title);
    txtTitle.setText(result.getTitle());

    TextView txtMain= (TextView) view.findViewById(R.id.main);
    txtMain.setText(result.getContent());
}

这是来自PageAdapter的实例化页面的重写方法。 customlayout是显示文章的布局。

public Object instantiateItem(View container, int position) {
    LayoutInflater inflater = (LayoutInflater) container.getContext()
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View page= inflater.inflate(R.layout.customlayout , null);

    Worker aw = new Worker(page, container.getContext());
    aw.execute(links.get(position));

    ((ViewPager) container).addView(page,0);
    return page;
}

以下是每页中膨胀的页面布局。     

<TextView
    android:id="@+id/title"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
     />

<TextView
    android:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="20sp" />

我想要实现的是在数据加载之前显示进度信息。我甚至可以在加载时轻扫页面。 如果有人愿意,我将不胜感激。

另外,如何控制在后台加载的页数?

3 个答案:

答案 0 :(得分:2)

如果您正在寻找旋转进度条,可以试试这个:

的xml:

<FrameLayout android:id="@+id/progressContainer">
   <ProgressBar style="@android:style/Widget.ProgressBar.Large"
                    android:layout_gravity="center" />
</FrameLayout>

活性:

private View progressContainer;

@Override
public View onCreateView(...) {
    progressContainer = v.findeViewById(R.id.progressContainer);
    progressContainer.setVisibility(View.INVISIBLE);
}

因此,只要您需要显示“进度”,只需将“视图”设置为“可见”即可。

如果您希望仍然能够与您的活动进行互动,您只需修改父FrameLayout的可点击性:

android:clickable="true" (or "false")

如果要进行交互,请将其设置为false,并将其设为true!

答案 1 :(得分:0)

我建议使用片段作为viewPager项,并在片段内实现加载模式,即 - https://github.com/johnkil/Android-ProgressFragment

关于加载的页数,请参阅 - setOffscreenPageLimit

答案 2 :(得分:0)

如果我没错。您正在创建像youtube视频,在背景上获取帧并继续更新它。在你的情况下是书,在背景上获取页面并保持更新。

首先,您需要的是 片段 ,因为您无法销毁在您的活动上运行的 AsyncTask

其次,AsyncTask publishProgress onProgressUpdate(Progress ...)方法,它可以帮助您报告背景情况。您可以查看android

提供的用法示例

http://developer.android.com/reference/android/os/AsyncTask.html