是的,如果我正确理解了这个问题,请尝试以下步骤来解决您的问题
创建名称为 Image 的模型:
创建成员以保存图像信息,如 uri、名称等。
public class Image implements Parcelable {
public Uri uri;
public int orientation;
public Image(Uri mUri, int mOrientation) {
uri = mUri;
orientation = mOrientation;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeParcelable(this.uri, 0);
dest.writeInt(this.orientation);
}}
创建数组列表将数据保存到数组列表中
使用相机 takePicture 方法 mCamera.takePicture(null, null, mPicture);
并使用以下方法保存图像:
public void saveImage(Bitmap bitmap, String fileName) {
String path = MediaStore.Images.Media.insertImage(getActivity().getContentResolver(), bitmap, fileName, null);
Uri contentUri = Uri.parse(path);
final Image image = getImageFromContentUri(contentUri);
getActivity().sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, contentUri));
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
((TheImagePickerActivity) getActivity()).addImage(image);
}
});
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
ArrayList<Image> list = new ArrayList<>(arraySelectedImages);
outState.putParcelableArrayList("", list);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
populateUi(savedInstanceState);
}
private void populateUi(Bundle savedInstanceState) {
ArrayList<Image> arrayImages = savedInstanceState.getParcelableArrayList("");
if (arrayImages != null) {
for (Image image : arrayImages) {
addImage(image);
}
}
}
public boolean addImage(Image image) {
if (arraySelectedImages == null) {
arraySelectedImages = new HashSet<>();
}
if (arraySelectedImages.add(image)) {
// Do Something
return true;
}
return false;
}