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

OSCHINA-MIRROR/vanish136_admin-StateFrameLayout

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

StateFrameLayout

Введение

Часто в проектах возникают ситуации, когда новый открытый интерфейс требует загрузки данных с различными возможными состояниями. Необходимо отображать интерфейсы в зависимости от различных результатов. Этот процесс можно свести к пяти основным состояниям: начальное состояние Init, состояние запроса Loading, состояние отсутствия данных Empty, состояние сетевой ошибки NetError и успешное состояние запроса Content. Если несколько интерфейсов имеют этот процесс, то было бы полезно упаковать весь процесс вызова, что позволит упрощать вызовы и легко управлять всеми этапами.

StateFrameLayout наследуется от FrameLayout, внутри которого реализован механизм переключения между различными состояниями одним действием. Также внутри реализован кэширование состояний, поэтому нет необходимости беспокоиться о том, что состояние будет сброшено при повторной активации после сборки мусора (можно проверить это, открыв опцию "Не удерживать активность" в разделе разработчика).

Использование

Версии 2.0.0 и выше не совместимы с предыдущими версиями

Последняя версия доступна здесь

Добавление в Gradle

    #last-version укажите последнюю версию из приведенной ссылки
    #2.0.0 и выше используют MavenCentral, следуйте указаниям ниже
    
    implementation 'com.lwkandroid.library:StateFrameLayout:last-version'
```### Глобальная конфигурация
С версии 2.0.0 поддерживаются глобальные настройки, позволяющие установить общие параметры для всех компонентов. Пример конфигурации представлен ниже:

Установка в методе onCreate() вашего класса Application

public class DemoApplication extends Application { @Override public void onCreate() { super.onCreate(); // Глобальная конфигурация StateFrameLayoutManager.getGlobalOptions() .setEmptyLayoutId(R.layout.layout_empty) // Идентификатор шаблона для состояния Empty .setLoadingLayoutId(R.layout.layout_loading) // Идентификатор шаблона для состояния Loading .setNetErrorLayoutId(R.layout.layout_net_error) // Идентификатор шаблона для состояния NetError .setEnableContentAnim(true) // Разрешение анимации содержимого .setContentAnim(new BaseContentAnimation()) // Объект анимации содержимого, можно использовать наследование от BaseContentAnimation для создания собственной анимации } }


### Определение в XML
```xml
<com.lwkandroid.widget.StateFrameLayout
    android:id="@+id/stateLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:enableContentAnim="true"   <!-- Включает ли анимацию при отображении содержимого (по умолчанию 200 миллисекунд анимация прозрачности) -->
    app:emptyLayoutResId="@layout/layout_empty"   <!-- ID представления пустого состояния -->
    app:loadingLayoutResId="@layout/layout_loading" <!-- ID представления состояния загрузки -->
    app:netErrorLayoutResId="@layout/layout_net_error" <!-- ID представления состояния ошибки сети -->
>

Определение контентной layout```xml

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:text="Это содержимое"
    android:textAppearance="?android:textAppearanceLarge"/>

</com.lwkandroid.widget.StateFrameLayout>


### Использование в коде
```java
    StateFrameLayout mStateFrameLayout = (StateFrameLayout) findViewById(R.id.stateLayout);
    // ID пустого состояния
    mStateFrameLayout.setEmptyLayoutId(R.layout.layout_empty2);
    // ID состояния загрузки
    mStateFrameLayout.setLoadingLayoutId(R.layout.layout_loading);
    // ID состояния ошибки сети
    mStateFrameLayout.setNetErrorLayoutId(R.layout.layout_net_error);
    // Установка анимации отображения содержимого
    mStateFrameLayout.setContentAnimation(BaseContentAnimation animation);

    // Переключение на начальное состояние Init, все view невидимы, это также является начальным состоянием после завершения загрузки StateFrameLayout
    mStateFrameLayout.switchToInitState();
    // Переключение на пустое состояние
    mStateFrameLayout.switchToEmptyState();
    // Переключение на состояние загрузки
    mStateFrameLayout.switchToLoadingState();
    // Переключение на состояние ошибки сети
    mStateFrameLayout.switchToNetErrorState();
    // Переключение на состояние содержимого
    mStateFrameLayout.switchToContentState();

Примеры экранов


Настройка ProGuard

Не требуется специальная конфигурация ProGuard

Ссылки

MaterialPageStateLayout: https://github.com/Syehunter/MaterialPageStateLayout
Благодарю всех, кто вносит свой вклад в развитие open source!


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

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

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления

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

Участники

все

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

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