在View Pager android中插入循环进度条

时间:2014-06-05 18:54:00

标签: android android-fragments android-viewpager progress-bar

我有一个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;
}

1 个答案:

答案 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();
    }