PatternLockView
Рисунок 1. Пример использования PatternLockView.
Способ 1
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
……
}
В SDK4 и DevEco Studio 2.1 beta2 проект можно запустить напрямую. Если не удаётся запустить, удалите файлы .gradle, .idea, build, gradle, build.gradle и создайте новый проект, скопировав соответствующие файлы из нового проекта в корневой каталог.
Способ 2 Добавьте зависимости в файл build.gradle:
dependencies {
......
implementation 'com.gitee.archermind-ti:patternlockview:1.0.0-beta'
implementation 'com.gitee.archermind-ti:patternlockview-reactive:1.0.0-beta'
}
Используйте PatternLockView в макете:
<com.andrognito.patternlockview.PatternLockView ohos:id="$+id:patter_lock_view" ohos:height="280vp" ohos:width="280vp"/>
Этого достаточно, чтобы View появился в макете. Однако вы, вероятно, захотите добавить Listener для отслеживания изменений в шаблоне.
2. Получите объект в коде и добавьте Listener:
```java
mPatternLockView = (PatternLockView) findViewById(R.id.pattern_lock_view);
mPatternLockView.addPatternLockListener(mPatternLockViewListener);
Реализуйте Listener следующим образом:
private PatternLockViewListener mPatternLockViewListener = new PatternLockViewListener() {
@Override
public void onStarted() {
HiLog.debug(LABEL, "Pattern drawing started");
}
@Override
public void onProgress(List<PatternLockView.Dot> progressPattern) {
HiLog.debug(LABEL, "Pattern progress: " +
PatternLockUtils.patternToString(mPatternLockView, progressPattern));
}
@Override
public void onComplete(List<PatternLockView.Dot> pattern) {
HiLog.debug(LABEL, "Pattern complete: " +
PatternLockUtils.patternToString(mPatternLockView, pattern));
}
@Override
public void onCleared() {
HiLog.debug(LABEL, "Pattern has been cleared");
}
};
Готово! Ваш PatternLockView готов к использованию. Возможно, вы также захотите удалить Listener, когда он больше не нужен:
removePatternLockListener(mPatternLockViewListener);
(Необязательно: ReactiveX Interface)
Для поклонников RxJava библиотека поддерживает привязку к представлению RxJava 2. Вы можете подписаться на view, чтобы получать поток изменений шаблона.
RxPatternLockView.patternChanges(mPatternLockView).subscribe(new Consumer<PatternLockCompoundEvent>() {
@Override
public void accept(PatternLockCompoundEvent event) throws Exception {
if (event.getEventType() == PatternLockCompoundEvent.EventType.PATTERN_STARTED) {
HiLog.debug(LABEL,"Pattern drawing started");
} else if (event.getEventType() == PatternLockCompoundEvent.EventType.PATTERN_PROGRESS) {
HiLog.debug(LABEL,"Pattern progress: " +
PatternLockUtils.patternToString(mPatternLockView, event.getPattern()));
} else if (event.getEventType() == PatternLockCompoundEvent.EventType.PATTERN_COMPLETE) {
HiLog.debug(LABEL,"Pattern complete: " +
PatternLockUtils.patternToString(mPatternLockView, event.getPattern()));
} else if (event.getEventType() == PatternLockCompoundEvent.EventType.PATTERN_CLEARED) {
HiLog.debug(LABEL,"Pattern has been cleared");
}
}
});
Если вас не интересуют составные события, вы должны подписаться на patternComplete() и patternProgress(), чтобы получать конкретные обновления.
Вы можете использовать несколько параметров настройки, чтобы полностью изменить внешний вид и функциональность этого представления в соответствии с вашими потребностями.
Вы можете добавить различные атрибуты в XML-макет для PatternLockView:
app:dotCount="3" // Change the no.of dots in a row (or column)
app:dotNormalSize="12vp" // Change the size of the dots in normal state
app:dotSelectedSize="24vp" // Change the size of the dots in selected state
app:pathWidth="4vp" // Change the width of the path
app:aspectRatioEnabled="true" // Set if the view should respect custom aspect ratio
app:aspectRatio="square"
``` ```
// Устанавливаем значения между "square", "width_bias", "height_bias"
app:normalStateColor="$color:white" // Устанавливаем цвет вида шаблона в нормальном состоянии
app:correctStateColor="$color:primary" // Устанавливаем цвет вида шаблона в правильном состоянии
app:wrongStateColor="$color:pomegranate" // Устанавливаем цвет вида шаблона при ошибке
app:dotAnimationDuration="200" // Изменяем длительность анимации точек
app:pathEndAnimationDuration="100" // Изменяем длительность конечной анимации пути
Вы также можете изменить свойства View программным способом, чтобы получить больше контроля над ним.
mPatternLockView.setViewMode(PatternLockView.PatternViewMode.CORRECT); // Устанавливаем текущий режим просмотра
mPatternLockView.setInStealthMode(true); // Переводим шаблон в скрытый режим (рисование шаблона скрыто)
mPatternLockView.setTactileFeedbackEnabled(true); // Включает вибрационную обратную связь при рисовании шаблона
mPatternLockView.setInputEnabled(false); // Полностью отключает ввод от вида блокировки шаблона
mPatternLockView.setDotCount(3);
mPatternLockView.setDotNormalSize((int) ResourceUtils.getDimensionInPx(this,
ResourceTable.Float_pattern_lock_dot_size));
mPatternLockView.setDotSelectedSize((int) ResourceUtils.getDimensionInPx(this,
ResourceTable.Float_pattern_lock_dot_selected_size));
mPatternLockView.setPathWidth((int) ResourceUtils.getDimensionInPx(this,
ResourceTable.Float_pattern_lock_path_width));
mPatternLockView.setAspectRatio(PatternLockView.AspectRatio.ASPECT_RATIO_HEIGHT_BIAS);
mPatternLockView.setNormalStateColor(ResourceUtils.getColor(this, ResourceTable.Color_white));
mPatternLockView.setCorrectStateColor(ResourceUtils.getColor(this, ResourceTable.Color_primary));
mPatternLockView.setWrongStateColor(ResourceUtils.getColor(this, ResourceTable.Color_pomegranate));
mPatternLockView.setDotAnimationDuration(150);
mPatternLockView.setPathEndAnimationDuration(100);
Copyright 2017 aritraroy
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 )