Android -- 程序启动画面 Splash
很多应用都会有一个启动界面。欢迎画面慢慢隐现,然后慢慢消隐。
我的方式是使用两个Activity,程序启动时候load第一张Activity,然后由tick触发N秒钟后startActivity另外一张Activity。
splash.java
package com.yuyidong.second;import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.view.Window; import android.view.WindowManager;public class Splash extends Activity{@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO 自动生成的方法存根super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.splash);getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);new Handler().postDelayed(new Runnable(){ // 为了减少代码使用匿名Handler创建一个延时的调用public void run() { Intent i = new Intent(Splash.this, MainActivity.class); //通过Intent打开最终真正的主界面Main这个ActivitySplash.this.startActivity(i); //启动Main界面Splash.this.finish(); //关闭自己这个开场屏 } }, 5000); //5秒 }}
splash.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><ImageView android:layout_width="wrap_content"android:layout_height="wrap_content" android:src="@drawable/ic_launcher"android:layout_gravity="center"android:contentDescription="Hello"/><TextViewandroid:id="@+id/info"android:layout_width="fill_parent"android:layout_height="wrap_content"android:gravity="center"android:text="This is a splash!!"/> </LinearLayout>
将splash设置为一点开程序就先显示的activity。AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.yuyidong.second"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="11"android:targetSdkVersion="16" /><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activity android:name="Splash"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activityandroid:name="com.yuyidong.second.MainActivity"android:label="@string/app_name" > </activity> </application> </manifest>
使用Activity的优势在于:
容易控制KEY事件
因为在显示Splash的时候,是不应该响应事件的,比如触摸事件,或者BACK或者MENU,因为这是一个单独的Activity,所以你可以很容易禁掉这些用户事件,而不必担忧影响其他逻辑,或者担心未及时把它们重新启用。
容易定制
因为它是一个单独的Activity,所以你可以把它设置成全屏的,或者没有TitleBar的,或者其他什么样式与风格。在实际使用中,几乎所有的Splash都设置成了全屏。因为它是单独的Activity,所以即使你的应用不是全屏的,也没有关系,因为只把SplashActivity设置成了全屏不会对其他Activity产生影响。
逻辑与主体逻辑分开,容易维护
如前面二点,因为它是一个单独的Activity,所有的Splash相关的逻辑都在其中,而与应用主体的Activity是分开的,所以Splash中的逻辑不会影响到其他的Activity,这也更容易修改和维护,因为不会绞在一起相互影响。
使用Activity的唯一缺点就是它无法利用Splash显示的时间里做数据加载。因为它是一个单独的Activity,无法控制其他的Activity,并且这时其他Activity还未创建。
转载请注明出处:http://www.cnblogs.com/yydcdut/p/3688419.html
Android -- 程序启动画面 Splash相关推荐
- VC四种程序启动画面的制作方法
使用启动画面一是可以减少等待程序加载过程中的枯燥感(尤其是一些大型程序):二是可以用来显示软件名称和版权等提示信息.怎样使用VC++制作应用程序的启动画面呢?本文提供四种方法,前三种适用于基于文档的应 ...
- Qt程序启动画面QSplashScreen类
Qt程序启动画面QSplashScreen类 当程序初始化工作比较多,程序可能启动较长时间后,窗口才会显示出来,用户没准会抱怨程序响应的慢.为了改善用户体验,最好在程序初始化这段时间显示logo,或者 ...
- QT5.9学习笔记之——程序启动画面
多数大型应用程序启动时都会在程序完全启动前显示一个启动画面,在程序完全启动后消失.程序启动画面可以显示相关产品的一些信息,使用户在等待程序启动的同了解相关产品的功能,这也是一个宣传的方式.Qt中提供的 ...
- Qt程序启动画面播放(gif与swf两种动画格式)
学习Qt有一段时间了,发现一个小问题,网上关于Qt的资料或者总结性的学习及应用文章有点少. 比如,Qt完整的API,程序运行之前的启动画面如何按理想效果播放等,每次想在项目中添加一些应用的时候,总是找 ...
- Android 程序启动界面Demo
2019独角兽企业重金招聘Python工程师标准>>> Android 程序启动界面Demo,动态的呢 转载:http://www.adobex.com/android/source ...
- 进阶~Qt程序启动画面
今天又把教程视频看了一遍,这次学的是程序启动画面设置方法,以下是源码: #include"mainwindow.h" #include #include"QPixmap& ...
- 进阶~Qt程序启动画面_vortex_新浪博客
今天又把教程视频看了一遍,这次学的是程序启动画面设置方法,以下是源码: #include"mainwindow.h" #include #include"QPixmap& ...
- QT程序启动画面gif动画有静止背景的解决方法
最近在做QT的程序启动画面的动画,用的是gif的动图.但是有个问题,就是总有一帧在背景那是静止的,也就是说动图叠上静止图上.如下图所示的齿轮所示. 左边的齿轮背后有个静止的齿轮,一直会在那,右边这个才 ...
- Android创建启动画面
每一个Android应用启动之后都会出现一个Splash启动界面,显示产品的LOGO.公司的LOGO或者开发人员信息.假设应用程序启动时间比較长,那么启动界面就是一个非常好的东西,能够让用户耐心等待这 ...
最新文章
- 内存分配器memblock【转】
- Python学习笔记——文件写入和读取
- 飞桨PaddlePaddle升级解读 | PaddleDetection物体检测统一框架
- java 数组排序论文_Java 7是否对方法Arrays.Sort使用Tim Sort?
- ASP调用.Net dll
- Spring Cloud Alibaba基础教程:Sentinel Dashboard中修改规则同步到Nacos
- Qt文档阅读笔记-QTcpServer官方解析与实例(使用QSocket创建简单的HTTP服务器)
- 光流估计算法RAFT的论文和代码阅读
- 图解数字签名Digital Signature 和数字证书Public-key certificate
- MapReduce进程
- JQuery window、document、 body
- LeetCode之根据字符出现频率排序
- 树状数组 (数据结构)
- android jcenter google 镜像
- Mysql增删改查(CURD)
- burnintest激活_PassMark BurnInTest Pro v9.0.1006(拷机软件)真正注册版
- 跨境支付行业洗牌在即:本月底必须登记 支付机构不得再“借牌照”
- mysql中创建视图、索引
- 保险丝(熔断器)基本概述
- php经常致命错误怎么办,如何捕获PHP中的致命错误(Fatal Errors)