Добавьте зависимость в файл build.gradle модуля:
// Добавление Maven репозитория
repositories {
maven {
url 'https://s01.oss.sonatype.org/content/repositories/releases/'
}
}
// Добавление зависимости
dependencies {
implementation 'com.gitee.chinasoft_ohos:doodle:1.0.1'
}
Проект можно запустить в SDK 6 и DevEco Studio 2.2 Beta1. В случае проблем удалите файлы .gradle
, .idea
, build
, gradle
, build.gradle
и создайте новый проект, скопировав соответствующие файлы в корневую директорию.
// Возможности
Кисть и форма
Выбор кистей может включать ручное рисование, мозаику, имитацию, ластик, текст, текстуру. Функция имитации аналогична функции в Photoshop — она позволяет копировать часть изображения. Формы могут включать ручное рисование, стрелки, прямые линии, круги, прямоугольники и так далее. Цвет фона кисти может быть выбран как цвет или изображение.
Кисть может выбрать ручное рисование, мозаику, имитацию, ластик, текст, текстуру, где функция имитации аналогична функции в Photoshop — она позволяет копировать часть изображения. Формы могут выбрать ручное рисование, стрелки, прямые линии, круги, прямоугольники и так далее. Цвет фона кисти может быть выбран как цвет или изображение.
Отмена / повтор
Каждое действие в процессе рисования может быть отменено или повторено.
Каждый шаг рисования может быть отменён.
Масштабирование, перемещение и поворот
Во время рисования вы можете свободно масштабировать, перемещать и поворачивать изображение жестами. Также можно перемещать, поворачивать и масштабировать элементы рисования.
Во время рисования можно свободно масштабировать, перемещать и поворачивать изображение жестами. Можно также перемещать, поворачивать и масштабировать элементы рисования.
Увеличение
Чтобы более детально работать с рисунком, можно использовать увеличение во время рисования.
Для более детального рисования можно использовать увеличение во время рисования.
// Использование
Существует два способа использования библиотеки Doodle:
Здесь есть два способа использования библиотеки Doodle
// А. Непосредственный запуск DoodleAbility (интерфейс похож на демонстрационные изображения выше). Если вам требуется больше настроек взаимодействия, пожалуйста, используйте другой метод (способ B).
Используйте готовый интерфейс для рисования, который можно запустить непосредственно. Интерфейс запуска похож на демонстрационные изображения выше. Если вам требуется больше настроек взаимодействия, пожалуйста, используйте другой метод (способ B).
Intent intent = new Intent();
intent.setUriAndType(uri, null); // передача URI изображения для рисования
Operation operation = new Intent.OperationBuilder()
.withDeviceId("")
.withBundleName(getBundleName())
.withAbilityName("com.example.doodlelib.DoodleAbility")
.build();
intent.setOperation(operation);
startAbilityForResult(intent, REQ_CODE_DOODLE);
DoodleParams params = new DoodleParams(); // параметры рисования
params.mImagePath // путь к изображению
Подробнее см. DoodleParams.
Просмотреть DoodleParams для получения дополнительной информации о параметрах рисования.
// Б. Рекомендовано использование DoodleView для создания своего интерфейса.
Рекомендуется использовать DoodleView для создания своего интерфейса, что обеспечивает гибкость и высокую степень настройки.
/*
Оптимизация рисования, рекомендуется включить, чтобы улучшить производительность и скорость рисования.
Примечание: после включения выбранный элемент будет рисоваться поверх всех остальных до окончания редактирования.
*/
boolean optimizeDrawing = true;
DoodleView mDoodleView = new DoodleView(this, pixelMap, optimizeDrawing, new IDoodleListener() {
/*
Вызов при сохранении рисунка.
*/
@Override
public void onSaved(IDoodle doodle, PixelMap pixelMap, Runnable callback) {
// выполните действия
}
/*
Вызов после того, как представление было измерено.
*/
@Override
public void onReady(IDoodle doodle, int width, int height) {
// выполните действия
}
});
mTouchGestureListener = new DoodleOnTouchGestureListener(mDoodleView, new DoodleOnTouchGestureListener.ISelectionListener() {
/*
Вызов при выборе/отмене элемента.
*/
@Override
public void onSelectedItem(IDoodle doodle, IDoodleSelectableItem selectableItem, boolean selected) {
// выполните действия
}
/*
Вызов при создании элемента.
*/
@Override
public void onCreateSelectableItem(IDoodle doodle, float x, float y) {
// выполните действия
}
});
// Создание детектора жестов для обработки жестов типа прокрутки, масштабирования и одиночного клика.
IDoodleTouchDetector detector = new DoodleTouchDetector(getApplicationContext(), mTouchGestureListener);
mDoodleView.setDefaultTouchDetector(detector);
// Настройка параметров.
mDoodleView.setPen(DoodlePen.TEXT);
mDoodleView.setShape(DoodleShape.HAND_WRITE);
mDoodleView.setColor(new DoodleColor(Color.RED));
Когда оптимизация рисования отключена, достаточно вызвать addItem(IDoodleItem)
при создании элемента. Когда оптимизация включена, созданный или выбранный элемент требуют вызова markItemToOptimizeDrawing(IDoodleItem)
, а затем notifyItemFinishedDrawing(IDoodleItem)
при завершении рисования. Общий пример использования:Когда оптимизация рисования отключена, достаточно вызвать addItem(IDoodleItem)
при создании элемента. Когда оптимизация включена, созданный или выбранный элемент требуют вызова markItemToOptimizeDrawing(IDoodleItem)
, а затем notifyItemFinishedDrawing(IDoodleItem)
при завершении рисования. Общий пример использования:
// При создании или выборе элемента
if (mDoodle.isOptimizeDrawing()) {
mDoodle.markItemToOptimizeDrawing(item);
} else {
mDoodle.addItem(item);
}
...
// При завершении создания или редактирования
if (mDoodle.isOptimizeDrawing()) {
mDoodle.notifyItemFinishedDrawing(item);
}
Затем добавьте DoodleView в вашу разметку. Теперь вы можете начать рисовать.
Добавьте DoodleView в вашу разметку, теперь вы можете начать рисовать.
// Пример
Вот несколько простых примеров, демонстрирующих использование фреймворка Doodle.
Для более подробной информации см. DoodleActivity.
Теперь вы должны знать, что DoodleAbility использует DoodleView для реализации рисования. Вы также можете настроить свой интерфейс, как это сделано в DoodleActivity. Подробнее см. DoodleActivity.
Класс DoodleView реализует интерфейс IDoodle.Класс DoodleView реализует интерфейс IDoodle.
public interface IDoodle {
...
public float getUnitSize();
public void setDoodleRotation(int degree);
public void setDoodleScale(float scale, float pivotX, float pivotY);
public void setPen(IDoodlePen pen);
public void setShape(IDoodleShape shape);
public void setDoodleTranslation(float transX, float transY);
public void setSize(float paintSize);
public void setColor(IDoodleColor color);
public void addItem(IDoodleItem doodleItem);
public void removeItem(IDoodleItem doodleItem);
public void save();
public void topItem(IDoodleItem item);
public void bottomItem(IDoodleItem item);
public boolean undo(int step);
...
}
// Схема архитектуры Фреймворк диаграмма
// Координаты Doodle
// Расширение
Вы можете создать пользовательский элемент, такой как DoodlePath, DoodleText, DoodleBitmap, который расширяется от DoodleItemBase или реализует IDoodleItem.
Реализуйте интерфейс IDoodleItem или базовый класс DoodleItemBase для создания пользовательских элементов Doodle, таких как DoodlePath, DoodleText, DoodleBitmap
Вы можете создать пользовательскую кисть, такую как DoodlePen, которая реализует IDoodlePen.
Реализуйте интерфейс IDoodlePen для создания пользовательской кисти, такой как DoodlePen
Вы можете создать пользовательскую форму, такую как DoodleShape, которая реализует IDoodleShape.
Реализуйте интерфейс IDoodleShape для создания пользовательской формы, такой как DoodleShape
Вы можете создать пользовательский цвет, такой как DoodleColor, который реализует IDoodleColor.
Реализуйте интерфейс IDoodleColor для создания пользовательского цвета, такого как DoodleColor
Вы можете создать пользовательский детектор касаний, такой как DoodleTouchDetector(GestureListener), который реализует IDoodleTouchDetector.
Реализуйте интерфейс IDoodleTouchDetector для создания пользовательского детектора касаний, такого как DoodleTouchDetector
Все свойства могут быть изменены в процессе выполнения с помощью соответствующих методов getter и setter.
CodeCheck — тестирование кода прошло успешно
CloudTest — тестирование кода прошло успешно
Проверка безопасности отсутствия вирусов пройдена
Функциональность текущего версии демо совпадает с функциональностью оригинальной компоненты
Лицензия MIT
Авторское право © 2018 Huang Ziwei
Разрешается бесплатно использовать любому лицу, получившему копию этого программного обеспечения и связанных с ним документов ("Программное обеспечение"), чтобы продавать Программное обеспечение без ограничений, включая, но не ограничиваясь правами использования, копирования, модификации, слияния, публикации, распространения, предоставление подлицензий и/или продажи копий Программного обеспечения, а также позволять лицам, которым предоставляется это Программное обеспечение, делать то же самое, при условии соблюдения следующих условий:
Вышеуказанное авторское право и данное разрешение должны быть включены во все копии или значительные части Программного обеспечения.
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАННЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ГАРАНТИЯМИ ТОРГОВЛЕНИЯ, ПРИГОДНОСТИ ДЛЯ КОНКРЕТНЫХ ЦЕЛЕЙ И НЕНАРУШЕНИЯ ПРАВ. В НИКАКОМ СЛУЧАЕ АВТОРЫ И ДОЛЖНИКИ АВТОРСКИХ ПРАВ НЕ ДОЛЖНЫ БЫТЬ УЧТЕНО В ЛЮБОМ ДЕЛЕ ОБЩЕСТВЕННОЙ ДЕЯТЕЛЬНОСТИ, ТОРГОВЛЕ ИЛИ ИНОЙ, ВОЗНИКШИЙ ИЗ, В, ИЛИ В СВЯЗИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ИЛИ ДРУГИМИ ДЕЙСТВИЯМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )