Android合理的使用闪屏
说起闪屏就会莫名的引爆我的小暴脾气,为什么这么说呢? 每次启动一个App我都要盯着手机屏幕傻不拉几的待上几秒钟,即使我知道了这个App的功能到底是TMD是做什么的。因此从内心深处,我对闪屏是抵触的。我知道我打开的是什么该死的APP,我也知道用它来干嘛,求求你只要让我用它就行 OKay??
好,吐槽完毕之后,让我们来看看谷歌对闪屏是抱什么态度:
Material Design:Launch screens 我擦嘞!什么情况,从Material Design规范看到,谷歌竟然有点鼓励我们使用闪屏的节奏?? 一定是我打开网页的方式不对, 用IE再打开试试,结果还是一样 T_T 明明记得谷歌是不支持我们使用闪屏的啊,有图有真相:
难道是谷歌在表演打脸??非也非也~ 我相信谷歌不会蠢到如此地步,其实老版本上的建议和材料设计中的规范并不矛盾,反而本质上是一致的。为什么这么说呢?通常情况下,许多APP启动(尤其是冷启动)的时候,会做一些初始化的工作,这就需要一定的时间,这种情况下,与其让用户对着一片空白屏幕发呆,为何不同时给用户展示一些真(傻)善(白)美(甜)的东西呢? 这就是谷歌所提倡的:不要浪费用户的时间,但是绝不能让用户对着一片空白屏幕撸!!
如下图所示:
好了,说了这么多,那如何使用正确的方式实现一个闪屏呢? 其实合理的实现一个闪屏可能跟你想的有点不太一样,你所看到的闪屏应该是在你调用填充布局的方法之前就已经准备完毕,因此,我们不适用xml布局文件,我们使用样式Style的方式来实现一个闪屏:
首先在res/drawable文件夹下创建background_splash.xml文件,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" ><item android:drawable="@android:color/holo_blue_light"></item><item><bitmapandroid:gravity="center"android:src="@drawable/ic_launcher" /></item></layer-list>
以上代码,我们做了一个布局层叠,背景是一个蓝色,然后还有一个机器人图片
接下来,书写我们启动Activity也就是SplashActivity的主题Theme,在styles.xml文件中添加如下代码:
<style name="SplashTheme" parent="@android:style/Theme.Light.NoTitleBar"><item name="android:windowBackground">@drawable/background_splash</item></style>
可以看到,在SplashTheme主题中,我们将窗口的背景设置为我们自己的布局层叠。
最后在AndroidManifest.xml文件中,指定SplashActivity的主题为SplashTheme,如下:
<activity android:name="com.danny_jiang.splashdemo.SplashActivity"android:theme="@style/SplashTheme"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity>
我们甚至都不需要在SplashActivity的onCreate方法中使用setContentView去设置布局内容,直接运行效果如下:
当然,实际操作中我们还是需要在SplashActivity中添加逻辑操作,比如去做数据的初始化,当数据初始化完之后,将SplashActivity关闭,并启动真正的首页,如下所示:
package com.danny_jiang.splashdemo;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.widget.ProgressBar;public class SplashActivity extends Activity {private Handler handler = new Handler(){public void handleMessage(android.os.Message msg) {switch (msg.what) {case 0:Intent intent = new Intent(SplashActivity.this, MainActivity.class);startActivity(intent);finish();break;case 1:pb.incrementProgressBy(10);break;default:break;}};};private ProgressBar pb;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.splash_layout);pb = (ProgressBar) findViewById(R.id.progressBar_Splash);new Thread(){public void run() {for(int i = 0; i < 10; i++){try {Thread.sleep(1000);handler.sendEmptyMessage(1);} catch (InterruptedException e) {e.printStackTrace();}}handler.sendEmptyMessage(0);};}.start();}
}
运行效果如下:
Android合理的使用闪屏相关推荐
- Android 12 SplashScreen(闪屏页)适配
牢骚(废话) 谷歌真是吃饱了撑的,搞这搞那,Android12新出了一个强制闪屏页,效果就跟小米的闪屏页广告一样,只不过谷歌的是强制的,小米是可选的.不过谷歌再怎么搞,你还是要适配啊,难受. 正题 所 ...
- 【Android】android开发之splash闪屏页的四种实现方式,启动页的实现教程。
2019独角兽企业重金招聘Python工程师标准>>> 作者:程序员小冰,GitHub主页: https://github.com/QQ986945193 新浪微博:http://w ...
- Android应用icon和闪屏splash的尺寸
icon (尺寸为px) 目录 尺寸 (width * height) drawable 72 x 72 drawable-hdpi 72 x 72 drawable-ldpi 36 x 36 dra ...
- android webview加载闪屏,Android Webview:加载url时出现闪屏
我是Android应用程序中的新手,这是我的第一个应用程序. 我已经创建了启动画面和工程..但其后走了一个长长的白色空白屏幕约2-5秒,然后URL开始加载..Android Webview:加载url ...
- android第三方微信/支付宝闪屏不能登录、支付、等问题解决
最近在改项目的时候,打包过后发现一个问题就是微信不能登录支付也肯定是不行的,大致效果就是点一下就闪屏几下就没动静了,后面就开始读源码,发现没问题,自己实在不懂了.就问了自己的师傅,师傅给我说的就是 ...
- android Theme启动APP闪屏处理
//1.设置背景图Theme <style name="Theme.AppStartLoad" parent="android:Theme"> &l ...
- Android电视关闭的闪屏动画效果
老式电视机关闭的时候画面一闪消失的那个效果: 首先创建一个TVOffAnimation继承于Animation: 首先创建一个TVOffAnimation继承于Animation 然后在initial ...
- android 闪屏黑色,android Theme启动APP闪屏处理
//1.设置背景图Theme @drawable/ipod_bg true //2.设置透明Theme true true android:theme="@android:style/The ...
- Android Activity之间切换闪屏问题解决办法
在实际开发中,界面切换除了在同一个页面上显示不同的UI,可以使用fragment进行实现,当fragment嵌套层级过多的 时候,可以使用activity切换实现类似的功能,实现方法如下: Inten ...
最新文章
- sudo: unable to resolve host ubuntu提示的解决
- SQL Server:向 SQL Server 自增字段插入值 (转)
- Html制作知识库管理系统,HTML 编辑器
- python 400集大型视频下载_Python400集大型视频,无偿分享,从正确方向学习python...
- Oracle有使用某个索引吗?(如何监控)
- linux文件读写 文件锁、select、poll【转】
- js怎么把函数字符串转成函数_字符串处理函数
- Mysql中Drop删除用户的名字_mysql5.5 使用drop删除用户
- 如何推送和播放RTMP H265流 (RTMP HEVC)
- 要是不会用数据,算什么IT产品经理?
- 网站地图sitemap.xml的格式
- unity运行环境_LG电子与Unity合作仿真软件 加速研发更安全的自动驾驶汽车系统...
- 单台服务器最大支持多少连接数
- 8,888+ 字,彻底征服 Spring AOP!
- 大数据催生智慧园区_颠覆性的大数据时代催生革命发展
- GlusterFS简单环境部署
- 动易 当前服务器不允许上传文件,动易网站详细安说明及常见疑难解答.doc
- 贝叶斯学习(Bayesian Learning)基础篇
- svga插件_如何压缩SVGA格式的礼物特效文件
- handler相关学习(三)handler必背