闪屏,就是SplashScreen,也能够说是启动画面,就是启动的时候,闪(展示)一下,持续数秒后。自己主动关闭。

   第一种方式:

android的实现很easy,使用Handler对象的postDelayed方法就能够实现。在这种方法里传递一个Runnable对象和一个延迟的时间。该方法实现了一个延迟运行的效果,延迟的时间由第2个參数指定。单位是毫秒。

第一个參数是Runnable对象,里面包括了延迟后须要运行的操作。

详细的实现步骤为:



1.实现一个闪屏窗口。设置背景图片等。

2.实现主窗口,当闪屏结束后会启动该窗口。



2.在闪屏窗口里的onCreate方法重载里。处理一个延迟运行页面跳转的操作。方法如上面的代码所看到的。

在这里跳转到程序的主窗口。

这里仅仅给出核心代码。ui非常easy就不给了

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.Menu; public class StarActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_star); // 闪屏的核心代码
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent intent = new Intent(StarActivity.this,
MainActivity.class); // 从启动动画ui跳转到主ui
startActivity(intent);
overridePendingTransition(R.anim.in_from_right,
R.anim.out_to_left);
StarActivity.this.finish(); // 结束启动动画界面 }
}, 4000); // 启动动画持续3秒钟
} }

另外一种方式:

通过AlphaAnimation 动画。窗体的动画效果。淡入淡出,有些游戏的欢迎动画。logo的淡入淡出效果就使用AlphaAnimation。

【基本的语法】public AlphaAnimation (float fromAlpha, float toAlpha)

fromAlpha:開始时刻的透明度,取值范围0~1。

toAlpha:结束时刻的透明度,取值范围0~1。

public class SplashActivity extends Activity
{
private TextView tv_version;
private LinearLayout ll;
private ProgressDialog progressDialog; private UpdateInfo info;
private String version; private static final String TAG = "Security"; private Handler handler = new Handler()
{
public void handleMessage(Message msg)
{
if(isNeedUpdate(version))
{
showUpdateDialog();
}
};
}; @Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.splash);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); tv_version = (TextView) findViewById(R.id.tv_splash_version);
version = getVersion();
tv_version.setText("版本 " + version); ll = (LinearLayout) findViewById(R.id.ll_splash_main);
AlphaAnimation alphaAnimation = new AlphaAnimation(0.0f, 1.0f);
alphaAnimation.setDuration(2000);
ll.startAnimation(alphaAnimation); progressDialog = new ProgressDialog(this);
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setMessage("正在下载..."); new Thread()
{
public void run()
{
try
{
sleep(3000);
handler.sendEmptyMessage(0);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
};
}.start(); }

事实上在启动界面会包含非常多操作的,比方,获取应用的版本,以及提醒是否更新,等等操作。这里也仅仅给出简单的核心代码。一般也是非常easy理解的。

上述代码仅仅是简单的给出了一些操作,详细的实现没有给出,比方版本,以及更新操作,下载操作等。

假设没有上述的一些操作,仅仅要注意例如以下代码就可以。

 ll = (LinearLayout) findViewById(R.id.ll_splash_main);
AlphaAnimation alphaAnimation = new AlphaAnimation(0.0f, 1.0f);
alphaAnimation.setDuration(2000);
ll.startAnimation(alphaAnimation);

android启动第一个界面时即闪屏的核心代码(两种方式)的更多相关文章

  1. Android 应用开发 之通过AsyncTask与ThreadPool(线程池)两种方式异步加载大量数据的分析与对比--转载

     在加载大量数据的时候,经常会用到异步加载,所谓异步加载,就是把耗时的工作放到子线程里执行,当数据加载完毕的时候再到主线程进行UI刷新.在数据量非常大的情况下,我们通常会使用两种技术来进行异步加载,一 ...

  2. 第一课:Centos下配置java环境变量的两种方式(jdk1.8)

    配置java环境(yum安装) 1.查出java1.8的全部版本 yum list java-1.8* 2.安装你需要的java1.8 版本(安装的名字根据查询出来的结果输入这里只是举例) yum i ...

  3. Android Activity切换(跳转)时出现黑屏的解决方法

    在两个Activity跳转时,由于第二个Activity在启动时加载了较多数据,就会在启动之前出现一个短暂的黑屏时间,解决这个问题比较简单的处理方法是将第二个Activity的主题设置成透明的,这样在 ...

  4. win32 窗口缩放时出现闪屏

    今天无意发现之前写的一个小工具在缩放窗口的时候,出现闪屏,主要有两个位置: 工具栏出一闪屏 右侧的控制面板出现闪屏 (这个控制面板与多层元件组合而成) 之前真没注意到这个问题,平时都是最大化/恢复窗口 ...

  5. 创建安卓模拟器的两种方式及常用Android命令介绍

    创建安卓模拟器有以下两种方式: 1>通过图形界面创建,在Eclipse中单击Windows->Android Virtual Device Manager启动图形界面窗口 2>如果用 ...

  6. Android Studio签名打包的两种方式

    签名打包的两种方式: 注:给我们自己开发的app签名,就代表着我自己的版权,以后要进行升级,也必须要使用相同的签名才行.签名就代表着自己的身份(即keystore),多个app可以使用同一个签名. 如 ...

  7. Android跟蓝牙耳机建立连接有两种方式

    Android 跟蓝牙耳机建立连接有两种方式. 1. Android 主动跟蓝牙耳机连BluetoothSettings 中和蓝牙耳机配对上之后, BluetoothHeadsetService 会收 ...

  8. Android中EditText显示明文与密文的两种方式

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 记录输入框显示.隐藏密码的简单布局以及实现方式. 效果图    代码分析 方式一 /**方式一:*/ private void sh ...

  9. 【Android】adb connect 手机的两种方式

    adb支持两种连接Android系统的方式,USB方式及网络方式.一般android手机及android平板默认会设置为USB方式(直接插数据线的方式). 下边介绍两种方式的切换方式. 1. 背景知识 ...

随机推荐

  1. [SharePoint][SharePoint Designer 入门经典]Chapter8 XSLT数据试图和表单

    本章概要: 1.不是利用XSLT web部件 2.使用XSLT web部件创建数据试图 3.使用XSLT表单web部件创建自定义表单 4.利用自定义动作执行列表表单

  2. [SharePoint2010开发入门经典]编译部署SPS WebPart

    本章概要: 1.理解web部件,什么时候需要创建一个 2.理解标准和可视web部件的不同 3.使用VS构建部署web部件

  3. java书籍推荐:《Java SE 6 技術手册》

    Java SE 6 技術手册 或  Java SE 6 技術手册 Java SE 6 技術手册 為什麼選擇用 Markdown?仅仅是單純把文件又一次排版太無聊了,不如趁這個機會學些新東西.所以我就藉 ...

  4. CentOS6.5下安装远程桌面服务端软件VNC Server

    VNC 使您能够远程訪问和控制您的计算机从还有一计算机或移动设备上,不管你在世界的不论什么地方. 常见的使用情形,包含给同事和朋友提供桌面支持.远程管理您的服务器. 将 VNC Server部署到您想 ...

  5. 深刻理解Nginx之Nginx完整安装

    1.   Nginx安装 1.1预先准备 CentOS系统下,安装Nginx的库包依赖. 安装命令例如以下: sudo yum groupinstall "DevelopmentTools& ...

  6. man pthread_mutex_init 或 man pthread_mutex_lock 没有结果的解决的方法

    问题: 在刚装好的 Mint/Ubuntu 可能会出现 man pthread_mutex 相关的函数没结果, 报No manual entry for pthread_mutex_init 的错误. ...

  7. emacs使用本地emacs server模式打开远程文件

    使用emacs的用户都知道,一般要打开远程机器上的文件要使用TrampMode模式,调用方式例如以下: C-x C-f /remotehost:filename RET (or /method:use ...

  8. _DataStructure_C_Impl:AOE网的关键路径

    //_DataStructure_C_Impl:CriticalPath #include<stdio.h> #include<stdlib.h> #include<st ...

  9. Thread.setDaemon设置说明

    转载地址:http://blog.csdn.net/m13666368773/article/details/7245570 Thread.setDaemon的用法,经过学习以后了解: 1. setD ...

  10. nodejs免费空间

    https://www.nitrous.io/join/N_aIGoSnOMI node免费空间,可以把自己node 代码部署到云端. 也可以在线编辑,当然也能在外网地址访问到,是自己学习nodejs ...