Android添加全屏启动画面
有的Android软件需要在启动的时候显示一个启动画面,可以是一张图或者一些设置什么呢,还有一个好处就是,可以趁机在后台加载数据。
创建启动画面一般有两种方式:
1、建立一个activity,展示启动画面,然后再启动主Activity
2、在主Activity建立一个展示区,然后隐藏掉。
第二个其实更简单,但是这个就展示一次的东西戳在代码里,怎么想都不舒服,而且还可能设计效率问题。所以在项目里还是选用第一种。
首先建立一个Activity,这里明明为HelloActivity,界面就是activity_hello.xml。
接下来修改AndroidManifest.xml文件,把主Activity换成HelloActivity。把之前的主Activity放到下面。
<activity
android:name="com.phone.config.SetActivity"
android:icon="@drawable/set"
android:label="@string/app_name"
android:screenOrientation="landscape"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:windowSoftInputMode="adjustUnspecified|stateHidden" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
这样HelloActivity就优先启动了,在java文件中编写代码,启动完画面后启动主界面。
在activity_hello.xml中就一个LinearLayout 和一个ImageView,界面很简单,但要保证他全屏,其实我们在设置文件里面已经设置了全屏,在java文件的onCreate方法里也可以设置:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//设置无标题
requestWindowFeature(Window.FEATURE_NO_TITLE);
//设置全屏
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_hello);
iv = (ImageView)this.findViewById(R.id.iv);
timer = new Timer(true);
timer.schedule(hello, 200, 150); //延迟200毫秒执行,每150毫秒执行一次
}
这里面用了一个Timer,用Timer是因为,我的项目启动画面是一个动态的,但是Android又不支持Gif图播放,但项目中就这个地方用到gif,所以就把gif给分割成jpg文件,然后用timer播放,播放完成后就加载新Activity。
编写Timer的TimerTask类,重写run()方法就可以了。
TimerTask hello = new TimerTask(){
@Override
public void run() {
if(index < 5){
index++;
Message msg = new Message();
msg.what = index;
handler.sendMessage(msg);
}else if(index < 8){
index++; //静止片刻
}else{
//停止播放,启动主Activity
timer.cancel();
Intent intent = new Intent(HelloActivity.this, MainActivity.class);
startActivity(intent);
finish(); //不加这一句,按回退键就会回到欢迎界面不合理。 }
}
};
这里还涉及到了一个消息处理,因为Android不允许随便让其他线程操作UI,但是处理系统消息的Handle却是可以得,所以Timer定时向Handle发送一个消息,用来更改界面。
final Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
//循环播放图片
iv.setBackgroundResource(hellores[msg.what]);
}
};
这样,一个简单的启动画面就做好了。
提示:在Android4.0版本中,这种方法无法隐藏系统的状态栏,需要修改底层代码。
Android添加全屏启动画面的更多相关文章
- 【Android 基础】Android中全屏或者取消标题栏
先介绍去掉标题栏的方法: 第一种:也一般入门的时候经常使用的一种方法 requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏 注意这句一定要写在se ...
- Android中全屏 取消标题栏,TabHost中设置NoTitleBar的三种方法(转)
Android中全屏 取消标题栏,TabHost中设置NoTitleBar的三种方法http://www.cnblogs.com/zdz8207/archive/2013/02/27/android- ...
- iOS-右滑返回,利用Runtime添加全屏Pop手势
项目中经常会遇到类似需求,需要在某控制器增加全屏右滑返回功能. 在我们不隐藏 NavigationBar 的前提下,系统会自动替我增加此功能,只是它作用的范围仅仅在屏幕左边有限区域. 我们需要在整个界 ...
- Android实现全屏的三种方式
一.通过代码 requestWindowFeature(Window.FEATURE_NO_TITLE);// 隐藏标题栏 getWindow().setFlags(WindowManager.Lay ...
- android在全屏下第一次触摸屏幕没有触发事件
A.设置全屏的方法很多就不多说了,常见如下两种(记录用以备忘): 1.在Androidmanifest.xml文件中设定,如: <activity android:name="com. ...
- Android6.0 源码修改之 仿IOS添加全屏可拖拽浮窗返回按钮
前言 之前写过屏蔽系统导航栏功能的文章,具体可看Android6.0 源码修改之屏蔽导航栏虚拟按键(Home和RecentAPP)/动态显示和隐藏NavigationBar 在某些特殊定制的版本中要求 ...
- android activity全屏
有两种方法: 1.在AndroidManifest.xml的配置文件里面的<activity>标签添加属性: android:theme="@android:style/Them ...
- 解决Android adjustresize全屏无效问题
最近在做一个即时通信的聊天页面时,页面要求要全屏显示,这个时候android:windowSoftInputMode = "adjustResize"属性就不起作用了,如果使用an ...
- Android dialog 全屏
Android中让Dialog全屏: 一.在style中定义样式: <?xml version="1.0" encoding="utf-8"?> & ...
随机推荐
- Laravel Cache 的缓存文件在到期后是否会自动删除
验证缓存文件是否会自动删除的目的是,防止产生大量的缓存文件,占满磁盘.因为,我最近越来越多的使用 cache 来缓存各类 token. 使用的是 file 作为 CACHE_DRIVER CACHE_ ...
- springMVC源码分析--视图AbstractView和InternalResourceView(二)
上一篇博客springMVC源码分析--视图View(一)中我们介绍了简单介绍了View的结构实现及运行流程,接下来我们介绍一下View的实现类做的处理操作. AbstractView实现了rende ...
- vim的基本用法
- 浅谈Spring MVC知识
关于MVC框架,我相信大家都不陌生,都会说也就是模型-视图-控制器这三层的框架结构,如果你参加面试的时候考官会问:“MVC框架是什么?你说一说.”其实我们都知道这个问题还需要问的,只要你是一个开发人员 ...
- Python3.X 安装Scrapy
安装Scrapy有两种方法: 1.pip install Scrapy 这种方式按道理来说是最简洁最快速的,但是有的时候安装不成功,只能更换一种方式,下载源文件安装的方式,详见下面一步. 2.下载文件 ...
- C++语言实现-邻接表
图的邻接表实现 邻接表是图的一种链式存储结构.主要是应对于邻接矩阵在顶点多边少的时候,浪费空间的问题.它的方法就是声明两个结构.如下图所示: 先来看看伪代码: typedef char Vertext ...
- hdu-1754 I Hate It【线段树】(求区间最大值)
<题目链接> I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/O ...
- js数据结构之hash散列的详细实现方法
hash散列中需要确定key和value的唯一确定关系. hash散列便于快速的插入删除和修改,不便于查找最大值等其他操作 以下为字符和数字的hash散列: function HashTable () ...
- Easydarwin加FFMPEG实现HLS流视频点播
前言 最近有点迷茫,所以将自己用过的东西写个Demo记录一下,复习复习. 具体实现: Easydarwin 一个开源的好用的流媒体平台框架. FFMPEG 一个视频音频处理神器,就是用起来有点麻烦, ...
- win 10 主题 美化
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha ========= 桌面背景,锁屏背景,文件名字,色调,文件夹 详细信息 显示 设置, ...