ImagePicker
Пользовательский фотоальбом, полностью имитирующий интерфейс WeChat, реализует функции съёмки, выбора изображения (одиночный/множественный выбор), обрезки, поворота и т. д.
Если вы обнаружите ошибку или у вас есть хорошие предложения, вы можете создать запрос на слияние. После моего тестирования я немедленно объединю его и выпущу новую версию, чтобы гарантировать, что библиотека находится в рабочем состоянии.
Этот проект ссылается на:
Вы можете использовать исходный код, если он вам нравится. Также приглашаем всех скачать и попробовать этот проект. Если у вас возникнут какие-либо проблемы во время использования, пожалуйста, сообщите нам.
Для пользователей DevEco Studio перед использованием можно выбрать добавление:
implementation "io.openharmony.tpc.thirdlib:ImagePicker:1.0.0"
Параметр | Значение |
---|---|
multiMode | Режим выбора изображений, одиночный/множественный |
selectLimit | Ограничение количества множественного выбора, по умолчанию 9 |
showCamera | Отображать ли кнопку съёмки при выборе изображения |
crop | Разрешить ли обрезку (действует только для одиночного выбора) |
style | Стиль обрезки: прямоугольник или круг |
focusWidth | Ширина прямоугольника обрезки (круг автоматически принимает минимальное значение ширины и высоты) |
focusHeight | Высота прямоугольника обрезки (круг автоматически принимает минимальное значение ширины и высоты) |
outPutX | Требуемая ширина сохранённого изображения после обрезки |
outPutY | Требуемая высота сохранённого изображения после обрезки |
isSaveRectangle | Форма сохранённого после обрезки изображения: область прямоугольника или форма рамки обрезки. Например, при обрезке круга в этом параметре устанавливается значение true, тогда сохранённое изображение будет иметь форму прямоугольника области обрезки; если этот параметр имеет значение false, сохранённое изображение будет иметь круглую форму рамки обрезки |
imageLoader | Необходимый загрузчик изображений, который должен реализовать интерфейс ImageLoader |
Дополнительные примеры использования см. в исходном коде демонстрационной программы.
com.lzy.imagepicker.loader.ImageLoader
и реализовать его методы. Например, следующий код использует стороннюю библиотеку загрузки изображений Picasso:public class PicassoImageLoader implements ImageLoader {
@Override
public void displayImage(Activity activity, String path, ImageView imageView, int width, int height) {
Picasso.with(activity)//
.load(Uri.fromFile(new File(path)))//
.placeholder(R.mipmap.default_image)//
.error(R.mipmap.default_image)//
.resize(width, height)//
.centerInside()//
.memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE)//
.into(imageView);
}
@Override
public void clearMemoryCache() {
// Здесь метод очистки кеша реализуется в соответствии с вашими потребностями
}
}
protected void onInitialize() {
super.onInitialize();
setContentView(R.layout.activity_image_picker);
ImagePicker imagePicker = ImagePicker.getInstance();
imagePicker.setImageLoader(new PicassoImageLoader()); // Устанавливаем загрузчик изображений
imagePicker.setShowCamera(true); // Показываем кнопку съёмки
imagePicker.setCrop(true); // Разрешаем обрезку (действителен только для одиночного выбора)
imagePicker.setSaveRectangle(true); // Сохраняем изображение в виде прямоугольника
imagePicker.setSelectLimit(9); // Ограничиваем количество выбранных изображений
imagePicker.setStyle(CropImageView.Style.RECTANGLE); // Определяем стиль рамки обрезки
imagePicker.setFocusWidth(800); // Ширина рамки обрезки в пикселях (для круга автоматически берётся минимальное значение ширины и высоты)
imagePicker.setFocusHeight(800); // Высота рамки обрезки в пикселях (для круга автоматически берётся минимальное значение ширины и высоты)
imagePicker.setOutPutX(1000);// Ширина сохранённого изображения в пикселях
imagePicker.setOutPutY(1000);// Высота сохранённого изображения в пикселях
}
public void onClick(Component v) {
Intent intent = new Intent(this, ImageGridActivity.class);
startActivityForResult(intent, IMAGE_PICKER);
}
}
Intent intent = new Intent(this, ImageGridActivity.class);
intent.putExtra(ImageGridActivity.EXTRAS_TAKE_PICKERS,true); // 是否 является прямой камерой
startActivityForResult(intent, REQUEST_CODE_SELECT);
onAbilityResult
, чтобы получить результат:@Override
protected void onAbilityResult(int requestCode, int resultCode, Intent data) {
super.onAbilityResult(requestCode, resultCode, data);
if (resultCode == ImagePicker.RESULT_CODE_ITEMS) {
if (data != null && requestCode == IMAGE_PICKER) {
ArrayList<ImageItem> images = (ArrayList<ImageItem>) data.getSerializableExtra(ImagePicker.EXTRA_RESULT_ITEMS);
MyAdapter adapter = new MyAdapter(images);
gridView.setAdapter(adapter);
} else {
Toast.makeText(this, "Нет данных", Toast.LENGTH_SHORT).show();
}
}
}
V 0.6.1
V 0.6.0
V 0.5.5
V 0.5.4
V 0.5.3
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )