2016/8/8 11:11:18 # 纠错

之前写的这篇内容的知识点有误,给大家造成了误导,深感抱歉。

android 中给 Activity 设置背景的方法是在 style 文件中设置 windowBackground 属性,而非设置 background 属性,如果你设置的是 background 属性,那么抱歉,你可能会遇到下面所说的这种情况: Activity 的 layout 中所有布局控件的背景全变成了 background 所指定的样式。


2016/7/11 14:06:22

最近在做项目优化,其中碰到一个问题:每次应用冷启动的时候,会有一段时间的白屏,这种现象在低端机上更加明显。

为了解决这个问题,我首先是想到怎么做冷启动的优化(应用冷启动这块这里先不展开讲,后面会单独整理出来一篇文章)。冷启动的优化可以从几个方面入手,比如说:在App的Application类的onCreate方法中尽量不要做比较重的操作,包括SharedPreference文件的额初始化等。。另外,可以使应用每次不完全关闭,修改用户返回键的操作,减少应用冷启动的次数(目前微信好像就是这么做的)。

回过头来想一下,在我目前所做的这款App中,冷启动优化要解决的其实就是去除应用在冷启动情况下有一段时间白屏的问题,那么,我们不妨从应用的背景图片来考虑。

首先,设置应用第一个页面的theme,这里我的应用第一个页面是SplashActivity,因此,我再AndroidManifest.xml文件中添加了android:theme的属性。

然后,自定义属性ActivitySplashTheme。我的ActivitySplashTheme继承原来应用的style,在原来的基础上,我添加了一个background属性,并设置相应的背景图片。

<item name="android:background">@drawable/background</item>

到这里就完成了。


什么?!你说你的应用按照这样设置之后,界面出现了意想不到的“效果”,各种布局错乱?!

好吧,看来还是没搞明白style的用法、以及style中background属性的意义。

说一下我的做法吧,在上面说的那些内容修改之后还不行的情况下,我给每个控件都另外添加了background属性

android:background="@android:color/transparent"

比如,设置TextView的background,设置ImageView属性等(大家注意一下ImageView的background属性和src属性,搞清楚他们的区别,这里就不再赘述)。

以上所有的属性设置完毕后,跑一下应用,在冷启动的情况下,应用不会出现白屏的情况,取而代之的是预设的背景图骗。

好啦!到这里,我针对自己项目中App启动出现白屏的问题就已经解决了。方法可能不止一种,如果大家有其他好的方法,也希望能跟我交流。

App 冷启动:给 Android 的 Activity 添加一个背景的更多相关文章

  1. Android 向系统添加一个联系人信息contact

    private void writeContacts() { Uri rawContacts = Uri.parse("content://com.android.contacts/raw_ ...

  2. Android给ListView添加一个入场动画

    动画是一个App体现良好交互的一种手段,通常的我们会看到很多App的ListView的Item都有一个入场动画例如: 可以看到,当进入界面加载ListView的Item的时候有一个向左滑动显示,并且淡 ...

  3. Android - 分享内容 - 添加一个简单的分享操作

    在ActionBar上使用ActionProvider实现一个高效的友好的分享操作在Android 4.0(API等级14)上更容易了.一个ActionProvider,一旦附加到action bar ...

  4. android 为activity添加optionMenu选项菜单

    <menu xmlns:android="http://schemas.android.com/apk/res/android"> <group android: ...

  5. android studio Activity标题栏研究

    第一次研究时间:2016/7/30,以下研究主要存在于当前最新版本的android studio上.eclipse请参考 一.头部标题取消 当前版本新建工程在 application中默认主题为 an ...

  6. Android.mk中添加宏定义

    在Boardconfig.mk 中添加一个 IS_FLAG := true 由于Boardconfig.mk和各目录的Android.mk是相互关联的 所以我们可以在Android.mk 中添加 一个 ...

  7. Android.mk中添加宏定义【转】

    本文转载自:http://blog.csdn.net/huangyabin001/article/details/38302021 在Boardconfig.mk 中添加一个 IS_FLAG := t ...

  8. 调用Android自带日历功能(日历列表单、添加一个日历事件)

    调用Android自带日历功能  觉得这篇文章不错,转载过来. 转载:http://blog.csdn.net/djy1992/article/details/9948393 Android手机配备有 ...

  9. 添加一个Android框架层的系统服务与实现服务的回调

    2017-10-09 概述 所谓Android系统服务其本质就是一个通过AIDL跨进程通信的小Demo的延伸而已.按照 AIDL 跨进程通信的标准创建一套程序,将服务端通过系统进程来运行实现永驻内存, ...

随机推荐

  1. Android listview局部刷新和模拟应用下载(zhu)

    在android开发中,listview是比较常用的一个组件,在listview的数据需要更新的时候,一般会用notifyDataSetChanged()这个函数,但是它会更新listview中所有可 ...

  2. 附加、分离数据库和备份、还原数据库的区别(转载于中雪的BLOG)

    备份和恢复的概念: 备份和恢复组件是SQL Server的重要组成部分.备份就是指对SQL Server数据库及其他相关信息进行拷贝,数据库备份记录了在进行备份这一操作时数据库中所有数据的状态,如果数 ...

  3. Android取得电池的电量

    首先需要用到的是一个类继承BrocastReceiver 2 代码如下: public class Battery_Info extends BroadcastReceiver { @Override ...

  4. sicily 4379 bicoloring

    题意:输入一个简单(无多重边和自环)的连通无向图,判断该图是否能用黑白两种颜色对顶点染色,使得每条边的两个端点为不同颜色. 解法:由于无自连通节点存在,所以只需进行一次宽搜,遍历所有的点和所有的边,判 ...

  5. 接上一篇博客(解决-Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variable and mvn script match. )

    解决-Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variabl ...

  6. css(二)

    重新排传智的首页!头部和左边的部分完成了! <!doctype html> <html lang="en"> <head> <meta c ...

  7. SWFLoader交互

    主应用程序: <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx=& ...

  8. Android开发编码规范(自用)

    转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持!   Android开发编码规范 目的及指导原则 目的 统一规范 Eclipse编辑环境 ...

  9. python自动化执行脚本

    ---恢复内容开始--- 1 (1)首先在你的.py文件上加上一行代码注释: #!/usr/local/bin/python2.7 (2)终端下执行: crontab -e 进入后,输入i 进入可编辑 ...

  10. ASP.net 前台页面通过ID获取控件

    asp.net的服务器控件的ID通常只能在服务器端很好的识别,客户端需要通过ClientID获得控件 1.通过js获得   var controlID = "<%=controlID. ...