gallery加载大量图片时内存溢出的解决方法(三)
6、ImageAdapter
public class ImageAdapter extends BaseAdapter {
??????? private Context mContext;// 上下文
??????? public ImageAdapter(Context c) {
??????????? this.mContext = c;
??????? }
??????? @Override
??????? public int getCount() {
??????????? if (imageList != null) {
??????????????? return imageList.size();
??????????? } else {
??????????????? return 0;
??????????? }
??????? }
??????? @Override
??????? public Object getItem(int position) {
??????????? if (imageList != null) {
??????????????? return imageList.get(position);
??????????? }
??????????? return position;// 获取图片在库中的位置
??????? }
??????? @Override
??????? public long getItemId(int position) {
??????????? return position;// 获取图片在库中的位置
??????? }
??????? @Override
??????? public View getView(int position, View convertView, ViewGroup parent) {
??????????? Log.i("Tag", position + "");
??????????? ImageView imageView = new ImageView(mContext);
??????????? imageView.setScaleType(ImageView.ScaleType.FIT_XY);
??????????? imageView.setLayoutParams(new Gallery.LayoutParams(220, 247));
??????????? if (imageList.get(position).getIsNull().equals(ISTRUE)) {
??????????????? imageView.setImageResource(R.drawable.scene_ic_loading_invert);
??????????? } else {
??????????????? imageView.setImageBitmap(imageList.get(position).getImage());
??????????? }
??????????? return imageView;
??????? }
??????? public float getScale(boolean focused, int offset) {
??????????? return Math.max(0, 1.0f / (float) Math.pow(2, Math.abs(offset)));
??????? }
??? }
???
???
?
??? 7、查找图片是加载的进度条
??? @Override
??? protected Dialog onCreateDialog(int id) {
??????? if (id == 0) {
??????????? ProgressDialog loadingDialog = new ProgressDialog(this);
??????????? loadingDialog.setMessage("正在扫描中...,请稍候!");
??????????? loadingDialog.setIndeterminate(true);
??????????? loadingDialog.setCancelable(true);
??????????? return loadingDialog;
??????? }
??????? return null;
??? }
???
8、5、从sd卡里获取图片
??? public? void getSD(String dir) {
??????? File f = new File(dir);
??????? File[] files = f.listFiles();
??????? if (files != null) {
??????????? for (int i = 0; i < files.length; i++) {
??????????????? String[] s = new String[2];
??????????????? File file = files[i];
??????????????? if (file.isFile()) {
??????????????????? if (ImageManager.getImageFile(file.getPath())) {
??????????????????????? System.out.println("file?? " + String.valueOf(file));
??????????????????????? s[0] = file.getPath();
??????????????????????? s[1] = file.getName();
??????????????????????? pathList.add(s);
??????????????????? }
??????????????? } else if(file.isDirectory()){
??????????????????? getSD(String.valueOf(file.getAbsolutePath()));
??????????????? }
??????????? }
??????? }
??? }