Android启动画面中心图像

时间:2016-05-13 18:51:56

标签: android android-layout android-drawable

我有一个带有启动画面视图的应用程序,如下所示:

<?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 drawable:

<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 个答案:

答案 0 :(得分:4)

您可以在Photoshop中制作图像,将其放入xml然后将整个内容置于中心位置,但我建议在加载应用程序时使用启动画面,因为如果您使用计时器,则会浪费用户的时间...... 这就是我所做的像这样的启动画面:enter image description here

首先,您必须添加新的Java class,我们称之为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();
    }
}

在那之后,你必须有一个可绘制的启动画面,因为如果你有一个布局,它会在应用程序已经加载时出现,所以没有任何意义溅... 转到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是我使用Photoshop创建的分辨率为1280x720的图像,然后创建了一个9补丁图像...(你必须有9个补丁图像,不要有正常的,小的和裁剪的图像在不同的设备..)所以去here并生成你的...创建它,下载它并将所有文件夹(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>

然后打开Manifest.xml并使用intent-filter修改活动。

你应该

<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替换为另一项活动,因此最后您应该至少在{}声明两个活动{1}}:

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