#android #arrays #imageview
Вопрос:
Я пытаюсь вставить 3 изображения из моей галереи из другого действия в ArrayList
слайдер для слайдера.
int[] images = {R.drawable.ic_baseline_event_24,R.drawable.ic_baseline_event_24,R.drawable.ic_baseline_event_24};
Я хочу заменить на R.drawable
, R.id.image
но я не могу найти никаких решений.
Код для получения изображений:
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(Intent.createChooser(intent,"Select image"),1);
Комментарии:
1. у меня есть сомнения, где код, когда вы получаете или выбираете изображения из своей галереи?
2. Намерение намерение = новое намерение(Намерение. ACTION_GET_CONTENT); intent.setType(«изображение/*»); startActivityForResult(Intent.createChooser(намерение,»Выбрать изображение»),1);
3. Я новичок в Android studio и изучаю разные вещи.
4. Добавление R. id.image добавит идентификатор изображения в массив. т. е. Он не будет добавлять изображения в массив.
5. есть ли какой-либо способ добавить изображения в массив
Ответ №1:
Используйте этот фрагмент кода для выбора нескольких изображений с телефона
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
intent.setType("image/*");
intent.addCategory(Intent.CATEGORY_OPENABLE);
startActivityForResult(intent, PICK_IMAGE_MULTIPLE);
Теперь, если вы на 100% уверены, что пользователь выберет только несколько изображений, тогда нет необходимости ставить галочку, но на всякий случай, если пользователь выберет только одно изображение, это хорошо.
Внутри onActivityResult, если пользователь выбрал несколько изображений data.getData()
, вернет значение null, в противном случае он будет содержать Uri одного изображения.
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_IMAGE_MULTIPLE amp;amp; resultCode == RESULT_OK) {
if (data.getData() == null) {
//user selected multiple images
int i = data.getClipData().getItemCount();
int j = 0;
Uri[] imageUri = new Uri[i];
Bitmap[] bitmap = new Bitmap[i]
while (j < i) {
imageUri[j] = data.getClipData().getItemAt(j).getUri();
bitmap[j] = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageUri[i]);
j ;
}
}
else
{
//User only selected one image
}
}
}
С помощью этого кода у вас будет массив растровых изображений.
Примечание: возможно, вам придется окружить растровое изображение с помощью try catch.