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

OSCHINA-MIRROR/HarmonyOS-tpc-ImagePicker

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

ImagePicker

Пользовательский фотоальбом, полностью имитирующий интерфейс WeChat, реализует функции съёмки, выбора изображения (одиночный/множественный выбор), обрезки, поворота и т. д.

Из-за ограниченности личного времени этот проект больше не поддерживается.

Если вы обнаружите ошибку или у вас есть хорошие предложения, вы можете создать запрос на слияние. После моего тестирования я немедленно объединю его и выпущу новую версию, чтобы гарантировать, что библиотека находится в рабочем состоянии.

Этот проект ссылается на:

Вы можете использовать исходный код, если он вам нравится. Также приглашаем всех скачать и попробовать этот проект. Если у вас возникнут какие-либо проблемы во время использования, пожалуйста, сообщите нам.

Демонстрация

imageimage imageimage

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

Для пользователей DevEco Studio перед использованием можно выбрать добавление:

    implementation "io.openharmony.tpc.thirdlib:ImagePicker:1.0.0"

2. Функции и параметры

Параметр Значение
multiMode Режим выбора изображений, одиночный/множественный
selectLimit Ограничение количества множественного выбора, по умолчанию 9
showCamera Отображать ли кнопку съёмки при выборе изображения
crop Разрешить ли обрезку (действует только для одиночного выбора)
style Стиль обрезки: прямоугольник или круг
focusWidth Ширина прямоугольника обрезки (круг автоматически принимает минимальное значение ширины и высоты)
focusHeight Высота прямоугольника обрезки (круг автоматически принимает минимальное значение ширины и высоты)
outPutX Требуемая ширина сохранённого изображения после обрезки
outPutY Требуемая высота сохранённого изображения после обрезки
isSaveRectangle Форма сохранённого после обрезки изображения: область прямоугольника или форма рамки обрезки. Например, при обрезке круга в этом параметре устанавливается значение true, тогда сохранённое изображение будет иметь форму прямоугольника области обрезки; если этот параметр имеет значение false, сохранённое изображение будет иметь круглую форму рамки обрезки
imageLoader Необходимый загрузчик изображений, который должен реализовать интерфейс ImageLoader

3. Примеры кода

Дополнительные примеры использования см. в исходном коде демонстрационной программы.

  1. Сначала необходимо унаследовать интерфейс 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() {
        // Здесь метод очистки кеша реализуется в соответствии с вашими потребностями
    }
}
  1. Затем настройте ImagePicker. Обычно это делается один раз при инициализации AbilityPackage. На этом этапе необходимо установить загрузчик изображений. Остальные настройки выполняются в зависимости от требований:
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);// Высота сохранённого изображения в пикселях
}
  1. После завершения настройки запустите галерею соответствующим образом, например, нажав кнопку:
public void onClick(Component v) {
        Intent intent = new Intent(this, ImageGridActivity.class);
        startActivityForResult(intent, IMAGE_PICKER);  
    }
}
  1. Если вы хотите напрямую вызвать камеру:
Intent intent = new Intent(this, ImageGridActivity.class);
intent.putExtra(ImageGridActivity.EXTRAS_TAKE_PICKERS,true); // 是否 является прямой камерой
      startActivityForResult(intent, REQUEST_CODE_SELECT);
  1. Переопределите метод 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

  • [Объединение] Редизайн интерфейса, полностью имитирует WeChat
  • [Объединение] fix(location): решение проблемы сбоя из-за недопустимых изображений

V 0.5.5

  • [Исправление] Проблема с переходом на страницу предварительного просмотра после выбора или отмены выбора на странице выбора изображений;
  • [Исправление] Возможный сбой из-за динамических разрешений 6.0;

V 0.5.4

  • [Исправление] Частичная проблема утечки памяти;
  • [Исправление] Добавлена функция отображения выбранных изображений: подробности см. на главной странице demo ImagePickerActivity; если эта функция не требуется, WxDemoActivity может быть тем, что вам нужно.

V 0.5.3

  • [Исправление] Ошибки, вызванные поворотом изображения;

Комментарии ( 0 )

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

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления

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

Участники

все

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

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