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