Fra*_*ois 10 android splash-screen
第1步:目前,我有一个活动android:windowBackground
可用来设置初始背景,而我们需要等待该活动加载。这将加载应居中对齐的位图。
第二步:一旦活动被载入它的简单setContentView
设置为现在将取代该活动的背景android:windowBackground
,从第一步。这将加载一个imageView
应居中对齐的。
问题在于它们不是都对齐中心,一个或另一个在它们上未对齐。Maby状态栏推下一个吗?我不确定。有什么想法为什么他们不一样吗?
我希望它们都居中对齐。我尝试使用fitSystemWindows="true"
没有运气。
当我添加android:layout_marginTop="12dp"
到活动(activity_start_onboarding.xml
)布局时,imageView
两者都可以很好地对齐,但并非对于所有密度都可以对齐,其他密度则不能对齐。
Maby有一种方法可以动态计算此偏移量,然后针对所有密度进行对齐?
左(灰色)-步骤1(windowBackground):
右(蓝色)-步骤2(活动布局):
AndroidManifest.xml
<activity android:name=".view.onboarding.ActivityStartOnboarding"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:theme="@style/ColdstartSplashTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
styles.xml
<style name="ColdstartSplashTheme" parent="SuperbalistTheme.Dark">
<item name="android:windowBackground">@drawable/splash_background</item>
</style>
Run Code Online (Sandbox Code Playgroud)
@ drawable / splash_background
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/grey_mid_dark" />
<item>
<bitmap
android:gravity="center"
android:src="@drawable/ic_delivery_free_raster" />
</item>
Run Code Online (Sandbox Code Playgroud)
ActivityStartOnboarding.java
public class ActivityStartOnboarding extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start_onboarding);
}
}
Run Code Online (Sandbox Code Playgroud)
activity_start_onboarding.xml
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/blue_light_darker"
android:fitsSystemWindows="true">
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/splash_background" />
</FrameLayout>
</layout>
Run Code Online (Sandbox Code Playgroud)
android:fitsSystemWindows="true"
Run Code Online (Sandbox Code Playgroud)
那是你的问题。您的FrameLayout在状态栏下开始膨胀,高度约为25dp,因此AppCompatImageView会高一些。
第一个解决方案:android:fitsSystemWindows="true"
从activity_start_onboarding.xml
FrameLayout中删除。
第二种解决方案:添加<item name="android:windowDrawsSystemBarBackgrounds">true</item>
到您的中ColdstartSplashTheme
。背景会在状态栏下开始绘制,并且位图会更高。
归档时间: |
|
查看次数: |
524 次 |
最近记录: |