GitHub адрес: https://github.com/chordw/GestureView
Gitee адрес: https://gitee.com/chordwang/gesture-view
Компонент для работы с жестами в HarmonyOS.
Основные интерфейсы
// Режим повторения узлов жеста
public interface GestureRepeatMode {
int DEFAULT = 0; // Каждый узел, кроме соседних двух, может повторяться. Значение по умолчанию.
int NO_REPEAT = 1; // Каждый узел не может повторяться.
}
``` // Стиль узлов жеста
public interface GestureStyle {
int LINE = 0; // Линия
int IMAGE = 1; // Изображение
}
// Текущее состояние
public interface GestureState {
int NORMAL = 0; // Обычное состояние
int ERROR = 1; // Ошибка
}
```
// Режим отображения жеста при завершении
public interface GestureDisappearMode {
int APPEAR_ON_FINISH = 11; // Отображать отрисованный путь при завершении жеста
int DISAPPEAR_ON_FINISH = 12; // Не отображать отрисованный путь при завершении жеста
int APPEAR_ONLY_ERROR_ON_FINISH = 13; // Отображать отрисованный путь при завершении жеста только в случае ошибки
}
// Порядок отрисовки жеста
public interface GestureDrawOrder {
int SECTION_TOP = 0; // Секция сверху
int LINE_TOP = 1; // Линия сверху
}
// Слушатель результатов
public interface DetectedListener {
int DETECT_SUCCESS = 0; // Успешная идентификация, нормальное количество точек жеста
int DETECT_LIMITED_MIN = 10; // Неуспешная идентификация, недостаточное количество точек жеста
int DETECT_LIMITED_MAX = 11; // Неуспешная идентификация, превышение максимального количества точек жеста
int DETECT_CANCEL = 20; // Неуспешная идентификация, неожиданное отменение
}
/**
* @param code Результат кода
* @param detectedGesture code равен DETECT_SUCCESS, когда не null, в остальных случаях null
*/
void onDetectedGesture(int code, List<Section> detectedGesture);
```
**Основные методы**
- Установка идентификатора ресурса изображения для незадействованного состояния.
gestureView.setImageNormal(ResourceTable.Media_icon_zao_gesture_normal);
- Установка изображения для незадействованного состояния.
gestureView.setImageNormal(PixelMapHolder imageNormal);
- Установка идентификатора ресурса изображения для задействованного состояния.
gestureView.setImageChecked(int resId);
- Установка изображения для задействованного состояния.
gestureView.setImageChecked(PixelMapHolder imageChecked);
- Установка идентификатора ресурса изображения для состояния ошибки.
gestureView.setImageError(int resId);
- Установка изображения для состояния ошибки.
gestureView.setImageError(PixelMapHolder imageError);
- Установка цвета линии для незадействованного состояния. По умолчанию Color.GREEN.
gestureView.setLineNormalColor(Color color);
- Установка цвета линии для задействованного состояния. По умолчанию Color.GREEN.
gestureView.setLineCheckedColor(Color color);
- Установка цвета линии для состояния ошибки. По умолчанию Color.RED.
gestureView.setLineErrorColor(Color lineErrorColor);
- Установка цвета линии по умолчанию. По умолчанию Color.GREEN.
gestureView.setLineColor(Color color);
- Установка ширины линии для раздела. По умолчанию 4px.
gestureView.setLineWidthSection(float lineWidthSection);
- Установка ширины линии. По умолчанию 4px.
gestureView.setLineWidth(float lineWidth);
- Установка количества строк в сетке.
gestureView.setRow(int row);
gestureView.setColumn(int column);
- Установка минимального количества точек для соединения.
gestureView.setMinGestureCount(int minGestureCount);
- Установка максимального количества точек для соединения.
gestureView.setMaxGestureCount(int maxCount);
- Очистка данных задействованных точек.
gestureView.clearGesture();
- Преобразование сетки точек в строку. Горизонтальное расположение, начальное значение 0, последующие значения увеличиваются на 1.
String string = GestureView.section2String(detectedGesture);
- Определение простоты жеста: количество точек перегиба меньше заданного значения. Если фактическое количество точек перегиба меньше ожидаемого, жест считается простым. В противном случае, жест считается сложным.
```java
boolean simpleGesture = GestureView.isSimpleGesture(detectedGesture, 1);
```- Установка слушателя для отслеживания жестов
```java
gestureView.setOnDetectedListener((code, detectedGesture) -> {
// Обратный вызов при завершении жеста.
if (code == GestureView.DetectedListener.DETECT_SUCCESS) { // Жест успешно нарисован.
String string = GestureView.section2String(detectedGesture);
boolean simpleGesture = GestureView.isSimpleGesture(detectedGesture, 1);
string = (simpleGesture ? "Пароль слишком простой:" : "") + string;
new ToastDialog(getAbility())
.setText(string)
.setAlignment(LayoutAlignment.CENTER)
.show();
} else if (code == GestureView.DetectedListener.DETECT_LIMITED_MIN) { // Количество точек жеста меньше минимального значения.
gestureView.setGestureState(GestureView.GestureState.ERROR);
new ToastDialog(getAbility())
.setText("Пожалуйста, соедините минимум " + gestureView.getMinGestureCount() + " точек")
.setAlignment(LayoutAlignment.CENTER)
.show();
} else if (code == GestureView.DetectedListener.DETECT_LIMITED_MAX) { // Количество точек жеста превышает максимальное значение.
gestureView.setGestureState(GestureView.GestureState.ERROR);
new ToastDialog(getAbility())
.setText("Пожалуйста, соедините максимум " + gestureView.getMaxGestureCount() + " точек")
.setAlignment(LayoutAlignment.CENTER)
.show();
}
});
```#### Gradle
**Проект загружен в Maven Central.** 
```groovy
implementation 'io.gitee.chordwang:gestureview:1.0.0' // Последняя версия указана выше
Добавьте следующее в файл build.gradle в корневой директории проекта:
allprojects {
repositories {
...
mavenCentral()
}
}
Copyright [2021] [chordwang]
Лицензировано по лицензии Apache License, Version 2.0 («Лицензия»);
вы можете использовать этот файл только в соответствии с условиями Лицензии.
Вы можете получить копию Лицензии по адресу http://www.apache.org/licenses/LICENSE-2.0
За исключением случаев, когда это требует применимое законодательство или письменное соглашение, программное обеспечение, распространяемое в рамках Лицензии, распространяется на условиях "КАК ЕСТЬ".
БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ ИЛИ УСЛОВИЙ КАКИХ-ЛИБО ТИПОВ, как явных, так и подразумеваемых.
См. Лицензию для конкретного языка, регулирующего права и ограничения в рамках Лицензии.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )