我基本上将以下 xml 用于 Android启动屏幕:空活动windowBackground:
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/background_splash</item>
</style>
Run Code Online (Sandbox Code Playgroud)
background_splash.xml:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<color android:color="@color/defaultBackground" />
</item>
<item>
<bitmap
android:src="@drawable/logo"
android:tileMode="disabled"
android:gravity="center"/>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
只要logo.png小于屏幕尺寸,就可以正常工作。如果logo.png比屏幕大,它就会超出屏幕。
我看到了 3 种解决方法,但都有缺点:
left/ right,<item但这需要 API 23+@drawable/logo异xhdpi,xxhdpi但我使用的是密度分割,当为其他设备重用 apk 时(apk 网站、“移动到新设备”-传输 apk 的应用程序等),这会破坏它ImageView,但这有明显的延迟如何正确/没有缺点地做到这一点?
android splash-screen android-layout pixel-density screen-density
有没有办法为 420 dpi 和 560 dpi 设备创建可绘制文件夹和值文件夹?一种用于 420 dpi,一种用于 560 dpi。
420dpi:三星 Galaxy S5、S4、LG G5、...
560dpi: Nexus 6, 三星 S6, S7, ...
因为在这些类型的设备中,我的应用程序看起来不太好。drawable-xxhdpi 中的图像在 420 dpi 的设备中较小。因为乘以图像的宽度 x 2,625(密度)。我需要更大的图像或将图像乘以 x 3。
我已使用此限定符“ h900dp”创建了资源文件,假设屏幕的最小高度为900dp。
我的设备具有以下DisplayMetrics:
{density=2.0, width=1200, height=1824, scaledDensity=2.0, xdpi=320.842, ydpi=322.966}
Run Code Online (Sandbox Code Playgroud)
我认为这意味着高度为912dp。
那么为什么不使用我的资源文件。
谢谢
我创建了小米红米 3s (294dpi) 的 avd,其规格为:
Android中的广义密度是:
当我用设备规格创建avd时,分配的密度为xhdpi(x2),但实际设备密度因子小于x2,与大多数设备一样,因此预览结果与设备屏幕的实际外观不匹配。比如Nexus 5x也是这样,资源密度为xxhdpi(x3),但实际密度为2.63
在 Android Studio 中,Nexus 5x 或 Pixel XL 等模拟设备分别指定了 420dpi 和 560dpi …
android android-virtual-device android-studio screen-density