1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/GitLqr-LQRImagePicker

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

LQRImagePicker

Полностью имитирует выбор фотографий в WeChat, а также предоставляет различные интерфейсы для загрузки изображений. После выбора фотографии можно поворачивать изображение, обрезать его до прямоугольника или круга, настраивать другие параметры.

1. Краткое описание:

Этот проект основан на ImagePicker и был улучшен и модифицирован с точки зрения интерфейса. Основные работы включают:

  • В исходном проекте стиль меню выбора папок не очень красив, пропорции отличаются от WeChat, поэтому он был улучшен;
  • Исходный проект имеет критическую ошибку: после открытия меню и случайного нажатия на фотографию происходит сбой (проверено, что работает на 4.4, но на 6.0 происходит сбой), эта проблема была решена в данном проекте;
  • С точки зрения кодирования, в исходном проекте при получении пути к локальному файлу используется Uri.fromFile(), этот способ не рекомендуется, так как консоль будет постоянно выдавать ошибки (such file or directory no found), поэтому вместо этого используется Uri.parse().

2. Использование:

Следует отметить, что исходный проект является отличным проектом, и есть много аспектов, которые стоит изучить. Решение для загрузки фотографий, предложенное в проекте, оказалось полезным, позволяя разработчикам самостоятельно реализовать интерфейс в своих проектах, избегая необходимости использовать определённые инструменты для загрузки фотографий в библиотеке. Это повышает расширяемость проекта. Конечно, есть и другие аспекты, достойные изучения. Подробные инструкции по настройке можно найти в ImagePicker. Если у вас есть дополнительные требования, обратитесь к исходному проекту для изучения. Здесь я только записываю конфигурацию использования в своём проекте:

  1. Добавьте зависимость данного проекта в свой проект: compile 'com.lqr.imagepicker:library:1.0.0'

  2. Реализуйте интерфейс 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() {
    }
}
  1. Инициализируйте в пользовательском приложении (не забудьте использовать это пользовательское приложение в AndroidManifest.xml):
/**
 * @создатель 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);// Высота сохраняемого файла. Единицы измерения — пиксели
    }
}
  1. Откройте экран выбора фотографий:
public static final int IMAGE_PICKER = 100;

Intent intent = new Intent(this, ImageGridActivity.class);
startActivityForResult(intent, IMAGE_PICKER);
  1. Получите выбранную информацию о фотографиях:
@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 )

Вы можете оставить комментарий после Вход в систему

Введение

Полностью имитирует выбор картинки как в WeChat и предоставляет различные интерфейсы для загрузки изображений. После выбора изображения можно его повернуть, обрезать до прямоугольника или круга, а также настроить другие параметры. Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/GitLqr-LQRImagePicker.git
git@api.gitlife.ru:oschina-mirror/GitLqr-LQRImagePicker.git
oschina-mirror
GitLqr-LQRImagePicker
GitLqr-LQRImagePicker
master