80,472
社区成员




@Override
protected void onDestroy() {
super.onDestroy();
for (int i = 0; i < bmp.length; i++) {
if (bmp[i] != null) {
bmp[i].recycle();
bmp[i] = null;
}
}
System.gc();
}
/**
* 判断GridView是否停止滑动
**/
private void isGridViewStop() {
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 4;// 图片宽高都为原来的4分之一,即图片为原来的16分之一
gvSelect.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
switch (scrollState) {
case OnScrollListener.SCROLL_STATE_IDLE:// 滑动停止
for (; start_index < end_index; start_index++) {
try {
if (bmp[start_index] == null) {// 优化读取本地图片
bmp[start_index] = BitmapFactory.decodeFile(
imagePath[start_index], options);
// 对原位图进行缩放
bmp[start_index] = Bitmap.createScaledBitmap(
bmp[start_index], 165, 165, true);
}
} catch (Exception e) {
Log.d("空指针1", bmp[start_index] + "");
}
}
adapter.notifyDataSetChanged();
break;
case OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:// 滚动
break;
default:
break;
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// 设置当前屏幕显示的起始index和结束index
start_index = firstVisibleItem;
end_index = firstVisibleItem + visibleItemCount;
}
});
}
private final class TakePictureCallback implements PictureCallback {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
String sdStatus = Environment.getExternalStorageState();
if (!sdStatus.equals(Environment.MEDIA_MOUNTED)) {
// 检测sd是否可用
Toast.makeText(PhotographActivity.this, "没有SD卡或SD卡不可用!",
Toast.LENGTH_LONG).show();
return;
} else {
Log.d("解码", "0*******");
// 解码指定字节数组中的一个不变的位图
bitmap = BitmapFactory.decodeByteArray(data, 0,
data.length);
Log.d("解码", "1*******");
Intent starEdit = new Intent(PhotographActivity.this,
ConfirmActivity.class);
startActivity(starEdit);
}
}
}
private final class TakePictureCallback implements PictureCallback {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
String sdStatus = Environment.getExternalStorageState();
if (!sdStatus.equals(Environment.MEDIA_MOUNTED)) {
// 检测sd是否可用
Toast.makeText(PhotographActivity.this, "没有SD卡或SD卡不可用!",
Toast.LENGTH_LONG).show();
return;
} else {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 2;// 图片宽高都为原来的2分之一,即图片为原来的4分之一
Log.d("解码", "data.length=" + data.length);
// 解码指定字节数组中的一个不变的位图
ConfirmActivity.bitmap = BitmapFactory.decodeByteArray(data, 0,
data.length, options);
Log.d("解码", "1*******");
Intent starEdit = new Intent(PhotographActivity.this,
ConfirmActivity.class);
startActivity(starEdit);
}
}
}
[/quote]
现在的手机,拍的照片质量非常高,压缩一点,肉眼看上去不会出现明显的失真的. private final class TakePictureCallback implements PictureCallback {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
String sdStatus = Environment.getExternalStorageState();
if (!sdStatus.equals(Environment.MEDIA_MOUNTED)) {
// 检测sd是否可用
Toast.makeText(PhotographActivity.this, "没有SD卡或SD卡不可用!",
Toast.LENGTH_LONG).show();
return;
} else {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 2;// 图片宽高都为原来的2分之一,即图片为原来的4分之一
Log.d("解码", "data.length=" + data.length);
// 解码指定字节数组中的一个不变的位图
ConfirmActivity.bitmap = BitmapFactory.decodeByteArray(data, 0,
data.length, options);
Log.d("解码", "1*******");
Intent starEdit = new Intent(PhotographActivity.this,
ConfirmActivity.class);
startActivity(starEdit);
}
}
}