到目前为止,我正在创建一个包含两个活动的应用程序。每个活动只不过是一个在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));