dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
...
}
<com.example.croplayout.EditPhotoView
xmlns:crop="http://schemas.huawei.com/res/ohos-auto"
ohos:id="$+id:editable_image"
ohos:height="300vp"
ohos:width="300vp"
ohos:background_element="#fff"
ohos:margin="20vp"
crop:crop_corner_color="#45B4CA"
crop:crop_dot_color="#333333"
crop:crop_line_color="#d7af55"
crop:crop_shadow_color="#77ffffff"/>
Дополнительно можно настроить следующие параметры:
crop_line_width: ширина линий границы области обрезки (vp)
crop_line_color: цвет линий границы области обрезки
crop_corner_width: ширина углов области обрезки (vp)
crop_corner_length: длина углов области обрезки (vp)
crop_corner_color: цвет углов области обрезки
crop_shadow_color: цвет тени за областью обрезки
final EditPhotoView imageView = (EditPhotoView) findComponentById(ResourceTable.Id_editable_image);
final Text boxText = (Text) findComponentById(ResourceTable.Id_box_text);
final EditableImage image = new EditableImage(this, ResourceTable.Media_photo2);
List<ScalableBox> boxes = new ArrayList<>();
boxes.add(new ScalableBox(25, 180, 640, 880));
boxes.add(new ScalableBox(2, 18, 680, 880));
boxes.add(new ScalableBox(250, 80, 400, 880));
image.setBoxes(boxes);
imageView.initView(this, image);
Среди списка областей обрезки активной является только одна, остальные являются альтернативами.
Активную область обрезки можно установить с помощью метода EditableImage.getActiveBoxIdx(int id)
.
По умолчанию метод EditableImage.setBoxes(List<ScalableBox>)
устанавливает первую область (индекс 0) как активную.
ScalableBox activeBox = image.getActiveBox();
boxText.setText("box: [" + activeBox.getX1() + "," + activeBox.getY1() +
"],[" + activeBox.getX2() + "," + activeBox.getY2() + "]");
imageView.setOnBoxChangedListener(new OnBoxChangedListener() {
@Override
public void onChanged(int x1, int y1, int x2, int y2) {
boxText.setText("box: [" + x1 + "," + y1 + "],[" + x2 + "," + y2 + "]");
}
});
Button rotateButton = (Button) findComponentById(ResourceTable.Id_rotate_button);
rotateButton.setClickedListener(new Component.ClickedListener() {
@Override
public void onClick(Component component) {
imageView.rotateImageView();
}
});
Button cropButton = (Button) findComponentById(ResourceTable.Id_crop_button);
cropButton.setClickedListener(new Component.ClickedListener() {
@Override
public void onClick(Component component) {
PixelMap croppedImage = image.cropOriginalImage();
Intent newIntent = new Intent();
newIntent.setParam("image", croppedImage);
present(new SecondAbilitySlice(), newIntent);
}
});
Этот метод использует метод present для отображения обрезанного изображения в новом AbilitySlice.
В новом AbilitySlice PixelMap можно получить с помощью intent.getSequenceableParam("image")
.
Также можно передать значение PixelMap, полученное из метода cropOriginalImage(), текущему интерфейсу.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )