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. MFC之CToolTipCtrl按钮提示(消息捕获和消息传递)

    记得以前写对话框时,按钮直接有一个tips属性,可以添加默认值,不记得是C#还是啥了,今天忽然想给几个按钮添加提示信息,就捣鼓了一下. 头文件中创建CToolTipCtrl变量,然后在初始化时激活使用 ...

  2. jquery获取表格中特定列

    jQuery().text() 如果有一个表格,我们要用jquery获取特定列,则需要修改列的索引值就好了,此句代码获取的是页面的第10列

  3. (转)命令行下,用 xcodebuild 生成ipa文件,通过 itms-services 协议安装

    准备工作:已经设置好,xcode中的证书,证书必须是企业级证书,才能通过 itms-services 协议安装 Step 1:  把以下代码保存到一个web目录中,命名为 “auto.plist”,注 ...

  4. jsonp封装

    //jsonp的封装函数 function jsonp(url,parmter,callback){ //创建script标签 var script=document.createElement('s ...

  5. Android两种 旋转Bitmap方法

    方法1. 利用Bitmap.createBitmap Bitmap adjustPhotoRotation(Bitmap bm, final int orientationDegree) {      ...

  6. 尝鲜党:Nexus5、6刷安卓M教程

    说明: 进入recovery的命令:adb reboot recovery 进入bootloader的命令:adb reboot bootloader 概述 F:\Nexus5\AndroidM\ha ...

  7. BNU10792:沙漠旅行者

    有个旅行者计划横穿沙漠,沙漠中水资源很匮乏.旅行者需要依靠补给站的支持,才能横穿整个沙漠.假设所有的补给站都在一条直线上,而且旅行者一定沿着这条直线走.起点在1号补给站,终点在第N号补给站,起点和终点 ...

  8. C#逻辑运算符详解

    代码如下: namespace ConsoleApplication1 { class @class { static void Main_1(string[] args) //输出用户输入的内容 { ...

  9. JavaScript中函数参数的按值传递与按引用传递(即按地址传递)

    首先声明一句:JavaScript中所有函数的参数都是按值传递的!不存在按引用传递! 在讲传递参数之前我们先来讲一下指针. 学过C指针的应该都知道,指针变量中保存的是一个地址,程序可以根据所保存的地址 ...

  10. 用ueditor上传图片、文件等到七牛云存储

    ueditor上传文件,是用数据流的形式上传的. 而七牛云存储官方文档中,只提供了文件路径上传的方式. 但是,仅仅是在官方文档中写了这一种方式. 事实上,利用VS的对象管理器,打开Qiniu的dll, ...