我要完成的工作是,每当我单击单独的Imageview时,都要选择一个清晰的图像。例如,如果单击ImageView_1,则可以从库中选择一张图像;如果单击Imagview_2,则可以从库中选择另一张图像。我已经看到这个问题的答案已经很多,但是它们都与我想做的不同。在先前的答案中,他们将所有图像作为列表显示在OnActivity结果中,并从图库中一次选择所有图像。
我的密码
使用的依赖
实现'com.theartofdev.edmodo:android-image-cropper:2.8。+'
private void ImageOnclick(){
image_profile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (ContextCompat.checkSelfPermission(Upload_New_Product.this,
Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
openFileChooser();
} else {
requestStoragePermission();
}
}
});
image_profile2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (ContextCompat.checkSelfPermission(Upload_New_Product.this,
Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
openFileChooser2();
} else {
requestStoragePermission();
}
}
});
}
private void openFileChooser() {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent, PICK_IMAGE_REQUEST);
}
private void openFileChooser2() {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent, PICK_IMAGE_REQUEST2);
}
@RequiresApi(api = Build.VERSION_CODES.P)
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null) {
ImageUri = data.getData();
CropImage.activity(ImageUri)
.setGuidelines(CropImageView.Guidelines.ON)
// .setAspectRatio(1, 1)
.start(this);
} else if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
CropImage.ActivityResult result = CropImage.getActivityResult(data);
if (resultCode == RESULT_OK) {
resultUri = result.getUri();
if (Build.VERSION.SDK_INT >= 29) {
try {
bitmap = ImageDecoder.decodeBitmap(ImageDecoder.createSource(getContentResolver(), resultUri));
} catch (IOException e) {
e.printStackTrace();
}
} else {
// Use older version
try {
bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), resultUri);
} catch (IOException e) {
e.printStackTrace();
}
}
//setImage_profile();
resized = Bitmap.createScaledBitmap(bitmap, 600, 600, true);
image_profile.setImageBitmap(resized);
} else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) {
Exception error = result.getError();
}
}
// UploadingImage();
// UploadingThumbnailImage();
if (requestCode == PICK_IMAGE_REQUEST2 && resultCode == RESULT_OK && data != null) {
ImageUri2 = data.getData();
CropImage.activity(ImageUri2)
.setGuidelines(CropImageView.Guidelines.ON)
// .setAspectRatio(1, 1)
.start(this);
} else if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
CropImage.ActivityResult result = CropImage.getActivityResult(data);
if (resultCode == RESULT_OK) {
resultUri2 = result.getUri();
if (Build.VERSION.SDK_INT >= 29) {
try {
bitmap2 = ImageDecoder.decodeBitmap(ImageDecoder.createSource(getContentResolver(), resultUri2));
} catch (IOException e) {
e.printStackTrace();
}
} else {
// Use older version
try {
bitmap2 = MediaStore.Images.Media.getBitmap(this.getContentResolver(), resultUri2);
} catch (IOException e) {
e.printStackTrace();
}
}
resized2 = Bitmap.createScaledBitmap(bitmap2, 600, 600, true);
image_profile2.setImageBitmap(resized2);
//setImage_profile2();
// UploadingImage();
} else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) {
Exception error = result.getError();
}
}
}
您错过了这一行:
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
活动结果应如下所示:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == PICK_IMAGE_REQUEST) {
if(resultCode == Activity.RESULT_OK) {
if(data.getClipData() != null) {
int count = data.getClipData().getItemCount();
for(int i = 0; i < count; i++)
Uri imageUri = data.getClipData().getItemAt(i).getUri();
//TODO: do something; here is your selected images
}
} else if(data.getData() != null) {
String imagePath = data.getData().getPath();
//TODO: do something
}
}
}
意图:
Intent intent = new Intent();
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"Select images"), PICK_IMAGE_REQUEST);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句