Экран-заставка — это первый экран, который появляется при запуске приложения Android. Он используется для отображения индикатора выполнения или отображения важной информации о приложении до того, как оно будет готово к использованию. Это может помочь улучшить работу пользователей, пока они ждут загрузки приложения. Существует несколько способов создания заставки в Android, и у каждого есть свои преимущества и недостатки. В этой статье мы рассмотрим некоторые из наиболее распространенных методов создания заставки в Android.
Способ 1: использование активности
Самый простой и понятный способ отобразить заставку в Android — создать действие, специально предназначенное для этой цели. Это действие будет первым экраном, который отображается при запуске приложения, и будет отображаться до тех пор, пока основное действие не будет готово к отображению.
Вот код для SplashScreenActivity
в Android Kotlin:
class SplashScreenActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_splash) // Start the main activity after a delay Handler().postDelayed({ startActivity(Intent(this, MainActivity::class.java)) finish() }, 2000) } }
В этом коде SplashScreenActivity
расширяется от AppCompatActivity
и устанавливает представление содержимого в файл макета для экрана-заставки с помощью setContentView(R.layout.activity_splash)
. Задержка в 2 секунды реализована с помощью класса Handler
и метода postDelayed
, после чего запускается основная активность с помощью класса Intent
. Метод finish
вызывается для удаления активности экрана-заставки из стека задач, гарантируя, что пользователь не сможет вернуться к ней.
Важно, чтобы продолжительность экрана-заставки была как можно короче, так как длинный экран-заставка может негативно повлиять на общий пользовательский опыт.
Чтобы завершить реализацию экрана-заставки, нам нужно указать действие экрана-заставки в файле AndroidManifest.xml в качестве действия по умолчанию, которое должно запускаться при запуске приложения.
<activity android:name=".SplashScreenActivity" android:theme="@style/SplashScreen"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
Здесь SplashScreenActivity
указывается как действие по умолчанию, запускаемое с темой @style/SplashScreen
.
Наконец, нам нужно создать файл макета для экрана-заставки.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#FF5733" android:gravity="center" android:orientation="vertical"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/splash_logo"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Loading..." android:textColor="#FFFFFF" android:textSize="24sp"/> </LinearLayout>
Способ 2: API заставки
Начиная с Android 12, API
SplashScreen
включает новую анимацию запуска приложений для всех приложений при работе на устройстве с Android 12 или выше. Это включает в себя движение в приложении при запуске, заставку, показывающую значок вашего приложения, и переход к вашему приложению.SplashScreen
является окном и, следовательно, закрывает активность. — Android-разработчики
С этим новым API-интерфейсом Splashscreen нам больше не нужно делать отдельное действие для экрана-заставки. Чтобы использовать SplashScreen API, вам нужно иметь compileSdkVersion
не менее 31. Вам также нужно будет добавить следующую зависимость в ваш app/build.gradle:
implementation 'androidx.core:core-splashscreen:1.0.0-beta02'
Далее нам нужно создать тему. Эта тема описывает, как будет выглядеть SplashScreen. Убедитесь, что родителем вашей темы является Theme.SplashScreen.
<style name="Theme.App.Starting" parent="Theme.SplashScreen"> <!-- Set the splash screen background, animated icon, and animation duration. --> <item name="windowSplashScreenBackground">@color/...</item> <!-- Use windowSplashScreenAnimatedIcon to add either a drawable or an animated drawable. One of these is required. --> <item name="windowSplashScreenAnimatedIcon">@drawable/...</item> <!-- Required for animated icons --> <item name="windowSplashScreenAnimationDuration">200</item> <!-- Set the theme of the Activity that directly follows your splash screen. --> <!-- Required --> <item name="postSplashScreenTheme">@style/Theme.App</item> </style>
postSplashScreenTheme
должна быть установлена на тему, которую вы хотите использовать в своем приложении.
Мы почти закончили. Нам просто нужно сделать еще 2 вещи. Прежде всего нам нужно убедиться, что наша тема SplashScreen используется приложением при запуске, установив ее в нашем AndroidManifest:
<manifest> <application android:theme="@style/Theme.App.Starting"> <!-- or --> <activity android:theme="@style/Theme.App.Starting"> ...
Наконец, нам просто нужно «установить» SplashScreen в нашей активности запуска. Важно сделать это до super.onCreate()
этого действия.
class MainActivity : Activity() { override fun onCreate(savedInstanceState: Bundle?) { // Handle the splash screen transition. val splashScreen = installSplashScreen() super.onCreate(savedInstanceState) setContentView(R.layout.main_activity) } }
Теперь вы создали SplashScreen с новым API SplashScreen.
Заключение
В заключение, создать заставку в Android относительно просто, и есть несколько способов сделать это. Приведенные выше методы являются наиболее распространенными, которые вы увидите в проекте Android.