Перевод текста на русский язык:
Открыть отладку
.setContainActivityClazz(XPageActivity.class) // Установить класс контейнера активности по умолчанию
.init(this); // Инициализировать конфигурацию страницы
Примечание: если в вашем проекте только добавлена зависимость, но не используется аннотация @Page для фрагмента XPageFragment, то при компиляции страница регистрации не будет создана автоматически!
PageConfig.getInstance()
.setPageConfiguration(new PageConfiguration() { // Регистрация страницы
@Override
public List<PageInfo> registerPages(Context context) {
List<PageInfo> pageInfos = new ArrayList<>();
addPageInfoAndSubPages(pageInfos, MainFragment.class);
pageInfos.add(PageConfig.getPageInfo(DateReceiveFragment.class));
return pageInfos; // Ручная регистрация страницы
}
})
.debug("PageLog") // Открыть отладку
.init(this); // Инициализировать конфигурацию страницы
Используйте PageOption.to
для создания опций страницы.
PageOption.to(TestFragment.class) // Фрагмент перехода
.setAnim(CoreAnim.zoom) // Анимация перехода страницы
.setRequestCode(100) // Код запроса, используемый для возврата результата
.setAddToBackStack(true) // Добавлять ли в стек
.setNewActivity(true, ContainActivity.class) // Использовать ли новую активность для открытия
.putBoolean(DateReceiveFragment.KEY_IS_NEED_BACK, true) // Передаваемый параметр
.open(this); // Открыть страницу и перейти
Используйте XPage, чтобы Activity наследовала
XPageActivity
, а Fragment —XPageFragment
, иначе невозможно будет вызвать методopenPage
для перехода на страницу.
Bundle params = new Bundle();
switch(position) {
case 0:
params.putBoolean(DateReceiveFragment.KEY_IS_NEED_BACK, false);
int id = (int) (Math.random() * 100);
params.putString(DateReceiveFragment.KEY_EVENT_NAME, "Событие" + id);
params.putString(DateReceiveFragment.KEY_EVENT_DATA, "Событие" + id + "с данными");
openPage(DateReceiveFragment.class, params);
break;
case 1:
params.putBoolean(DateReceiveFragment.KEY_IS_NEED_BACK, true);
openPageForResult(DateReceiveFragment.class, params, 100);
break;
default:
break;
}
switch(position) {
case 0:
openPage(TestFragment.PAGE_NAME, null, CoreAnim.none);// Без анимации
break;
case 1:
openPage(TestFragment.PAGE_NAME, null, CoreAnim.present);// Снизу вверх
break;
case 2:
openPage(TestFragment.PAGE_NAME, null, CoreAnim.slide);// Слева направо
break;
case 3:
openPage(TestFragment.PAGE_NAME, null, CoreAnim.fade);// Плавное изменение
break;
case 4:
openPage(TestFragment.PAGE_NAME, null, CoreAnim.zoom);// Увеличение
break;
default:
break;
}
Можно установить стиль темы XPageTitleBarStyle
, чтобы настроить стиль заголовка по умолчанию.
<!-- Базовая тема приложения. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Настройте свою тему здесь. -->
<item name="colorPrimary">@color/xpage_default_actionbar_color</item>
<item name="colorPrimaryDark">@color/xpage_default_actionbar_color</item>
<item name="colorAccent">@color/xpage_default_actionbar_color</item>
<!-- Фоновое изображение панели действий, используется фоновое изображение, если оно есть, иначе используется цвет фона, необязательно -->
<item name="xpage_actionbar_background">@null</item>
<!-- Цвет фона панели действий -->
<item name="xpage_actionbar_color">@color/xpage_default_actionbar_color</item>
<!-- Поддержка иммерсивной панели действий, по умолчанию false -->
<item name="xpage_actionbar_immersive">false</item>
<!-- Стрелка назад панели действий, по умолчанию R.drawable.xpage_ic_navigation_back_white -->
<item name="xpage_actionbar_navigation_back">@drawable/xpage_ic_navigation_back_white</item>
<!-- Высота панели действий, по умолчанию 52dp -->
<item name="xpage_actionbar_height">60dp</item>
<!-- Размер текста заголовка панели действий, по умолчанию 18sp -->
<item name="xpage_actionbar_title_text_size">21sp</item>
<!-- Размер текста подзаголовка панели действий, по умолчанию 12sp -->
<item name="xpage_actionbar_sub_text_size">14sp</item>
<!-- Размер текста действия панели действий, по умолчанию 15sp -->
<item name="xpage_actionbar_action_text_size">18sp</item>
<!-- Отступ изображения действия панели действий, по умолчанию 5dp -->
<item name="xpage_actionbar_action_padding">6dp</item>
<!-- Отступы текста по бокам панели действий, по умолчанию 14dp -->
<item name="xpage_actionbar_side_text_padding">16dp</item>
<item name="XPageTitleBarStyle">@style/XPageTitleBar.Custom</item>
</style>
<style name="XPageTitleBar.Custom">
<item name="tb_immersive">false</item>
<item name="tb_centerGravity">center</item> ### 2.6. Использование XPage для написания программы Tab главной страницы
Подробнее см. BottomNavigationViewFragment (https://github.com/xuexiangjys/XPage/blob/master/app/src/main/java/com/xuexiang/xpagedemo/fragment/BottomNavigationViewFragment.java).
По аналогии с обычным использованием ViewPager для загрузки Fragment. Однако здесь необходимо обратить внимание на два момента:
* Поскольку используется ViewPager для загрузки, а не XPage, метод initTitleBar фрагмента должен быть перекрыт.
@Override protected TitleBar initTitleBar() { // Не использовать @Page аннотацию, обязательно обратите внимание на перекрытие этого метода return null; }
* Чтобы новая страница не влияла на состояние текущего контейнера Tab главной страницы, необходимо использовать новый контейнер при открытии новой страницы.
PageOption.to(TestFragment.class) // Новый контейнер, чтобы не влиять на текущий контейнер .setNewActivity(true) .open(this);
### 2.7. Пользовательский интерфейс Activity сложного контейнера
Подробнее см. ComplexActivity (https://github.com/xuexiangjys/XPage/blob/master/app/src/main/java/com/xuexiang/xpagedemo/ComplexActivity.java).
1. Настройте макет контейнера страницы в макете, обязательно включите id fragment_container.
2. В XPageActivity настройте пользовательский макет контейнера страницы.
@Override protected View getCustomRootView() { binding = ActivityComplexBinding.inflate(getLayoutInflater()); return binding.getRoot(); }
3. Используйте метод changePage для переключения Fragment.
changePage(TestFragment.PAGE_NAME, null, CoreAnim.none);
Обратите внимание, что при переключении Fragment жизненный цикл onResume и onPause фрагмента не будет выполняться, рекомендуется использовать onHiddenChanged вместо него.
4. Используйте метод getPage для получения указанного Fragment, вы можете получить данные этой страницы Fragment.
TabAFragment tabAFragment = getPage(TabAFragment.class); if (tabAFragment != null) { ToastUtils.toast(tabAFragment.getData()); } else { ToastUtils.toast("Страница еще не загружена!"); }
## Конфигурация запутывания
* Начиная с версии 3.2.0, используется сериализация gson, поэтому конфигурация следующая:
-keepattributes Signature -keepattributes Annotation -dontwarn sun.misc.** -keep class com.google.gson.examples.android.model.** { ; } -keep class * extends com.google.gson.TypeAdapter -keep class * implements com.google.gson.TypeAdapterFactory -keep class * implements com.google.gson.JsonSerializer -keep class * implements com.google.gson.JsonDeserializer -keepclassmembers,allowobfuscation class * { @com.google.gson.annotations.SerializedName ; } -keep,allowobfuscation,allowshrinking class com.google.gson.reflect.TypeToken -keep,allowobfuscation,allowshrinking class * extends com.google.gson.reflect.TypeToken
-keep class com.xuexiang.xpage.annotation.** { ; } -keep class com.xuexiang.xpage.config.* { *; }
* До версии 3.1.1 используется сериализация fastjson, поэтому конфигурация следующая:
-dontwarn com.alibaba.fastjson.** -keep class com.alibaba.fastjson.** { *; } -keepattributes Signature
-keep class com.xuexiang.xpage.annotation.** { ; } -keep class com.xuexiang.xpage.config.* { *; }
---
## Особая благодарность
https://github.com/lizhangqu/CorePage/
Если вам нравится проект, рассмотрите возможность его поддержки.
> Ваша поддержка — это моя мотивация, я опубликую список всех поддерживающих людей в качестве доказательства, пожалуйста, оставьте комментарий к поддержке перед тем, как поддержать!

## Контакты
[](http://shang.qq.com/wpa/qunwpa?idkey=9922861ef85c19f1575aecea0e8680f60d9386080a97ed310c971ae074998887)

[download-svg]: https://img.shields.io/badge/downloads-1M-blue.svg
[download-url]: https://github.com/xuexiangjys/XPage/blob/master/apk/xpage_demo.apk?raw=true
[download-img]: ./img/download.png
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )