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

OSCHINA-MIRROR/chinasoft4_ohos-MaterialScrollBar

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

MaterialScrollBar

Описание проекта

  • Название проекта: MaterialScrollBar
  • Серия: адаптация и портирование третьих сторон для OpenHarmony
  • Функционал: удобная для использования библиотека OHOS, позволяющая легко реализовать эффект следования при прокрутке
  • Состояние портирования: основные функции завершены
  • Различия в вызовах: отсутствуют
  • Версия SDK: 6, DevEco Studio 2. 2 Beta1
  • Базовая версия: Release 13. 4. 1

Демонстрация работы

Демонстрация работы

Инструкция по установке

  1. В файле build.gradle, расположенном в корневой директории проекта,
allprojects {
  repositories {
      maven {
          url 'https://s01.oss.sonatype.org/content/repositories/releases/'
      }
  }
}
  1. В файле build.gradle модуля app,
dependencies {
  implementation('com.gitee.chinasoft_ohos:MaterialScrollBar:1.0.0')
  ...
}

Проект можно запустить непосредственно с использованием SDK 6 и DevEco Studio 2. 2 Beta1.

Если проект не запускается, удалите файлы project.gradle, .idea, build, gradle, build.gradle, а затем создайте новый проект в соответствии со своей версией и скопируйте соответствующие файлы нового проекта в корневую директорию.

Инструкция по использованию

  1. Как использовать Создайте объект MaterialScroller и используйте его в макете
<com.turingtechnologies.materialscrollbardemo.MaterialScroller
      ohos:id="$+id:fast"
      ohos:height="match_parent"
      ohos:width="match_content"
      ohos:align_parent_right="true"
      ohos:orientation="vertical"
      app:bubbleColor="#ff0099"
      app:bubbleTextColor="#e0e0e0"
      app:bubbleTextSize="24fp"
      app:handleColor="#ff0099"
      app:textStyle="bold">
</com.turingtechnologies.materialscrollbardemo.MaterialScroller>
```  2. Настройка плавающего окна Indicator
```java
/**
* Определение ползунка
*/
@Override
public Component provideHandleView(ComponentContainer container) {
  handle = new Hand(getContext());
  DirectionalLayout.LayoutConfig layoutConfig = new DirectionalLayout.LayoutConfig(60, 300);
  handle.setLayoutConfig(layoutConfig);
  handle.setMarginLeft(10);
  return handle;
}

/**
* Определение плавающего окна
*/
@Override
public Component provideBubbleView(ComponentContainer container) {
  int radius = AttrHelper.vp2px(paddingDefault, getContext());
  float[] radii = new float[]{
          radius, radius,
3. MateriaScroller
Определение атрибутов
```
```java
    handleColor = AttrValue.get(attrSet, "handleColor", new Color(STYLE_NONE));
    handleComColor = AttrValue.get(attrSet, "handlecomColor", new Color(STYLE_NONE));
    bubbleColor = AttrValue.get(attrSet, "bubbleColor", new Color(STYLE_NONE));
    bubbleTextColor = AttrValue.get(attrSet, "bubbleTextColor", new Color(STYLE_NONE));
    bubbleTextSize = AttrValue.getDimension(attrSet, "bubbleTextSize", STYLE_NONE);
    textStyle = AttrValue.get(attrSet, "textStyle", "");
```
Обработка событий скроллинга
```
```
/**
 * Получение общего значения смещения по высоте
 *
 * @return Общее значение смещения
 */
protected int getTotalScrollH() {
    return totalScrollH;
}
``````java
private void initHandleMovement() {
    handle.setTouchEventListener(new TouchEventListener() {
        @Override
        public boolean onTouchEvent(Component component, TouchEvent event) {
            MmiPoint mScreenPosition = event.getPointerScreenPosition(0);
            switch (event.getAction()) {
                case TouchEvent.PRIMARY_POINT_DOWN:
                    scrollMax();
                    if (titleProvider != null) {
                        viewProvider.onHandleGrabbed();
                        float offsetY = mScreenPosition.getY() - handle.getLocationOnScreen()[1];
                        offset = offsetY;
                        return true;
                    }
                    break;
                case TouchEvent.POINT_MOVE:
                    scrollMax();
                    isChangingPosition = true;
                    float relativePos = getRelativeTouchPosition(event);
                    if (relativePos > 1) relativePos = 1;
                    
                    // Иначе если (относительная позиция < 0) относительная позиция = 0;
                    else if (relativePos < 0) {
                        relativePos = 0;
                    }

                    // Устанавливаем прокрутку в положении (относительная позиция);
                    setScrollPosition(relativePos);

                    // Устанавливаем RecyclerView в положении (относительная позиция);
                    recyclerView.smoothScrollToPosition((int)(relativePos * totalItemCount));
                    return true;
            }
            return false;
        }
    });
}
```

```markdown
```diff
-                     Иначе если (относительная позиция < 0) относительная позиция = 0;
+                     else if (relativePos < 0) {
+                         relativePos = 0;
+                     }

-                     Устанавливаем прокрутку в положении (относительная позиция);
+                     setScrollPosition(relativePos);

-                     Устанавливаем RecyclerView в положении (относительная позиция);
+                     recyclerView.smoothScrollToPosition((int)(relativePos * totalItemCount));
```Слайдинговый утилит класс `ScrollingUtilities`

Контрольные элементы и их координаты на экране

```diff
   public static float getViewByIdrawY(Component view) {
           int[] location = new int[2];
           location[0] = 0;
           location[1] = (((Component) view.getComponentParent()).getLocationOnScreen())[1];
           return location[1];
       }
```
Получение минимального значения

```diff
       public static float getValueInRange(float мин, float макс, float значение) {
              float минимальное = Math.max(мин, значение);
              return Math.min(минимальное, макс);
          }
```
Атрибутный утилит класс `AttrValue````diff
 Чтение атрибутов XML
    public static <T> T get(AttrSet attrSet, String ключ, T defaultValue) {
        Если (!attrSet.getAttr(ключ).isPresent()) {
            Возвращаем (T) defaultValue;
        }
        Attr attr = attrSet.getAttr(ключ).get();
        Если (defaultValue instanceof String) {
            Возвращаем (T) attr.getStringValue();
        } Или если (defaultValue instanceof Long) {
            Возвращаем (T) (Long) (attr.getLongValue());
        } Или если (defaultValue instanceof Float) {
            Возвращаем (T) (Float) (attr.getFloatValue());
        } Или если (defaultValue instanceof Integer) {
            Возвращаем (T) (Integer) (attr.getIntegerValue());
        } Или если (defaultValue instanceof Boolean) {
            Возвращаем (T) (Boolean) (attr.getBoolValue());
        } Или если (defaultValue instanceof Color) {
            Возвращаем (T) (attr.getColorValue());
        } Или если (defaultValue instanceof Element) {
            Возвращаем (T) (attr.getElement());
        } Иначе {
            Возвращаем (T) defaultValue;
        }
    }
```
#### Информация о тестировании
```diff
 CodeCheck проверка кода прошла успешно
 CloudTest проверка кода прошла успешно
 Программа прошла проверку на наличие вирусов
 Функциональность текущей версии demo практически не отличается от оригинальной компоненты
 ```
#### Версионирование
 - 1. 0. 0
#### Информация о правах и лицензиях
Material Scroll Bar:
```diff
    Copyright 2016-2017 Turing Technologies, некоммерческой организации Wynne Plaga.
    Лицензировано по лицензии Apache License, версия 2. 0 ("Лицензия");
    Вы можете использовать этот файл только в соответствии с Лицензией.
    Вы можете получить копию Лицензии по адресу
        http://www.apache.org/licenses/LICENSE-2. 0
``````apache. org/licenses/LICENSE-2. 0
    Кроме случаев, когда это требует применимое законодательство или письменное соглашение, программное обеспечение,
     распространяемое в рамках Лицензии, предоставляется «как есть» без каких-либо гарантий или условий любого типа,
     явных или подразумевающихся.
     Увидеть лицензию для получения конкретных правил и ограничений, предусмотренных Лицензией.Это лицензирование применимо ко всему коду, предлагаемому как часть этого репозитория, который можно определить по
лицензионному уведомлению, предшествующему содержанию ИЛИ/И по его включению в пакет, начинающийся с `com.turingtechnologies.materialscrollbar`.

RecyclerView-FastScroll:
    ```
    Copyright (C) 2016 Tim Malseed
    Распространяется под лицензией Apache, версия 2.0 ("Лицензия");
    вы не можете использовать этот файл, кроме как в соответствии с Лицензией.
    Вы можете получить копию Лицензии по адресу
        http://www.apache.org/licenses/LICENSE-2.0
    Кроме случаев, когда это требует применимое законодательство или письменное соглашение, программное обеспечение,
    распространяемое в рамках Лицензии, предоставляется «как есть» без каких-либо гарантий или условий любого типа,
    явных или подразумевающихся.
    Увидеть лицензию для получения конкретного языка, регулирующего права и ограничения в рамках Лицензии.
    ```Launcher 3:
    ```
    Copyright (C) 2010 The Android Open Source Project
    Распространяется под лицензией Apache, версия 2.0 ("лицензия");
    вы не можете использовать этот файл, кроме как в соответствии с лицензией.
    Вы можете получить копию лицензии по адресу
        http://www.apache.org/licenses/LICENSE-2.0
    Кроме случаев, когда это требует применимое законодательство или письменное соглашение, программное обеспечение,
    распространяемое в рамках лицензии, предоставляется «как есть» без каких-либо гарантий или условий любого типа,
    явных или подразумевающихся.
    Увидеть лицензию для получения конкретного языка, регулирующего права и ограничения в рамках лицензии.
    ```
```

Комментарии ( 0 )

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

Введение

Простая в использовании библиотека OHOS, которая позволяет легко реализовать эффект прокрутки с отслеживанием. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/chinasoft4_ohos-MaterialScrollBar.git
git@api.gitlife.ru:oschina-mirror/chinasoft4_ohos-MaterialScrollBar.git
oschina-mirror
chinasoft4_ohos-MaterialScrollBar
chinasoft4_ohos-MaterialScrollBar
master