关于加载太多文件内存溢出

做相册

自己写了个ImageAdapter,里面主要是读取指定文件夹下的图片
在Main中有个Gallery显示图片。

问题一:文件夹下图片过多会出现内存溢出,请问要怎样解决呢?(自己想了一下,用分页来做。 方法1、没页显示10张,在浏览第二页时,清空第一页,加载第三页,但是不知道如何在Gallery去触发分页这个操作,还有就是某张图片太大在这页也会出现内存溢出。 方法2、以大小分,大于8M就挂掉,就是不知道怎样去做)
问题二:再点击某张图片时如何放大到和屏幕一样大,用Activity或者Dialog来做显示放大后的图片也可以


请教各位大侠有什么办法么?
请附上详细源码讲解,我是java初学者Android也是初学者,很多东西都不太明白,不能留言的Q我也可以的:445966360(注明Android)
Main.java

//程序主界面
public class Main extends MyActivity {

	private Gallery myGallery;//图片显示区域

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		ui();
	}

	public void ui() {
		setContentView(R.layout.main);
		binding();
		listeners();
	}

	// 控件与组件绑定
	public void binding() {

		myGallery = (Gallery) findViewById(R.id.myGallery);
		myGallery.setAdapter(new ImageAdapter(this, "/sdcard/a"));

	}

	// 为组建 添加监听器
	public void listeners() {

		myGallery.setOnItemClickListener(new Functional());

	}

	// 组件 事件功能实现
	private class Functional implements OnItemClickListener {

		// 图片浏览
		@Override
		public void onItemClick(AdapterView<?> parent, View v, int position,
				long id) {

		}


	}

}


ImageAdapter.java

public class ImageAdapter extends BaseAdapter {
	private Context mContext;
	private List<Bitmap> imageList = new ArrayList<Bitmap>();

	public ImageAdapter(Context c, String url) {
		Image(url);
		mContext = c;
	}

	public int getCount() {
		return imageList.size();
	}

	public Object getItem(int position) {
		return position;
	}

	public long getItemId(int position) {
		return position;
	}

	public View getView(int position, View v, ViewGroup parent) {
		ImageView imageview = new ImageView(mContext);
		imageview.setImageBitmap(imageList.get(position));
		imageview.setLayoutParams(new Gallery.LayoutParams(120, 220));
		imageview.setScaleType(ImageView.ScaleType.CENTER_CROP);
		return imageview;
	}

	public void Image(String url) {
		File fUrl = new File(url);
		File[] imageFiles = fUrl.listFiles(new FileFilter() {
			public boolean accept(File f) {
				String fileName = f.getName();
				String ex = f.getName().substring(
						fileName.lastIndexOf(".") + 1, fileName.length())
						.toLowerCase();
				if (ex == null || ex.length() == 0) {
					return false;
				} else {
					if (ex.equals("jpg") || ex.equals("bmp")
							|| ex.equals("png") || ex.equals("gif")) {
						return true;
					}
					return false;
				}
			}
		});

		if (imageFiles == null || imageFiles.length == 0) {
			return;
		} else {
			for (int i = 0, sum = imageFiles.length; i < sum; i++) {

				File file = imageFiles[i];
				BitmapFactory.Options options = new BitmapFactory.Options();
				options.inJustDecodeBounds = false;
				options.inSampleSize = 4;
				Bitmap btp = BitmapFactory.decodeFile(file.getAbsolutePath(),options);
				imageList.add(btp);
			}
			notifyDataSetChanged();
		}
	}
}

你可能感兴趣的:(c,UI,android,浏览器,F#)