我正在创建一个带图像的启动画面,我将添加一个动画。所以我从这个活动开始:
<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>
我正在使用它在布局渲染时立即启动图像。然后在活动的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>
出于某种原因,尽管是相同的可绘制,但是当页面被渲染时,图像显示略有不同(它稍微向下移动,甚至可能稍微调整大小)。有没有办法使用相同的drawable从主题背景无缝过渡到渲染的布局?
以下是活动类:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Splash screen view
setContentView(R.layout.activity_splash);
}
}
答案 0 :(得分:1)
所以,这里的区别在于,Activity的高度将与显示它的Window的高度不同。由于状态栏和导航栏(在带有软件导航键的设备上)等系统镶边,活动高度将会缩短。
为了达到您想要的效果,您有两个选择:
1)使用getWindow().getDecorView()
2)(可能仅适用于21岁以上)使用稳定的布局将活动设置为全屏:
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
3)等待布局在徽标视图中使用alpha动画淡化,而不是将其放在窗口背景中