如何将相机新拍的照片传输到另外一个activity后,在其UI界面上显示出来,有多少种方法
时间: 2024-01-22 09:19:13 浏览: 54
有多种方法可以将相机新拍的照片传输到另外一个activity并在其UI界面上显示出来,以下是其中的几种方法:
1. 使用Intent传递数据:在拍摄照片时,将照片保存到手机本地,然后通过Intent传递文件路径到另一个activity,在该activity中加载图片并显示。例如:
```
// 拍照后返回结果
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
// 获取照片文件路径
String filePath = mPhotoFile.getAbsolutePath();
// 将文件路径作为参数传递到另一个activity
Intent intent = new Intent(this, DisplayPhotoActivity.class);
intent.putExtra("photo_path", filePath);
startActivity(intent);
}
}
```
在另一个activity中获取传递的参数,加载照片并显示:
```
// 获取传递的参数
String filePath = getIntent().getStringExtra("photo_path");
// 加载照片并显示
Bitmap bitmap = BitmapFactory.decodeFile(filePath);
imageView.setImageBitmap(bitmap);
```
2. 使用全局变量传递数据:在拍摄照片时,将照片保存到全局变量中,然后在另一个activity中访问该全局变量取得照片并显示。例如:
```
// 拍照后返回结果
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
// 获取照片并保存到全局变量中
Bitmap bitmap = (Bitmap) data.getExtras().get("data");
MyApp.getInstance().setBitmap(bitmap);
// 启动另一个activity
Intent intent = new Intent(this, DisplayPhotoActivity.class);
startActivity(intent);
}
}
```
在另一个activity中获取全局变量中的照片,加载并显示:
```
// 获取全局变量中的照片
Bitmap bitmap = MyApp.getInstance().getBitmap();
// 加载照片并显示
imageView.setImageBitmap(bitmap);
```
3. 使用文件共享传递数据:在拍摄照片时,将照片保存到手机本地,然后通过文件共享将文件传递到另一个activity,在该activity中加载图片并显示。例如:
```
// 拍照后返回结果
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
// 获取照片文件路径
String filePath = mPhotoFile.getAbsolutePath();
// 将文件保存到应用私有目录中
File dir = getFilesDir();
File photoFile = new File(dir, "photo.jpg");
copyFile(new File(filePath), photoFile);
// 将文件Uri作为参数传递到另一个activity
Uri uri = FileProvider.getUriForFile(this, "com.example.fileprovider", photoFile);
Intent intent = new Intent(this, DisplayPhotoActivity.class);
intent.putExtra("photo_uri", uri);
startActivity(intent);
}
}
// 复制文件
private void copyFile(File src, File dst) throws IOException {
InputStream in = new FileInputStream(src);
OutputStream out = new FileOutputStream(dst);
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
}
在另一个activity中获取传递的参数,加载照片并显示:
```
// 获取传递的参数
Uri uri = getIntent().getParcelableExtra("photo_uri");
// 加载照片并显示
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);
imageView.setImageBitmap(bitmap);
```
以上就是几种将相机新拍的照片传输到另外一个activity并在其UI界面上显示出来的方法,选择哪种方法取决于具体需求和场景。
阅读全文