1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/HarmonyOS-tpc-PatternLockView

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 10 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 06.03.2025 00:54 93d77bf

PatternLockView

Кастомный компонент для ввода шаблонного пароля с экрана, библиотека позволяет легко и быстро внедрять механизм блокировки шаблонами в приложения. Она очень проста в использовании и предоставляет множество вариантов настройки внешнего вида и поведения этого компонента, чтобы удовлетворить ваши потребности. Поддерживает также привязку RxJava 2, поэтому если вы предпочитаете реактивное программирование (как и я), то сможете получать поток событий при рисовании пользователем шаблона.

Описание

  • Поддержка отслеживания жестовых движений для создания и проверки шаблонов
  • Координаты, получаемые через события Touche Harmony, могут отличаться от координат в стандартных компонентах, будьте внимательны при использовании

Демо

Интеграция

"apiVersion": { "compatible": 5, "target": 5, "releaseType": "Beta1" // Здесь ничего добавлять не требуется }

Методы интеграции:

Метод 1:

Создайте har-пакет из библиотеки и поместите его в папку libs. Внесите следующие изменения в gradle вашего entry-модуля:

implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])

Метод 2:

Добавьте репозиторий Maven Central и зависимости в ваш проект:

allprojects{
    repositories{
        mavenCentral()
    }
}

implementation 'io.openharmony.tpc.thirdlib:patternlockview-core:1.0.0' 
implementation 'io.openharmony.tpc.thirdlib:patternlockview-reactive:1.0.0' 
implementation 'io.reactivex.rxjava2:rxjava:2.0.2'
```# Требования к запуску entry
Запустите проект через DevEco Studio и установите SDK. Измените версию `classpath` в `build.gradle` вашего модуля `entry` на ту, которая используется в новом проекте IDE.

# Пример использования

```xml
<?xml version="1.0" encoding="utf-8"?>
<DependentLayout
        xmlns:ohos="http://schemas.huawei.com/res/ohos"
        xmlns:app="http://schemas.huawei.com/res/app"
        ohos:width="match_parent"
        ohos:height="match_parent"
        ohos:background_element="#000000">

    <DirectionalLayout
            ohos:orientation="vertical"
            ohos:height="match_content"
            ohos:width="match_parent">

        <Image
                ohos:id="$+id:profile_image"
                ohos:width="84vp"
                ohos:height="84vp"
                ohos:layout_alignment="center"
                ohos:top_margin="104vp"
                ohos:image_src="$media:img_no_avatar"/>

        <Text
                ohos:id="$+id:profile_name"
                ohos:width="match_content"
                ohos:height="match_content"
                ohos:layout_alignment="center"
                ohos:top_margin="36vp"
                ohos:text_alignment="center"
                ohos:max_text_lines="1"
                ohos:text="Добро пожаловать"
                ohos:text_color="#fff"
                ohos:text_size="34fp"/>
    </DirectionalLayout>

    <com.andrognito.patternlockview.PatternLockView
            ohos:align_parent_bottom="true"
            ohos:center_in_parent="true"
            ohos:id="$+id:patter_lock_view"
            ohos:width="280vp"
            ohos:height="280vp"
            ohos:bottom_margin="50vp"
            ohos:layout_alignment="center"
            ohos:top_margin="16vp"
            app:dotNormalSize="14vp"
            app:aspectRatio="width_bias"
            app:aspectRatioEnabled="true"
            app:dotAnimationDuration="150"
            app:correctStateColor="#008000"
            app:normalStateColor="#ffffff"
            app:dotCount="3"/>
</DependentLayout>
``````java

  /**
   * Example of screen unlock pattern drawing
   */
  public class MainAbilitySlice extends AbilitySlice {

      private PatternLockView mPatternLockView;

      private PatternLockViewListener mPatternLockViewListener = new PatternLockViewListener() {
          @Override
          public void onStarted() {
              LogUtil.error(getClass().getName(), "Start of pattern drawing");
          }

          @Override
          public void onProgress(List<PatternLockView.Dot> progressPattern) {
              LogUtil.error(getClass().getName(), "Pattern progress: " +
                      PatternLockUtils.patternToString(mPatternLockView, progressPattern));
          }

          @Override
          public void onComplete(List<PatternLockView.Dot> pattern) {
              LogUtil.error(getClass().getName(), "Pattern completed: " +
                      PatternLockUtils.patternToString(mPatternLockView, pattern));
          }

          @Override
          public void onCleared() {
              LogUtil.error(getClass().getName(), "Pattern cleared");
          }
      };
``````java
      @Override
       public void onStart(Intent intent) {
           super.onStart(intent);
           super.setUIContent(ResourceTable.Layout_ability_main);
           mPatternLockView = (PatternLockView) findComponentById(ResourceTable.Id_patter_lock_view);
           mPatternLockView.setDotCount(3);
           mPatternLockView.setAspectRatioEnabled(true);
           mPatternLockView.setAspectRatio(PatternLockView.AspectRatio.ASPECT_RATIO_HEIGHT_BIAS);
           mPatternLockView.setViewMode(PatternLockView.PatternViewMode.CORRECT);
           mPatternLockView.setDotAnimationDuration(150);
           mPatternLockView.setPathEndAnimationDuration(bk);
           mPatternLockView.setInStealthMode(false);
           mPatternLockView.setTactileFeedbackEnabled(true);
           mPatternLockView.setInputEnabled(true);
           mPatternLockView.addPatternLockListener(mPatternLockViewListener);
       }
   }```markdown
RxPatternLockView.patternComplete(mPatternLockView)
        .subscribe(new io.reactivex.functions.Consumer<PatternLockCompleteEvent>() {
            @Override
            public void accept(PatternLockCompleteEvent patternLockCompleteEvent) throws Exception {
                LogUtil.error(getClass().getName(), "Завершение вызова: " + patternLockCompleteEvent.getPattern().toString());
            }
        });

RxPatternLockView.patternChanges(mPatternLockView)
        .subscribe(new Consumer<PatternLockCompoundEvent>() {
            @Override
            public void accept(PatternLockCompoundEvent event) throws Exception {
                if (event.getEventType() == PatternLockCompoundEvent.EventType.PATTERN_STARTED) {
                    LogUtil.error(getClass().getName(), "Начало отрисовки шаблона");
                } else if (event.getEventType() == PatternLockCompoundEvent.EventType.PATTERN_PROGRESS) {
                    LogUtil.error(getClass().getName(), "Прогресс шаблона: " +
                            PatternLockUtils.patternToString(mPatternLockView, event.getPattern()));
                } else if (event.getEventType() == PatternLockCompoundEvent.EventType.PATTERN_COMPLETE) {
                    LogUtil.error(getClass().getName(), "Шаблон завершен: " +
PatternLockUtils.patternToString(mPatternLockView, event.getPattern());
} else if (event.getEventType() == PatternLockCompoundEvent.EventType.PATTERN_CLEARED) {
    LogUtil.error(getClass().getName(), "Шаблон очищен");
}
      @Override
      public void onActive() {
          super.onActive();
      }

      @Override
      public void onForeground(Intent intent) {
          super.onForeground(intent);
      }
  }

Лicensiya

Авторское право 2017 aritraroy

Лицензировано в соответствии с лицензией Apache, версия 2.0 ("Лицензия"); вы можете использовать этот файл только в соответствии с Лицензией. Вы можете получить копию Лицензии по адресу:

http://www.apache.org/licenses/LICENSE-2.0

Если это требует действующего закона или было согласовано письменно, программное обеспечение, распространяемое в соответствии с Лицензией, распространяется на условиях "КАК ЕСТЬ", БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ ИЛИ УСЛОВИЙ ВОПРОЧЬ ЭТОГО. Смотрите Лицензию для конкретного языка, регулирующего права и ограничения, связанные с Лицензией.


Перевод:

Лицензия

Авторское право 2017 aritraroy

Лицензировано в соответствии с лицензией Apache, версия 2.0 ("Лицензия"); вы можете использовать этот файл только в соответствии с Лицензией. Вы можете получить копию Лицензии по адресу:

http://www.apache.org/licenses/LICENSE-2.0

Если это требует действующего законодательства или было согласовано письменно, программное обеспечение, распространяемое в соответствии с Лицензией, распространяется на условиях "КАК ЕСТЬ", БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ ИЛИ УСЛОВИЙ ВОПРОЧЬ ЭТОГО. См. Лицензию для конкретного языка, регулирующего права и ограничения, связанные с Лицензией.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/HarmonyOS-tpc-PatternLockView.git
git@api.gitlife.ru:oschina-mirror/HarmonyOS-tpc-PatternLockView.git
oschina-mirror
HarmonyOS-tpc-PatternLockView
HarmonyOS-tpc-PatternLockView
master