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

OSCHINA-MIRROR/ouyangfeng-Android_Slide_To_Close

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README_OLD.md 7.5 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 08.03.2025 03:20 ee8f292

Snake

Один строчкой кода реализуйте функцию свайп закрытия: Snake.init(this) ==> Приятного использования...


Упрощённая реализация функции свайп закрытия в Android, аналогичной iOS.

Alt text

Важные обновления

Метод интеграции изменён на использование JitPack

  1. Добавьте следующий скрипт в ваш основной build.gradle файл проекта
allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

Добавьте зависимость в ваш app модуль:

dependencies {
    implementation 'com.github.yuanhoujun:Android_Slide_To_Close:0.0.6'
}

Журнал версий:

Версия 0.0.5

Основные исправления в этой версии:

  1. Класс me.snake.app.Fragment не работал корректно при использовании второго Fragment для перехода назад к первому Fragment.

  2. Если использовать Snake без наследования базового класса, это приведёт к ошибкам выполнения.

Версия 0.0.6

Исправлено проблема с памятью при закрытии активности (issue #3), спасибо yuki-ryoko

Обратите внимание: методы использования для Активностей и Фрагментов немного отличаются

Метод интеграции для Активностей

Шаг 1:

Добавьте следующий код в ваш базовый класс Активности

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

Интеграция с Fragment сложнее, чем с Activity, но всё равно можно сделать это с помощью небольшого количества кода!### Шаг 1: Квалифицированный программист должен иметь базовый класс для своего Fragment, который мы назовём BaseFragment. Для обеспечения возможности закрытия через свайп, потребуется немного модифицировать этот базовый класс:1) Если ваш BaseFragment расширяется от android.app.Fragment, замените его на me.foji.snake.app.Fragment. Это всего лишь подкласс android.app.Fragment.

  1. Если в вашем методе onCreateView есть общие операции с макетом, переместите эти операции в метод <code>public View onBindView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState)</code>.

  2. Как и в случае с Activity, добавьте следующий код в методы onCreate и onDestroy вашего Fragment:

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // Используйте аналогично тому, как это делается в Activity
    Snake.init(this);
}

Следуя этим шагам, вы завершите интеграцию с Fragment. Все очень просто, правда?

Примечание: Так же как и в случае с Activity, аннотация используется для выполнения пользовательских настроек.

Внимание!

  • Snake зависит от FragmentManager для получения предыдущего Fragment, а это требует корректной работы с стеком обратных вызовов Fragment. Поэтому, чтобы гарантировать корректную работу Snake с Fragment, убедитесь, что предыдущий Fragment находится в стеке обратных вызовов и имеет подходящее имя тэга!
  • Чтобы гарантировать корректную работу функции свайпа, мы установили прозрачность окна в файле стилей. Если корневой макет страницы не имеет заднего фона, то страница будет прозрачной, и вы сможете видеть предыдущую страницу. Поэтому, чтобы гарантировать корректную работу Snake, убедитесь, что каждый корневой макет страницы имеет задний фон. Вы можете это сделать в базовом классе.Если вы столкнулись с другими проблемами при использовании, пожалуйста, отправьте мне issue или оставьте сообщение на моём профиле на Jianshu, и я обязательно исправлю это в первую очередь!

Опубликовать ( 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