转载自:http://blog.csdn.net/sdjianfei/article/details/52985419
1、在项目styles.xml文件中添加一个style
<style name="startpage" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowBackground">@drawable/android_ios</item></style>
//插入代码:line1汉字末尾回车到line2,空格两个后回车到line3,按一下tab,代码缩进一致即可
2、在mainfest文件中对启动页activity进行配置
<activityandroid:name=".login.WelcomeActivity"android:theme="@style/startpage"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity>
3、activity中的配置:
@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);initView();// 无论啥情况 都要加载哦
}
private void initView() {// 不显示系统的标题栏,保证windowBackground和界面activity_main的大小一样,显示在屏幕不会有错位(去掉这一行试试就知道效果了)getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);// 注意:添加3秒睡眠,以确保黑屏一会儿的效果明显,在项目应用要去掉这3秒睡眠try {Thread.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}// 停留3秒后发送消息,跳转到MainActivitymHandler.sendEmptyMessageDelayed(MSG_FINISH_LAUNCHERACTIVITY, 1000);
}public Handler mHandler = new Handler() {public void handleMessage(Message msg) {switch (msg.what) {case MSG_FINISH_LAUNCHERACTIVITY:dealStatus();// 可以选选择进行setcontentview等操作;break;default:break;}}
};
原理:activity启动时,windowbackground比setcontentview要先加载,这一段时间如果theme是白的、透明的。屏幕就是白色的,黑的就会显示黑屏,不美观;
如果是小项目,直接用设计图即可,复杂大型项目的windowbackground,图片应该严格处理,方案如下:
一、提供.png背景图
提供背景图是解决的一个方法,但是要适配各种屏幕,提供很多张图片。除非图片非常复杂只能用背景图了就用这种方法吧,否则个人不建议。
二、提供.9.png(NinePatch)背景图片
如果图片不是很复杂,可以做成NinePatch图片,那就直接制作NinePatch图片,提供一张就可以适配任何手机,何乐而不为呢。
三、使用Layout-list制作背景图片
如果可以使用这种方式,推荐使用这种Layout-list制作背景图片。前2种都是使用图片占用内存啊,使用Layout-list比较省内存,做出app也不会说因为图片多体积变大吧。