gpt4 book ai didi

Android - 与 windowBackground 相同的可绘制对象在布局中大小不同

转载 作者:太空狗 更新时间:2023-10-29 14:02:25 25 4
gpt4 key购买 nike

我正在创建一个带有图像的闪屏,并且要添加一个动画。所以我从这个 Activity 开始:

            <activity
android:name=".activities.SplashActivity"
android:label="@string/app_name"
android:theme="@style/SplashTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

这使用了以下主题:

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

我正在使用它在布局呈现时立即显示图像。然后在 Activity 的 onCreate 方法中我设置了以下布局文件:

    <FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:foreground="@drawable/loading_page_4"
android:id="@+id/splash_color_layout" >
</FrameLayout>

出于某种原因,尽管是相同的可绘制对象,但在呈现页面时图像显示略有不同(它略微向下移动,甚至可能略微调整大小)。有没有一种方法可以使用相同的可绘制对象从主题背景无缝过渡到呈现的布局?

这也是 Activity 类:

        public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Splash screen view
setContentView(R.layout.activity_splash);
}
}

最佳答案

因此,这里的区别在于您的 Activity 的高度将不同于显示它的 Window 的高度。由于状态栏和导航栏(在具有软件导航键的设备上)等系统镶边,Activity 高度将变短。

为了达到您想要的效果,您有两种选择:

1) 使用 getWindow().getDecorView()

的尺寸计算窗口的“真实中间”

2)(可能只适用于 21+)将 Activity 设置为具有稳定布局的全屏:

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
  • 这将使您的内容与窗口大小相同。

3) 等到布局以 alpha 动画淡入 Logo View 而不是将其置于窗口背景中

  • 延迟可能不会造成任何伤害,除非您的设计师真的提示...

关于Android - 与 windowBackground 相同的可绘制对象在布局中大小不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34683842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com