在程序启动时加载一个界面,过1秒跳转到主程序。
像这样
1秒后
方法:定义两个Activity,启动界面是WelcomeActivity,主程序是MainActivity。通过在WelcomeActivity中用Thread和Handler来控制延时和启动。
1. 首先将WelcomeActivity声明为默认启动
* *
<activity
android:name=".WelcomeActivity"
android:theme="@style/NoneTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
2. 在res/values/style.xml 中声明一个* 无Title无ActionBar * 的style
true
false
<style name="NoneTheme" parent="Theme.AppCompat.Light">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
3. 让WelcomeActivity变为全屏
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
4. 写一个Handler 来后台处理Activity切换
handler = new Handler() {
@Override
public void handleMessage(Message msg) {
//必要的判断条件,判断从主线程中发过来的信息
if (msg.what == 1) {
Intent intent = new Intent(WelcomeActivity.this,MainActivity.class);
startActivity(intent);
WelcomeActivity.this.finish();
}
}
};
new Thread(new Runnable() {
@Override
public void run() {
try {
//等待1000ms即1秒钟
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//给handler发送信息
handler.sendEmptyMessage(1);
}
}).start();
全部代码
WelcomeActivity.java
package cn.crystalling.app.attendance;
import android.content.Intent;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.WindowManager;
public class WelcomeActivity extends AppCompatActivity {
private Handler handler ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_welcome);
handler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what == 1) {
Intent intent = new Intent(WelcomeActivity.this,MainActivity.class);
startActivity(intent);
WelcomeActivity.this.finish();
}
}
};
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
handler.sendEmptyMessage(1);
}
}).start();
}
}
界面布局
- 直接在布局文件中以图片方式作为背景
android:background=”@drawable/welcome_png”
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
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="@drawable/welcome_png">
</android.support.constraint.ConstraintLayout>
- 使用RelativeLayout 来调整布局
<?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"
<!--背景颜色<color name="welcome">#ff4AffDC</color>-->
android:background="@color/welcome"
android:orientation="vertical"
tools:context="cn.crystalling.app.attendance.WelcomeActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
<!-- 图片 -->
android:drawableTop="@mipmap/ic_launcher"
android:drawablePadding="10dp"
<!--图片下的文字-->
android:text="@string/app_name"
android:textSize="30sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="20dp"
<!--底部的版权描述 <string name="copyright">©2017 crystalling.cn Powered By Attendance</string>-->
android:text="@string/copyright"
android:textSize="15sp" />
</RelativeLayout>
这样就完成了一个启动界面。