我在我的应用程序中使用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" />
我想要实现的是在数据加载之前显示进度信息。我甚至可以在加载时轻扫页面。 如果有人愿意,我将不胜感激。
另外,如何控制在后台加载的页数?
答案 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