Android [小技巧] 启动界面

在程序启动时加载一个界面,过1秒跳转到主程序。

像这样

启动界面.jpg

1秒后
主程序.jpg


方法:定义两个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();
    }
}

界面布局

  1. 直接在布局文件中以图片方式作为背景
    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>
  1. 使用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>

这样就完成了一个启动界面。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值