随着手机摄像头像素的提升,拍摄的照片大小也越来越大,在GridView等控件中列举图片等内容,会因为图片太大从而在setImage的时候耗费过多的时间,导致用户体验度下降,所以我们在获取到图像uri的时候将图像进行压缩后单独保存一份,在GridView中显示缩略图,而item的点击事件还是依旧传输的是原图的链接地址,从而保证查看大图时显示的是原图内容。
本例中所说的图片来源于从系统图库中选取的图片或者由相机拍摄并返回的图片,将这些图片都显示在GridView当中。由于之前的文章叙述过从系统图库中选取的图片和由相机拍摄并返回的图片的方式以及GridView的adapter如何实现,这里不再赘述,只附上关键部分的代码。
在调用拍照得到图片的过程中,我们图片的文件名及路径如下
image_camera_file = new File(Environment.getExternalStorageDirectory(), System.currentTimeMillis() + ".jpg"); //设置sdcard的路径及图片文件名
在onActivityResult中,
if (requestCode==RESULT_ADD_PIC_FROM_CAMERA && resultCode==RESULT_OK) {
try{
String c=Uri.fromFile(image_camera_file).toString();
list_image.add(c);
resultimage+="@"+Uri.fromFile(image_camera_file).toString();
//生成缩略图
Bitmap bitmap=getBitmapFormUri(ContentActivity.this,Uri.fromFile(image_camera_file));
File thumbnailfile=new File(Environment.getExternalStorageDirectory(),"thumbnail"+c.substring(c.lastIndexOf('/')+1));
Log.v("TAG",thumbnailfile