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

OSCHINA-MIRROR/ouyangfeng-Android_Slide_To_Close

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

Змея

Внимание: Змея уже адаптирована для AndroidX, можете смело использовать!

Старая версия документации

Новая версия

Модуль snake-androidx snake-compiler-androidx
Новая версия Скачать Скачать

Описание функциональности

  • Поддерживает одновременно Activity и Fragment
  • Простое использование, включение одной строчкой кода, без вторжения в существующий код
  • Гибкая конфигурация, способна адаптироваться к различным сложным сценариям
  • Адаптирована для всех устройств SDK Version >= 14, без побочных эффектов

Демо для скачивания

Сканирование QR-кода для скачивания

Сканируйте QR-код выше или нажмите здесь для скачивания

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

  1. Добавьте зависимости
dependencies {
    // x.x.x представляет собой последнюю версию модуля, указанную в таблице выше
    implementation 'com.youngfeng.android:snake-androidx:x.x.x'
    annotationProcessor 'com.youngfeng.android:snake-compiler-androidx:x.x.x'
}
```**Примечание:** если вы используете Kotlin, замените `annotationProcessor` на `kapt`.

2) Инициализируйте Snake в классе Application.

```java
public class SnakeApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        
        // Инициализация Snake
        Snake.init(this);
    }
}

Шаги интеграции для Activity

Добавьте аннотацию @EnableDragToClose над классом Activity, который требуется открыть для возможности скольжения закрытия.

@EnableDragToClose()
public class FirstActivity extends Activity

Шаги интеграции для Fragment

Интеграция скольжения закрытия через Fragment более гибкая по сравнению с Activity, рекомендуется использовать Fragment для размещения страниц. В настоящее время Snake предлагает два метода для активации скольжения закрытия в Fragment.

Метод 1: Динамическая конфигурация

Шаг 1: Добавьте аннотацию @EnableDragToClose над классом Fragment, который требуется открыть для возможности скольжения закрытия.

@EnableDragToClose(
public class FirstFragment extends Fragment {

Второй шаг: использовать методы, предоставляемые Snake, для динамического создания экземпляров фрагмента.

// Если фрагмент расширяется от androidx.fragment.app.Fragment, используйте метод newProxySupport для создания экземпляра
FirstFragment fragment = Snake.newProxySupport(FirstFragment.class);

// Если фрагмент расширяется от android.app.Fragment, используйте метод newProxy для создания экземпляра
FirstFragment fragment = Snake.newProxy(FirstFragment.class);
```Примечание: В случае отсутствия конструктора по умолчанию вам потребуется использовать аннотацию `@PrimaryConstructor`, чтобы указать конструктор, который будет использоваться для создания экземпляра фрагмента.```java
@EnableDragToClose()
public class FirstFragment extends Fragment {

    @PrimaryConstructor
    public FirstFragment(int x, int y) {

    }

    ...
}

При использовании аннотации для маркировки конструктора при создании экземпляра с помощью метода Snake требуется передать параметры конструктора, как показано ниже:

FirstFragment fragment = Snake.newProxySupport(FirstFragment.class, 1, 2);

Метод два: использование наследования для интеграции

Следуйте следующим соответствиям, чтобы заменить родительский класс вашего фрагмента и завершить интеграцию скольжением закрытия:

  • android.app.Fragment => com.youngfeng.snake.app.Fragment
  • androidx.fragment.app.Fragment => com.youngfeng.snake.androidx.app.Fragment

Примечания

  1. Начиная с версии 0.4.0, support библиотека больше не поддерживается. Если вы хотите продолжить использовать версию Fragment из support библиотеки, используйте версию меньше 0.4.0. Активность не затронута.

  2. Поскольку Android 9.0 уже прекратил поддержку класса android.app.Fragment, Snake также прекращает его поддержку. Рекомендуется использовать androidx.fragment.app.Fragment.

  3. Snake временно несовместим с Навигацией. Для использования Snake для реализации скольжением закрытия вам придется самостоятельно контролировать навигацию страниц фрагмента.# Настройка параметров скроллинга Обычно после выполнения вышеописанных шагов вы можете использовать функцию скроллинга закрытия. Однако некоторые пользователи могут захотеть настроить внешний вид скроллинга. Не волнуйтесь, Snake предлагает две возможности для настройки параметров скроллинга.## Глобальная конфигурация параметров скроллинга Если вы хотите применить конфигурацию параметров скроллинга ко всем страницам, можно использовать файл snake.xml, чтобы настроить параметры. Этот файл следует поместить в корневую директорию проекта. Я предоставил шаблон конфигурации.```xml

false false 2000 false #00000000 #50000000 false true ```Измените параметры шаблона, скопируйте текущий xml-файл и поместите его в папку **assets** вашего основного проекта. Имя файла должно остаться **snake.xml**, изменять его нельзя!

Конфигурация параметров для отдельной страницы

Если вы хотите применять параметры скольжения только к одной странице, можно использовать @SetDragParameter для её конфигурации:```java @EnableDragToClose() @SetDragParameter(minVelocity = 2000, hideShadowOfEdge = false ...) public class FirstActivity extends Activity


# Описание других интерфейсов
`Snake.enableDragToClose()` : Если вам требуется динамически включать или отключать возможность "скользящего закрытия", используйте этот интерфейс.

`Snake.addDragListener()` : Если вам нужно выполнять дополнительные действия во время скольжения, используйте этот интерфейс для прослушивания всего процесса скольжения.

`Snake.setCustomTouchInterceptor` : Если при использовании возникают проблемы с конфликтами скольжения, вы можете использовать этот интерфейс для установки пользовательского перехватчика.

Примечание: В большинстве случаев вам не потребуется обращаться к этому интерфейсу. Если вы уверены, что вам необходим перехватчик для решения проблем с конфликтами скольжения, используйте этот интерфейс.

`Snake.dragToCloseEnabled()` : Если вам нужно узнать, активирован ли режим "скользящего закрытия" на текущей странице, используйте этот интерфейс.

`Snake.enableSwipeToHome()` : Если вы хотите активировать функцию "скольжение вверх для перехода на главный экран" на определенной странице, используйте этот интерфейс.

`Snake.swipeUpToHomeEnabled()` : Получите состояние активации функции "скольжение вверх для перехода на главный экран" на текущей странице.


# Обработка совместимости версий
**Замена support на androidx реализацию**С версии `0.4.0` библиотека `support` была удалена. Если вы используете Snake в Fragment, замените библиотеку `support` на реализацию `androidx`.

**Удаление интерфейса SnakeAnimationController**

Начиная с версии `0.4.0`, `snake-compiler` автоматически реализует этот интерфейс, поэтому самостоятельная реализация больше не требуется.

**Замена android.app.Fragment на реализацию androidx**

Начиная с версии `0.4.0`, будет постепенно прекращено использование системного Fragment. Если вы используете системную реализацию Fragment, замените её на реализацию `androidx`.

**Изменение способа объявления зависимостей, требуются `-androidx` суффиксы**

implementation 'com.youngfeng.android:snake-androidx:x.x.x' annotationProcessor 'com.youngfeng.android:snake-compiler-androidx:x.x.x'


# Лучшие практики
1) Чтобы избежать множества повторяющегося кода, рекомендуется использовать метод **наследования** для использования Snake.

2) Запуск Activity является очень затратным процессом. Для лучшего пользовательского опыта рекомендуется использовать дизайн с **всеми Fragment**, или с **одним Activity и многими Fragment**.

3) При возникновении вопросов, пожалуйста, сначала проверьте [Wiki](https://github.com/yuanhoujun/Snake/wiki). Если ответа нет, присоединитесь к QQ обсуждению группе **288177681** для своевременной обратной связи.

4) Для получения наилучшего пользовательского опыта в Activity рекомендуется добавить следующую конфигурацию в файл стилей:```xml
<item name="android:windowIsTranslucent">true</item>
  1. android.app.Fragment и android.support.v4.app.Fragment были официально отброшены командой Android. Рекомендуется всегда использовать androidx.fragment.app.Fragment как единственный выбор для типа Fragment.

Конфигурация ProGuard

# Если данная конфигурация уже применена, повторное указание не требуется
-keepattributes *Annotation*
-keep class **.*_SnakeProxy
-keep @com.youngfeng.snake.annotations.EnableDragToClose public class *

Официальный аккаунт WeChat

Офис Оуянфэна

Официальный аккаунт WeChat также является эффективной платформой для обратной связи. Если вам нужна помощь, оставьте сообщение в аккаунте WeChat, и я проверю его первым делом!

Группа общения QQ

Группа QQ: 288177681

Если вы столкнулись с какой-либо проблемой во время использования, присоединяйтесь к группе для обсуждения. Если вы хотите поддержать автора, нажмите кнопку звездочки выше.

ПС: Если вы используете Snake в своем продукте, напишите мне! Адрес электронной почты: 626306805@qq.com, большое спасибо!

Лицензия

Copyright 2018 Офис Оуянфэна

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

    http://www.apache.org/licenses/LICENSE-2.0    В случае если это требование применимо к вам или было согласовано письменно, программное обеспечение,
распространяемое по Лицензии, распространяется на условиях «КАК ЕСТЬ», БЕЗ ЛЮБЫХ ГАРАНТИЙ И УСЛОВИЙ;
гарантии и условия предоставляются явно или подразумеваются.
См. Лицензию для конкретного языка, регулирующего права и ограничения, предоставляемые Лицензией.

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

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

Введение

Используя Snake-фреймворк, на Android также можно легко реализовать функцию закрытия при боковом свайпе, эффект будет близок к iOS. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

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

Участники

все

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

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