gallery加载大量图片时内存溢出的解决方法(三)

6ImageAdapter

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;

    }

   

85、从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()));

                }

            }

        }

    }

你可能感兴趣的:(C++,c,F#,C#)