安卓启动画面居中图片

5

我有一个应用程序,其中的启动画面视图看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@android:color/black">
    <ImageView android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:src="@drawable/splash2"
        android:scaleType="centerInside"
        android:adjustViewBounds="true"
        />
    <TextView
        android:id="@+id/txtVersion"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@android:color/white"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_marginRight="10dp"
        android:textSize="20dip"
        android:visibility="invisible"
        android:text="Version "/>
    <LinearLayout
        android:id="@+id/lvSplashInfo"
        android:layout_width="fill_parent"
        android:layout_height="120dp"
        android:layout_marginRight="40dp"
        android:layout_marginLeft="40dp"
        android:layout_alignParentBottom="true"
        android:orientation="vertical"
        android:visibility="invisible"
        android:background="@android:color/black">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="bleh"
            android:layout_margin="5dp"
            android:layout_gravity="center_horizontal"
            android:textColor="@android:color/white"/>
        <TextView
            android:id="@+id/txtPercent"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="0% of the total"
            android:layout_margin="5dp"
            android:textSize="18sp"
            android:gravity="center_horizontal"
            android:textColor="#9DBA32"/>
        <TextView
            android:id="@+id/txtFilename"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="File name: xxxxx"
            android:layout_margin="5dp"
            android:textSize="18sp"
            android:visibility="invisible"
            android:gravity="center_horizontal"
            android:textColor="@android:color/white"/>
    </LinearLayout>
</RelativeLayout>

它将图像按比例缩放并居中显示在屏幕上。不幸的是,这对我们来说效果不佳。它会在加载视图之前出现轻微的白色闪烁。我的解决方案是使用活动样式。这很好用,但我似乎无法同时使图像居中和缩放。我可以轻松地将其居中,但它比屏幕更宽。以下是我的xml可绘制文件:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@android:color/black"/>

    <item>
        <bitmap
            android:gravity="center|bottom|clip_vertical"
            android:src="@drawable/splash2"
            />
    </item>

</layer-list>

如何缩放和居中splash2图片?
1个回答

12

你可以在Photoshop中制作图片,将其放入xml文件中并使整个内容居中,但我建议在应用程序加载时使用启动画面,因为如果你使用计时器,它会浪费用户的时间...... 因此,我按照以下步骤创建了这样一个启动画面:enter image description here

首先,您需要添加一个新的Java类,让我们称之为SplashActivity.java

您不需要添加太多内容:

package YOUR-PACKAGE-NAME;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

public class SplashActivity extends AppCompatActivity {

    @Override
protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);

    Intent i = new Intent(SplashActivity.this, MainActivity.class);
    startActivity(i);
        finish();
    }
}
之后,你需要为闪屏界面(Splash Screen)创建一个可绘制资源,因为如果使用布局文件,它会在应用程序已经加载后才显示,这样闪屏就没有意义了...前往 drawable 文件夹并创建一个名为 background_splash.xml 的文件。然后,在该文件中添加内容。

<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android"
android:gravity="center">
<item>
<bitmap
        android:src="@drawable/ic_splash"
        />
</item>
</layer-list>

在这里,ic_splash 是我用分辨率为 1280x720 的 Photoshop 创建的图像,然后创建了一个 9-patch 图像...(你必须拥有 9-patch 图像,而不是在不同设备上拥有普通、小型和裁剪的图像..)因此,请前往此处生成您自己的... 创建它,下载它,将所有文件夹(mdpi、hdpi 等)复制到您的 res 文件夹中... 现在,转到 values/styles.xml 并添加 NoActionBar 样式。

<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="android:windowBackground">@drawable/background_splash</item>
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>
< p > < strong > 然后 打开您的< code > Manifest.xml 并使用< code > intent-filter 编辑活动。 < p > 您的应该是

<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:icon="@drawable/ic_launcher"
android:theme="@style/AppTheme"
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

.MainActivity替换为.SplashActivity,并将.MainActivity作为另一个活动,因此最终您应该在Manifest.xml中声明至少两个活动:

<activity
android:name=".SplashActivity"
android:theme="@style/SplashTheme"
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MainActivity"
        android:label="@string/app_name"
        android:icon="@drawable/ic_launcher" or "@mipmap/ic_launcher"
        android:theme="@style/AppTheme">

    </activity>

祝你好运! :) 如果有任何问题,请问 :)


怎么这个答案没有任何投票!!! 这太棒了。 这就是创建闪屏的方法。使用主题是完美的解决方案,因为它在布局被处理渲染之前加载。 - Loudenvier

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接