Android中的ViewPager滚动

Android中的ViewPager滚动,android,android-asynctask,android-viewpager,android-gridview,Android,Android Asynctask,Android Viewpager,Android Gridview,我使用ViewPager来显示各种GridView,每个GridView都有一组图像。 我只是复制并粘贴了所有的图像到drawables文件夹,每个都有300px 300px,当在不同的网格之间滑动时,滑动滞后了很多,我尝试将图像大小调整到一半,效果更好,但问题仍然存在 然后,我尝试使用异步任务加载每个图像,如下所示: public class ImageAdapter extends BaseAdapter { private Context mContext; private Intege

我使用ViewPager来显示各种GridView,每个GridView都有一组图像。

我只是复制并粘贴了所有的图像到drawables文件夹,每个都有300px 300px,当在不同的网格之间滑动时,滑动滞后了很多,我尝试将图像大小调整到一半,效果更好,但问题仍然存在

然后,我尝试使用异步任务加载每个图像,如下所示:

public class ImageAdapter extends BaseAdapter {
private Context mContext;
private Integer[] mSeries;

public ImageAdapter(Context c, int n) {
    super();
    this.mContext = c;
    this.mSeries = ArrayImages.getImages(n);
}

public int getCount() {
    return mSeries.length;
}

public Object getItem(int position) {
    return null;
}

public long getItemId(int position) {
    return 0;
}

// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
    ImageView imageView;
    if (convertView == null) {
        // if it's not recycled, initialize some attributes
        imageView = new ImageView(mContext);
        imageView.setLayoutParams(new GridView.LayoutParams(200, 200));
        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
        imageView.setPadding(8, 8, 8, 8);
    } else {
        imageView = (ImageView) convertView;
    }

    imageView.setDrawingCacheEnabled(true);
    new LoadImage(imageView, position).execute();
    return imageView;
}

class LoadImage extends AsyncTask<Object, Void, Integer> {

    private ImageView imv;
    private int position;

    public LoadImage(ImageView imv, int pos) {
        this.imv = imv;
        this.position = pos;
    }

    @Override
    protected Integer doInBackground(Object... params) {
        return mSeries[position];
    }
    @Override
    protected void onPostExecute(Integer result) {
        if(result != 0 && imv != null){
            imv.setVisibility(View.VISIBLE);
            imv.setImageResource(result);
        }else{
            imv.setVisibility(View.GONE);
        }
    }
}

如何改进加载并消除延迟?

我使用这个库将图像从web加载到适配器,它只有3个类,您可以编辑它来加载本地图像,而且它很容易实现

好吧,在Vinicius向我介绍了一个图书馆后,尽管我没能解决这个问题,我还是决定搜索其他图书馆,找到了毕加索图书馆,它非常完美,而且很容易加载图像,它为你做了所有的工作

我只是按照这个例子做了


这是答案,希望这能有所帮助。谢谢你的想法,我试过了,但不知怎么的,问题仍然存在。也许我在做别的事情,这就是原因。是的,我不得不更改代码,因为我不想使用URL,因为应用程序不能可靠地访问互联网。
public class ViewPagerAdapter extends FragmentStatePagerAdapter {

private int NumbOfTabs = 16; // Store the number of tabs, this will also be passed when the ViewPagerAdapter is created


// Build a Constructor and assign the passed Values to appropriate values in the class
public ViewPagerAdapter(FragmentManager fm) {
    super(fm);
}

//This method return the fragment for the every position in the View Pager
@Override
public Fragment getItem(int index) {
    // TODO Auto-generated method stub
    switch (index) {
        case 0:
            return new GridFragment(1);

        case 1:
            return new GridFragment(2);
        ...
        case 16:
            return new GridFragment(16);