我有一个View Pager,它包含25个片段(每个片段都有来自字符串的文本)和一个网格,这是第一个要显示的片段。问题是,当我加载应用程序时,需要5到10秒才能开始响应,然后它的工作非常流畅。我无法减少加载时间,因为我需要同时加载所有片段。因此,我想要一个圆形进度条(旋转一个)3-4秒。
这是我的主要活动:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Utils.onActivityCreateSetTheme(this);
setContentView(R.layout.activity_main);
setTitle(R.string.title_activity_afabeto);
fragments.add(Fragment.instantiate(this, GRID.class.getName()));
fragmentTitles.add(getString(R.string.title_activity_afabeto));
fragments.add(Fragment.instantiate(this, A.class.getName()));
fragmentTitles.add(A.class.getSimpleName());
fragments.add(Fragment.instantiate(this, B.class.getName()));
fragmentTitles.add(B.class.getSimpleName());
fragments.add(Fragment.instantiate(this, C.class.getName()));
fragmentTitles.add(C.class.getSimpleName());
.
.
.
fragments.add(Fragment.instantiate(this, Z.class.getName()));
fragmentTitles.add(Z.class.getSimpleName());
//
mViewPager = (ViewPager) findViewById(R.id.pager);
View pagerStrip = findViewById(R.id.pagerTabStrip);
if (pagerStrip instanceof PagerTabStrip) {
PagerTabStrip pagerTabStrip = (PagerTabStrip) pagerStrip;
pagerTabStrip.setDrawFullUnderline(true);
pagerTabStrip.setTabIndicatorColorResource(android.R.color.holo_red_dark);
// pagerTabStrip.setTextColor(color.white);
} else if (pagerStrip instanceof PagerTitleStrip) {
PagerTitleStrip pagerTitleStrip = (PagerTitleStrip) pagerStrip;
pagerTitleStrip.setTextColor(getResources().getColor(android.R.color.white));
}
this.mPagerAdapter = new PagerAdapter(super.getSupportFragmentManager(), fragments, fragmentTitles);
mViewPager.setAdapter(this.mPagerAdapter);
mViewPager.setCurrentItem(0);
mViewPager.setOffscreenPageLimit(fragments.size());
}
public ViewPager getViewPager() {
if (null == mViewPager) {
mViewPager = (ViewPager) findViewById(R.id.pager);
}
return mViewPager;
}
答案 0 :(得分:0)
在阅读完这里的评论后,您可能需要 - AsyncTask和不确定的进度条。您可以重复使用当前代码来获取数据。只需确保您不从后台任务执行任何屏幕I / O.
public class MyBackgroundTask extends AsyncTask<String, Void, Boolean> {
@Override
protected void onPreExecute() {
mProgressDialog = ProgressDialog.show(MainActivity.this, "", getString(R.string.wait_for_communication), true);
mProgressDialog.setCancelable(false);
}
@Override
protected Boolean doInBackground(String... answer) {
// do your data stuff here
// this return type is the 3rd data type in the declaration
return true;
}
@Override
protected void onPostExecute(final Boolean success) {
if ( !success ) {
// Some kind of error occurred
AlertDialog.Builder errorDialog = new AlertDialog.Builder(MainActivity.this);
errorDialog.setTitle("Error Notice");
errorDialog.setMessage("Error Message");
errorDialog.show();
}
mProgressDialog.dismiss();
}