Подход с заставкой в ​​одном приложении Activity - PullRequest
0 голосов
/ 16 октября 2018

Я пытаюсь выбрать наилучший подход к созданию заставки приложения, принимая во внимание последние рекомендации Google по выбору одного приложения Activity, когда это возможно.

См. Здесь:

«Новый подход состоит в том, чтобы по возможности использовать структуру с одним действием».

и здесь:

«Сегодня мы представляем компонент навигации в качестве основыдля структурирования вашего пользовательского интерфейса в приложении с упором на то, чтобы сделать приложение с одним действием предпочтительной архитектурой. "

У всех подходящих мне подходящих заставок есть выделенное занятие для заставки:

См. Здесь

и здесь

Кто-нибудь еще имел опыт создания заставки в одном приложении Activity?Включает ли одиночная рекомендация «Активность» заставку или это особый случай?У кого-нибудь есть хорошие примеры или советы по этому поводу?

Приветствия, Пол.

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Подход, который я использую, следующий:

Сначала определите рисование для фона:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:drawable="@color/green"/>

    <item>
        <bitmap
            android:gravity="center"
            android:src="@mipmap/ic_launcher"/>
    </item>

</layer-list>

2.Определите новый стиль для использования в заставке:

<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="android:windowBackground">@drawable/background_splash</item>
</style>

3.Заставьте свою деятельность использовать тему-заставку:

<activity
    android:name=".MainActivity"
    android:theme="@style/SplashTheme">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

4.При создании, перед супер-вызовом и перед заданным представлением содержимого установите тему приложения по умолчанию:

override fun onCreate(savedInstanceState: Bundle) {
    setTheme(android.R.style.AppTheme)
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main);
}

Этот подход используется мной даже для нескольких операций, поскольку он следует изложенным рекомендациям.Google: он показывает всплеск сразу и не остается дольше, чем нужно.

0 голосов
/ 16 октября 2018

Если вы используете ConstraintLayout в своих макетах, вы можете использовать класс Group Android для группировки нескольких видов.Пожалуйста, обратитесь к следующей ссылке для получения дополнительной информации.

https://developer.android.com/reference/android/support/constraint/Group

Этот класс управляет видимостью набора ссылочных виджетов.Ссылки на виджеты добавляются в список идентификаторов, разделенных запятыми, например:

 <android.support.constraint.Group
          android:id="@+id/group"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:visibility="visible"
          app:constraint_referenced_ids="button4,button9" />

FYI - несколько групп могут ссылаться на одни и те же виджеты - в этом случае порядок объявления XML будет определять окончательное состояние видимости(у группы, объявленной последней, будет последнее слово).

Надеюсь, это поможет вам решить проблему.

...