LQRImagePicker
Полностью имитирует выбор фотографий в WeChat, а также предоставляет различные интерфейсы для загрузки изображений. После выбора фотографии можно поворачивать изображение, обрезать его до прямоугольника или круга, настраивать другие параметры.
1. Краткое описание:
Этот проект основан на ImagePicker и был улучшен и модифицирован с точки зрения интерфейса. Основные работы включают:
2. Использование:
Следует отметить, что исходный проект является отличным проектом, и есть много аспектов, которые стоит изучить. Решение для загрузки фотографий, предложенное в проекте, оказалось полезным, позволяя разработчикам самостоятельно реализовать интерфейс в своих проектах, избегая необходимости использовать определённые инструменты для загрузки фотографий в библиотеке. Это повышает расширяемость проекта. Конечно, есть и другие аспекты, достойные изучения. Подробные инструкции по настройке можно найти в ImagePicker. Если у вас есть дополнительные требования, обратитесь к исходному проекту для изучения. Здесь я только записываю конфигурацию использования в своём проекте:
Добавьте зависимость данного проекта в свой проект: compile 'com.lqr.imagepicker:library:1.0.0'
Реализуйте интерфейс ImageLoader (обратите внимание, что это не com.nostra13.universalimageloader.core.ImageLoader) и реализуйте стратегию загрузки изображений:
/**
* @создатель CSDN_LQR
* @описание Класс для загрузки изображений, необходимый для компонента выбора фотографий, имитирующего WeChat
*/
public class UILImageLoader implements com.lqr.imagepicker.loader.ImageLoader {
@Override
public void displayImage(Activity activity, String path, ImageView imageView, int width, int height) {
ImageSize size = new ImageSize(width, height);
com.nostra13.universalimageloader.core.ImageLoader.getInstance().displayImage(Uri.parse("file://" + path).toString(), imageView, size);
}
@Override
public void clearMemoryCache() {
}
}
/**
* @создатель CSDN_LQR
* @описание Пользовательский класс приложения
*/
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
initUniversalImageLoader();
initImagePicker();
}
private void initUniversalImageLoader() {
// Инициализация ImageLoader
ImageLoader.getInstance().init(
ImageLoaderConfiguration.createDefault(getApplicationContext()));
}
/**
* Инициализирует компонент выбора фотографий ImagePicker
*/
private void initImagePicker() {
ImagePicker imagePicker = ImagePicker.getInstance();
imagePicker.setImageLoader(new UILImageLoader()); // Устанавливаем загрузчик изображений
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 static final int IMAGE_PICKER = 100;
Intent intent = new Intent(this, ImageGridActivity.class);
startActivityForResult(intent, IMAGE_PICKER);
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == ImagePicker.RESULT_CODE_ITEMS) {// Возвращено несколько фотографий
if (data != null) {
// Отправлять ли исходное изображение
boolean isOrig = data.getBooleanExtra(ImagePreviewActivity.ISORIGIN, false);
ArrayList<ImageItem> images = (ArrayList<ImageItem>) data.getSerializableExtra(ImagePicker.EXTRA_RESULT_ITEMS);
Log.e("CSDN_LQR", isOrig ? "Отправлять исходное изображение" : "Не отправлять исходное изображение");// Если не отправлять исходное изображение, необходимо реализовать алгоритм сжатия изображений в собственном проекте
for (ImageItem imageItem : images) {
Log.e("CSDN_LQR", imageItem.path);
}
}
}
}
3. Эффект:
Изображения 1, 2, 3 и 4 не представлены в запросе.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )