Запустите DevEco Studio и импортируйте скачанный jar-пакет в директорию "entry->libs".
В файле build.gradle уровня модуля добавьте зависимость, добавив ссылку на jar-пакет в директории libs внутри тэга dependencies.
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
...
}
Нажмите правой кнопкой мыши на импортированный jar-пакет, выберите "Add as Library", чтобы использовать его. Выберите нужный модуль и нажмите "OK".
Если проект не запускается, удалите файлы .gradle, .idea, build, gradle, build.gradle, создайте новый проект в соответствии с вашей версией и скопируйте соответствующие файлы нового проекта в корневую директорию.
Пример использования кода для перехода к предоставляемому AbilitySlice — CropImageAbility:
CropImage.activity()
.setContext(this)
.setSource(ResourceTable.Media_cat_square)
.setBundleName("com.huawei.mytestproject")
.setAbilityName("com.huawei.mytestproject.MainAbility")
.setRequest_code(1234)
.start(super.getAbility(), this);
Примечание:
Метод activity()
используется для инициализации класса.
Метод setContext()
требует передачи контекста.
Метод setSource()
требует передачи ID изображения, которое будет обрезано (в настоящее время можно использовать только те изображения, которые были зарегистрированы в ResourceTable, и они должны быть квадратными, расположены следующим образом):
Методы
setBundleName()
и setAbilityName()
используются для указания имени пакета и класса, на который требуется вернуться после перехода на страницу с обрезкой изображения. Например, если вы запустите этот код в MainAbilitySlice
, то перейдете на AbilitySlice
, предоставляемый компонентом. В этом компоненте есть кнопки для выполнения операций перехода обратно, поэтому вам потребуется установить имя желаемого ability.Метод setRequestCode()
используется для указания параметра запроса. Вы можете использовать значение, указанное в примере.
Метод start()
требует передачи ability и context.
Выполняйте действия с изображением, такие как обрезка и поворот, используя предоставляемый компонентом интерфейс.
Интерфейс компонента переходит на страницу, указанную методами setBundleName()
и setAbilityName()
, перед которыми были переданы имя пакета и класса.
При возврате на главную страницу в intent по умолчанию передаются два параметра: cropFlag и cropStatus. CropFlag — это булевская переменная, которая указывает, был ли успешен процесс обрезки. CropStatus — это целочисленная переменная, которая указывает состояние обрезки. Значение 0 является значением по умолчанию, что означает, что ещё не было выполнено ни одного перехода; значение 1 указывает отмену обрезки; значение 2 указывает успешное завершение обрезки, а также наличие данных в intent. Вы можете использовать следующий пример для использования этих параметров или создать свои собственные функции:
if (intent.getIntParam("cropStatus", 0) == 0) {
text.setText("Добро пожаловать");
} else if (intent.getIntParam("cropStatus", 0) == 1) {
text.setText("Обрезка отменена");
} else if (intent.getIntParam("cropStatus", 0) == 2) {
text.setText("Обрезка завершена успешно");
}
После обрезки компонент предлагает два метода.Метод 1:
CropImage.handleImage(int result_code, Component image)
Параметр int result_code (может быть получен из intent, как показано ниже):
int result_code = result.getIntParam("result_code", 0);
Параметр Component image требует передачи нового пустого объекта Component. Этот метод обрабатывает компонент, вставляет в него отрезанное изображение и выполняет его поворот и другие действия.
Метод 2:
PixelMap croppedPixelMap = CropImage.getCroppedPixelMap();
Этот метод может вернуть отрезанное PixelMap, которое пользователь сможет обработать по своему усмотрению.
public class MainAbilitySlice extends AbilitySlice {
// Определение изображения
Component image;
// Определение текста
Text text;
@Override
public void onStart(Intent intent) {
// Переопределение метода onStart и загрузка файла с интерфейсом
super.onStart(intent);
super.setUIContent(ResourceTable.Layout_MainAbility_layout);
// Получение объекта изображения через компонент
image = findComponentById(ResourceTable.Id_result_image);
/*
* Если полученный cropFlag равен true,
* обработка отрезанного изображения,
* в противном случае пропустить
*/
if (intent.getBooleanParam("cropFlag", false)) {
handleCrop(intent);
}
}
``` /* Custom changes -- obtaining the text object through the component
* Displaying various textual messages depending on the value of cropStatus in Intent
* 0 - no data
* 1 - cropping canceled
* 2 - successful cropping, data available
*/
text = (Text) findComponentById(ResourceTable.Id_text);
if (intent.getIntParam("cropStatus", 0) == 0) {
text.setText("Добро пожаловать");
} else if (intent.getIntParam("cropStatus", 0) == 1) {
text.setText("Обрезка отменена");
} else if (intent.getIntParam("cropStatus", 0) == 2) {
text.setText("Обрезка завершена успешно");
}```markdown
..setRequest_code(1234)
.start(super.getAbility(), this);
}
// Обработка результатов вырезки
private void handleCrop(Intent result) {
int resultImg = result.getIntParam("resultImg", 0);
int resultCode = result.getIntParam("result_code", 0);
if (resultImg != 0) {
CropImage.handleImage(resultCode, image);
// PixelMap croppedPixelMap = CropImage.getCroppedPixelMap();
}
}
@Override
public void onActive() {
super.onActive();
}
@Override
public void onForeground(Intent intent) {
super.onForeground(intent);
}
}
```
#### Итерация версий
- v0.2.0-alpha
Исправлено недоступность проекта из-за проблем с конфигурационным файлом модуля
- v0.1.0-alpha
#### Информация о правах и лицензиях
- ImageCropper_ohos распространяется под лицензией [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0).
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )