我有一个带有启动画面视图的应用程序,如下所示:
<?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图像?
答案 0 :(得分:4)
您可以在Photoshop中制作图像,将其放入xml然后将整个内容置于中心位置,但我建议在加载应用程序时使用启动画面,因为如果您使用计时器,则会浪费用户的时间...... 这就是我所做的像这样的启动画面:
首先,您必须添加新的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
祝你好运! :)
如果有任何问题,请问:)