在Android开发中,如果相机拍照后图片不显示在ImageView上,可能是由于以下几个问题引起的:
private File createImageFile() throws IOException {
// 创建一个以时间戳命名的图片文件
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String imageFileName = "JPEG_" + timeStamp + "_";
File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
File image = File.createTempFile(
imageFileName, /* 前缀 */
".jpg", /* 后缀 */
storageDir /* 目录 */
);
// 保存图片路径
mCurrentPhotoPath = image.getAbsolutePath();
return image;
}
private void setPic() {
// 获取ImageView的宽度和高度
int targetW = imageView.getWidth();
int targetH = imageView.getHeight();
// 根据照片路径解码Bitmap
BitmapFactory.Options bmOptions = new BitmapFactory.Options();
bmOptions.inJustDecodeBounds = true;
BitmapFactory.decodeFile(mCurrentPhotoPath, bmOptions);
int photoW = bmOptions.outWidth;
int photoH = bmOptions.outHeight;
// 计算缩放比例
int scaleFactor = Math.min(photoW/targetW, photoH/targetH);
// 设置Bitmap的缩放比例
bmOptions.inJustDecodeBounds = false;
bmOptions.inSampleSize = scaleFactor;
bmOptions.inPurgeable = true;
Bitmap bitmap = BitmapFactory.decodeFile(mCurrentPhotoPath, bmOptions);
// 将Bitmap设置到ImageView上
imageView.setImageBitmap(bitmap);
}
在拍照完成后,调用setPic()方法即可将照片显示在ImageView上。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
setPic();
}
}
请注意,上述代码示例是基于Android相机应用中的基本操作,并假定你已经在Manifest文件中添加了相应的权限和provider配置。