使用Universal Image Loader从Resources缓慢传输图像

时间:2013-04-09 21:13:43

标签: android gridview universal-image-loader

到目前为止,我正在创建一个包含两项活动的应用。每个活动都只是一个在drawables文件夹中充满图片的gridview。但是,这些图像的加载速度非常慢。在平板电脑上,我一次可能在屏幕上有24张图片。这些图片是256 * 144,平均大约60KB。如果我滑动到足以需要重置所有视图,则加载页面大约需要8秒钟。这似乎不对。

两项活动中的所有图片总共约8MB空​​间。

我目前正在使用Universal Image Loader,但如果有更好的方法,我不会反对另一种方法。

这是我的数组适配器代码。

    import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;

public class ImageAdapter extends BaseAdapter{
    private Context context;
    private int columnSize;
    private int rowSize;
    private boolean flag;
    private DisplayImageOptions options;
    private ImageLoaderConfiguration config;
    private ImageLoader imageLoader;

public ImageAdapter(Context c, int cS, int rS, boolean f, ImageLoader img){
    context = c;
    columnSize = cS;
    rowSize = rS;
    flag = f;
    options = new DisplayImageOptions.Builder().cacheInMemory().build();
    config = new ImageLoaderConfiguration.Builder(context).build();
    imageLoader = img;
}

(其他方法没什么特别的)

    @Override
public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    ImageView icon;

    if(convertView==null){
        icon = new ImageView(context);
        icon.setLayoutParams(new GridView.LayoutParams(columnSize, rowSize));
        icon.setScaleType(ImageView.ScaleType.CENTER_CROP);
        icon.setPadding(2, 2, 2, 2);
    } else {
        icon = (ImageView)convertView;
    }

    String filename = null;



    if(flag){
        filename = "h" + Integer.toString(position);
    } else if(!flag){
        filename = "i" + Integer.toString(position);
    }

    int id = context.getResources().getIdentifier(filename, "drawable", context.getPackageName());
    String uri = "drawable://" + Integer.toString(id);
    ImageLoader.getInstance().displayImage(uri, icon, options);
    //icon.setImageResource(id);

    return icon;
}

}

编辑:忘记了一些代码。这是从片段的onCreateView方法

传递到我的适配器代码的图像适配器
ImageLoader img = ImageLoader.getInstance();
        img.init(ImageLoaderConfiguration.createDefault(fragView.getContext()));
        grid.setAdapter(new ImageAdapter(fragView.getContext(),columnSize, rowSize, true, img));

0 个答案:

没有答案