Проект FreeDrawView
allprojects {
repositories {
maven {
url 'https://s01.oss.sonatype.org/content/repositories/releases/'
}
}
}
dependencies {
implementation('com.gitee.chinasoft_ohos:FreeDrawView:1.0.1')
......
}
Проект можно запустить напрямую на SDK6 и DevEco Studio 2.2 Beta1. Если запуск не удаётся, удалите файлы .gradle, .idea, build, gradle, build.gradle и создайте новый проект с соответствующей версией. Скопируйте файлы из нового проекта в корневой каталог.
Использование библиотеки простое. Достаточно посмотреть примеры исходного кода. В файл макета добавьте элемент управления:
<com.rm.freedrawview.FreeDrawView
ohos:id="$+id:free_draw_view"
ohos:height="match_parent"
ohos:width="match_parent"
ohos:background_element="$color:white"
app:paintAlpha="255"
app:paintColor="@color/black"
app:paintWidth="4vp"
app:resizeBehaviour="crop"/>
Код Java:
public class AbilityDrawSlice extends AbilitySlice {
FreeDrawView mSignatureView;
@Override
public void onStart(Intent intent) {
super.onStart(intent);
super.setUIContent(ResourceTable.Layout_Ability_draw);
((AbilityDraw) getAbility()).setAbilityCall(this);
mSignatureView = (FreeDrawView) findComponentById(ResourceTable.Id_free_draw_view);
// Setup the View
mSignatureView.setPaintColor(Color.BLACK);
mSignatureView.setPaintWidthPx(12);
mSignatureView.setPaintWidthDp(6);
mSignatureView.setPaintAlpha(255);// from 0 to 255
mSignatureView.setResizeBehaviour(ResizeBehaviour.CROP);// Must be one of ResizeBehaviour
// values;
// This listener will be notified every time the path done and undone count changes
mSignatureView.setPathRedoUndoCountChangeListener(new PathRedoUndoCountChangeListener() {
@Override
public void onUndoCountChanged(int undoCount) {
// The undoCount is the number of the paths that can be undone
}
@Override
public void onRedoCountChanged(int redoCount) {
// The redoCount is the number of path removed that can be redrawn
}
});
// This listener will be notified every time a new path has been drawn
mSignatureView.setOnPathDrawnListener(new PathDrawnListener() {
@Override
public void onNewPathDrawn() {
// The user has finished drawing a path
}
@Override
public void onPathStart() {
// The user has started drawing a path
}
});
// This will take a screenshot of the current drawn content of the view
mSignatureView.getDrawScreenshot(new FreeDrawView.DrawCreatorListener() {
@Override
public void onDrawCreated(Bitmap draw) {
// The draw Bitmap is the drawn content of the View
}
@Override
public void onDrawCreationError() {
// Something went wrong creating the bitmap, should never
// happen unless the async task has been canceled
}});
``` **Пользовательский класс для рисования**
@Override public void onSaveAbilityState(PacMap outState) { mFreeDrawView.onSaveAbilityState(outState); }
@Override public void onRestoreAbilityState(PacMap inState) { setBackgroundColor(mSideView, mFreeDrawView.getPaintColor()); mFreeDrawView.onRestoreAbilityState(inState); }
**Пользовательские свойства**
| Атрибут XML | Метод Java | Описание | Значение по умолчанию |
|----------|----------|---------|---------------------|
| paintColor | setPaintColor(@ColorInt int checked) | Устанавливает цвет краски | Color.BLACK |
| paintWidth | setPaintWidthPx(@FloatRange(from = 0) float widthPx) | Устанавливает ширину краски в пикселях | 4dp |
| | setPaintWidthDp(float dp) | Устанавливает ширину краски в dp | 4dp |
| paintAlpha | setPaintAlpha(@IntRange(from = 0, to = 255) int alpha) | Устанавливает альфа-канал краски | 255 |
| resizeBehaviour | setResizeBehaviour(ResizeBehaviour newBehaviour) | Поведение представления при каждом изменении размера (например, при повороте) одно из [clear, fitXY, crop] | ResizeBehaviour.CROP |
**Общие методы**
* public void undoLast() — отменяет предыдущую операцию;
* public void redoLast() — восстанавливает предыдущую отменённую операцию;
* public void undoAll() — отменяет все операции;
* public void redoAll() — восстанавливает все отменённые операции;
* public void clearHistory() — очищает историю операций;
* public void clearDraw() — удаляет все нарисованные элементы;
* public void clearDrawAndHistory() — удаляет все нарисованные элементы и историю операций;
* public int getPathCount(boolean includeCurrentlyDrawingPath) — возвращает количество нарисованных элементов;
* setOnPathDrawnListener(PathDrawnListener listener) — устанавливает слушателя для события рисования элемента;
* setPathRedoUndoCountChangeListener(PathRedoUndoCountChangeListener listener) — устанавливает слушателя для изменения количества операций отмены и повтора;
* removePathDrawnListener() — удаляет слушателя события рисования элемента;
* removePathRedoUndoCountChangeListener() — удаляет слушателя изменения количества операций отмены и повтора.
#### Тестирование
CodeCheck — тестирование кода без исключений.
CloudTest — тестирование кода без исключений.
Вирусная безопасность — проверка пройдена.
Текущая версия demo — основные функции не отличаются от исходного компонента.
#### Версии
1.0.1, 1.0.0, 0.0.1-SNAPSHOT.
#### Авторские права и лицензии
Copyright 2017 Riccardo Moro.
Licensed under the Apache License, Version 2.0 (the «License»); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an «AS IS» BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )