android splash启动界面,Android启动界面(Splash)的两种实现方法

用2个Activity实现

用Handler对象的postDelayed方法来实现延迟跳转的目的。

补充:Handler的常用方法:

// 立即执行Runnable对象

public final boolean post(Runnable r);

// 在指定的时间(uptimeMillis)执行Runnable对象

public final boolean postAtTime(Runnable r, long uptimeMillis);

// 在指定的时间间隔(delayMillis)执行Runnable对象

public final boolean postDelayed(Runnable r, long delayMillis);

activity_splash.xml:

activity_main.xml:

SplashActivity:

package com.example.splashtest;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.os.Handler;

import android.view.Window;

public class SplashActivity extends Activity {

private final int SPLASH_DISPLAY_LENGHT = 3000;

private Handler handler;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

getWindow().requestFeature(Window.FEATURE_NO_TITLE);

setContentView(R.layout.activity_splash);

handler = new Handler();

// 延迟SPLASH_DISPLAY_LENGHT时间然后跳转到MainActivity

handler.postDelayed(new Runnable() {

@Override

public void run() {

Intent intent = new Intent(SplashActivity.this,

MainActivity.class);

startActivity(intent);

SplashActivity.this.finish();

}

}, SPLASH_DISPLAY_LENGHT);

}

}

MainActivity:

package com.example.splashtest;

import android.app.Activity;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

public class MainActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

}

修改AndroidManifest.xml文件:

...

...

在SplashActivity中禁用返回键:

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

if(keyCode == KeyEvent.KEYCODE_BACK){

return true;

}

return super.onKeyDown(keyCode, event);

}

用一个Activity实现

主要利用控件的隐藏来实现。

xml文件:

MainActivity

package com.example.splashtest2;

import android.app.Activity;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.os.SystemClock;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.view.Window;

import android.widget.LinearLayout;

public class MainActivity extends Activity {

private final int STOP_SPLASH = 0;

private final int SPLASH_TIME = 3000;

private LinearLayout splashLt;

private Handler splashHandler = new Handler() {

public void handleMessage(Message msg) {

switch (msg.what) {

case STOP_SPLASH:

splashLt.setVisibility(View.GONE);

break;

default:

break;

}

super.handleMessage(msg);

}

};

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

getWindow().requestFeature(Window.FEATURE_NO_TITLE);

setContentView(R.layout.activity_main);

splashLt = (LinearLayout) findViewById(R.id.splash_lt);

Message msg = new Message();

msg.what = STOP_SPLASH;

// 注:这里必须用延迟发送消息的方法,否则ImageView不会显示出来

splashHandler.sendMessageDelayed(msg, SPLASH_TIME);

}

}

小结

建议使用第一种方法,用两个Activity实现,因为MainActivity中的代码不宜过多。

Android中的Splash Window是启动页窗口,用于在应用程序启动时展示一个独立的界面给用户。它通常用来展示应用程序的Logo或加载动画,以增加用户体验。Splash Window的创建和定制可以通过设置Activity的布局、主题和背景来实现。 在常规做法中,可以创建一个SplashActivity,并在onCreate方法中使用Handler来延时处理消息,以达到延时显示Splash Window的效果。同时,可以通过在布局文件中创建一个background来设置Splash Window的背景颜色或图片。 另一种方式是将图片设置为background而不是windowBackground。可以在样式(style)中设置windowBackground为白色(@android:color/white),并在布局文件中创建一个background来设置Splash Window的背景颜色或图片。这样可以实现Splash Window全屏显示的效果。 在设置background时,可以使用以下常量值来控制背景图片的平铺效果:disabled(不平铺位图,即单次显示),clamp(当着色器绘制范围超出其原边界时复制边缘颜色),repeat(水平和垂直重复着色器的图像),mirror(水平和垂直重复着色器的图像,交替镜像图像以使相邻图像始终相接)。 最后,在AndroidManifest.xml文件中,可以为SplashActivity设置对应的样式(style),以使应用程序在启动时显示Splash Window。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [android_基础_splash](https://blog.csdn.net/qq_42420293/article/details/117839274)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值