1

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

两个活动中的所有图片总空间约为 8MB。

我目前正在使用通用图像加载器,但如果有更好的方法,我不反对另一种方法。

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

    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));
4

0 回答 0