Внимание: Змея уже адаптирована для AndroidX, можете смело использовать!
Модуль | snake-androidx | snake-compiler-androidx |
---|---|---|
Новая версия |
Сканируйте QR-код выше или нажмите здесь для скачивания
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);
}
}
Добавьте аннотацию @EnableDragToClose
над классом Activity, который требуется открыть для возможности скольжения закрытия.
@EnableDragToClose()
public class FirstActivity extends Activity
Интеграция скольжения закрытия через Fragment более гибкая по сравнению с Activity, рекомендуется использовать Fragment для размещения страниц. В настоящее время Snake предлагает два метода для активации скольжения закрытия в Fragment.
Шаг 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
Начиная с версии 0.4.0, support библиотека больше не поддерживается. Если вы хотите продолжить использовать версию Fragment из support библиотеки, используйте версию меньше 0.4.0. Активность не затронута.
Поскольку Android 9.0 уже прекратил поддержку класса android.app.Fragment
, Snake также прекращает его поддержку. Рекомендуется использовать androidx.fragment.app.Fragment
.
Snake временно несовместим с Навигацией. Для использования Snake для реализации скольжением закрытия вам придется самостоятельно контролировать навигацию страниц фрагмента.# Настройка параметров скроллинга Обычно после выполнения вышеописанных шагов вы можете использовать функцию скроллинга закрытия. Однако некоторые пользователи могут захотеть настроить внешний вид скроллинга. Не волнуйтесь, Snake предлагает две возможности для настройки параметров скроллинга.## Глобальная конфигурация параметров скроллинга Если вы хотите применить конфигурацию параметров скроллинга ко всем страницам, можно использовать файл snake.xml, чтобы настроить параметры. Этот файл следует поместить в корневую директорию проекта. Я предоставил шаблон конфигурации.```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>
android.app.Fragment
и android.support.v4.app.Fragment
были официально отброшены командой Android. Рекомендуется всегда использовать androidx.fragment.app.Fragment
как единственный выбор для типа Fragment.# Если данная конфигурация уже применена, повторное указание не требуется
-keepattributes *Annotation*
-keep class **.*_SnakeProxy
-keep @com.youngfeng.snake.annotations.EnableDragToClose public class *
Официальный аккаунт WeChat также является эффективной платформой для обратной связи. Если вам нужна помощь, оставьте сообщение в аккаунте WeChat, и я проверю его первым делом!
Группа QQ: 288177681
Если вы столкнулись с какой-либо проблемой во время использования, присоединяйтесь к группе для обсуждения. Если вы хотите поддержать автора, нажмите кнопку звездочки выше.
ПС: Если вы используете Snake
в своем продукте, напишите мне! Адрес электронной почты: 626306805@qq.com, большое спасибо!
Copyright 2018 Офис Оуянфэна
Лицензировано под лицензией Apache, версия 2.0 («Лицензия»);
вы можете использовать этот файл только в соответствии с Лицензией.
Вы можете получить копию Лицензии по адресу
http://www.apache.org/licenses/LICENSE-2.0 В случае если это требование применимо к вам или было согласовано письменно, программное обеспечение,
распространяемое по Лицензии, распространяется на условиях «КАК ЕСТЬ», БЕЗ ЛЮБЫХ ГАРАНТИЙ И УСЛОВИЙ;
гарантии и условия предоставляются явно или подразумеваются.
См. Лицензию для конкретного языка, регулирующего права и ограничения, предоставляемые Лицензией.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )