Упрощённая реализация функции свайп закрытия в Android, аналогичной iOS.
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
Добавьте зависимость в ваш app модуль:
dependencies {
implementation 'com.github.yuanhoujun:Android_Slide_To_Close:0.0.6'
}
Основные исправления в этой версии:
Класс me.snake.app.Fragment
не работал корректно при использовании второго Fragment
для перехода назад к первому Fragment
.
Если использовать Snake без наследования базового класса, это приведёт к ошибкам выполнения.
Исправлено проблема с памятью при закрытии активности (issue #3), спасибо yuki-ryoko
Добавьте следующий код в ваш базовый класс Активности
public class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Только одна строчка кода для включения функции свайп закрытия
Snake.init(this);
}
}
```## Шаг 2:
Чтобы видеть эффект свайпа предыдущей активности, вам потребуется сделать окно прозрачным. Это может быть сложнее, но пока лучшего решения нет. Если вы знаете лучший способ, пожалуйста, fork этот репозиторий и отправьте Pull Request, буду очень благодарен!
Добавьте следующие настройки в тему вашего приложения в res/values/styles.xml:
```xml
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Эти две строки используются для установки прозрачности окна -->
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowIsTranslucent">true</item>
</style>
Следуя этим двум шагам, функция свайп-закрытия будет работать правильно. Проверьте её!
По сравнению с версией 0.0.2, в версии 0.0.3 используются аннотации для выполнения некоторых пользовательских настроек параметров, а также возможность в любое время контролировать открытие и закрытие скольжения.
@SlideToClose(enable = false, shadowStartColor = 0xff0000, shadowEndColor = 0x00ff00, minVelocity = 3000)
public class MainActivity extends BaseActivity implements View.OnClickListener {
...
}
Примечание: Чтобы использовать аннотацию, убедитесь, что в методе onCreate
активности вызван метод <code>Snake.init(this)</code>
.
Интеграция с Fragment сложнее, чем с Activity, но всё равно можно сделать это с помощью небольшого количества кода!### Шаг 1:
Квалифицированный программист должен иметь базовый класс для своего Fragment, который мы назовём BaseFragment. Для обеспечения возможности закрытия через свайп, потребуется немного модифицировать этот базовый класс:1) Если ваш BaseFragment расширяется от android.app.Fragment
, замените его на me.foji.snake.app.Fragment
. Это всего лишь подкласс android.app.Fragment
.
Если в вашем методе onCreateView
есть общие операции с макетом, переместите эти операции в метод <code>public View onBindView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState)</code>
.
Как и в случае с Activity, добавьте следующий код в методы onCreate
и onDestroy
вашего Fragment:
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Используйте аналогично тому, как это делается в Activity
Snake.init(this);
}
Следуя этим шагам, вы завершите интеграцию с Fragment. Все очень просто, правда?
Примечание: Так же как и в случае с Activity, аннотация используется для выполнения пользовательских настроек.
FragmentManager
для получения предыдущего Fragment, а это требует корректной работы с стеком обратных вызовов Fragment. Поэтому, чтобы гарантировать корректную работу Snake с Fragment, убедитесь, что предыдущий Fragment находится в стеке обратных вызовов и имеет подходящее имя тэга!Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )