Я работаю над тем, чтобы в моем проекте была реализована заставка. Активность всплеска в настоящее время отлично загружается, и перед загрузкой изображения не возникает "белая вспышка" - и это хорошо.
Моя единственная проблема - поддержание правильного соотношения сторон изображения заставки.
Вот тема, которую я использую для SplashActivity
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/splash</item>
</style>
splash.xml
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/pink_grid"
android:gravity="fill_vertical|clip_horizontal"
/>
А вот скриншот с полученным результатом:
Черно-розовое изображение сетки, которое я использую в качестве фона, имеет однородные квадраты. Как вы можете видеть из изображения, оно не поддерживает правильное соотношение сторон (горизонтальное сжатие).
Вот изображение сетки (1280x1920):
Что я пробовал:
Кажется, единственный способ контролировать соотношение сторон всплывающего окна - это использование gravity
. Я попытался заполнить изображение по вертикали и обрезать по горизонтали. Но это не поддерживает соотношение сторон.
Как настроить гравитацию заставки, чтобы сохранить пропорции и установить размер экрана на любом устройстве?
Редактировать: прогресс на основе ответа Раз:
activity_splash.xml
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/pink_grid" android:scaleType="centerCrop"/>
</merge>
SplashActivity.kt
class SplashActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_splash)
// val intent = Intent(this, MainActivity::class.java)
// startActivity(intent)
// finish()
}
}
AndroidManifest.xml
<application>
<!-- ... -->
<activity
android:name=".SplashActivity"
android:theme="@style/SplashTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
styles.xml
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@android:color/transparent</item>
</style>
Заставка теперь просто черная. Розовая / черная сетка не отображается.