Android:中心启动画面图像

时间:2016-08-29 18:39:00

标签: android

我有一个带有启动画面的应用程序,并且启动画面在小型设备上看起来不错,但看起来在大平板电脑(模拟器)中搞砸了。所以我将背景更改为wrap_content。但它看起来与屏幕的一侧对齐,有人可以告诉我一种中心背景图像的方法吗?这是我的splash.xml -

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:background="@drawable/splash">
</LinearLayout>

5 个答案:

答案 0 :(得分:5)

此处您实际上既不需要LinearLayout也不需要RelativeLayout,请使用更轻量级的FrameLayout

  
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:src="@drawable/splash"
        android:layout_gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

</FrameLayout>

答案 1 :(得分:4)

我正在使用背景图片进行活动。首先在styles.xml中创建一个主题:

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

然后使用名称background_splash.xml

创建一个新的drawable
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/colorWhite"/>
        <item>
            <bitmap
                android:gravity="center"
                android:src="@drawable/logo_splash"/>
        </item>
</layer-list>

然后将您的活动设置为在AndroidManifest.xml中使用此主题:

<activity android:name="SplashActivity" android:theme="@style/SplashTheme" >

这对我有用。

答案 2 :(得分:2)

代码略有变化,因为它需要添加第二个元素以获得最佳匹配

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#2A7800"<---- optional background color to fit the image. to make it blend in
    android:orientation="vertical">

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="center_horizontal"<--- centers
        android:adjustViewBounds="true"
        android:scaleType="fitXY"<--- makes sure the image fits into the layout my matching the screen size.

        android:src="@drawable/splash" />
</LinearLayout>

添加ImageView是最佳实践,因为它比使用android:background和设置图像更好的性能。我用ScrollView发现了这个,并且主父将android:background设置为图像。它极速放慢了ScrollView的速度。

此外,不需要使用此方法的特定布局。您可以使用RelativeLayout,FrameLayout,LinearLayout - 任何有效的东西。例外可能是ListView,GridView

答案 3 :(得分:0)

请尝试以下

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@drawable/splash">
</LinearLayout>

答案 4 :(得分:0)

您可以使用相对布局,请尝试以下代码..

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/white">

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerInParent="true"
        android:src="@mipmap/ic_launcher" />
</RelativeLayout>