App启动页面优化
解决办法:给当前启动页添加一个有背景的style样式
设置style样式如下<style name="SplashTheme" parent="AppTheme"><item name="android:windowBackground">@mipmap/splash</item><item name="android:statusBarColor" tools:ignore="NewApi">@color/white</item><item name="android:windowIsTranslucent">true</item></style>
注意,在清单文件中
<activity android:name=".SplashActivity"android:theme="@style/SplashTheme"><intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity>
经过处理之后App启动时就不会出现一瞬间白屏的效果将主题设置到启动的Activity的主题中,windowBackground就是即将展示的preview window。其中splash可以是一整张图片,它也可以是一个能解析出图片资源的XML文件。该方案注意要点给Preview Window设置的背景图如果不做处理,图片就会一直存在于内存中,所以,当我们进入到欢迎页的时候,不要忘了把背景图设置为空
@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {//将window的背景图设置为空getWindow().setBackgroundDrawable(null);super.onCreate(savedInstanceState);}
这样操作如何屏幕适配呢?这样通过样式style设置SplashActivity加载图,不能像imageView那样可以设置缩放功能,因此可以采用.9图片。以前有开发者采用我的这个建议,直接设置图,没有做适配,也无伤大雅,具体要看UI要求呢!2.3 第二种解决方案禁止加载Preview Window,具体做法如下:
<style name="SplashTheme" parent="@style/Theme.AppCompat.Light.NoActionBar"> <item name="android:windowDisablePreview">true</item></style>
设定为启动的Activity的主题,即可禁止Preview Window,当然,也有人通过把preview window设置为全透明,也达成了类似的效果。个人感觉这种方法没有第一种好!windowDisablePreview的作用通过设置android:windowDisablePreview属性,禁用窗口的预览动画,在SplashActivity显示之前,系统永远不会使用窗口的主题来显示它的预览,这也保证了不会出现白屏或者黑屏。但是,与设置android:windowIsTranslucent属性一样,如果在SplashActivity启动的时候,有过多复杂的操作,就会出现在手机中点击了应用程序的图标,但过n秒才会打开应用程序不好的卡顿体验效果。该方案是否有缺点?这种方法有个小缺点,就是点击后短暂的那几百毫秒没有反应,就好像“假死”了一样,过了一会儿才跳出我们应用程序的第一个Activity,如果你不想让你的 App 有这个短暂“假死”时间,建议使用第一种方法。2.4 注意要点不管是那种方式,都可以解决问题。注意的是有些手机标题栏和状态栏也会影响这两图层的,造成抖动效果,为了避免这种情况需要处理状态栏问题。这里可以直接引用我封装的状态栏库,有兴趣可以了解下,直接拿来用:https://github.com/yangchong211/YCStatusBar03.Application启动速度优化提高app的启动速度,加快Application的执行时间也是一个很重要的方面,这里我暂时总结了几条原则:尽量不将一些业务逻辑放于Application中;Application尽量不以静态变量的方式保存应用数据;若App的大小不是特别大无需使用dex分包方案;在Application中关于文件,数据库等耗时的操作尽量放到IntentService线程中处理不要做有关于循环的操作04.启动页面屏蔽返回按键一般App中都会在启动页面执行一些初始化配置等,所以这时候启动页加载时不希望用户通过按下返回按键退出App,因而可以在启动页中屏蔽返回按键,这里简单的介绍一下具体的实现:
/** * Activity屏蔽物理返回按钮 * * @param keyCode * @param event * @return */@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { return true; } return super.onKeyDown(keyCode, event);}
关于其他内容介绍01.关于博客汇总链接1.技术博客汇总2.开源项目汇总3.生活博客汇总4.喜马拉雅音频汇总5.其他汇总02.关于我的博客我的个人站点:×××w.yczbj.org,×××w.ycbjie.cngithub:https://github.com/yangchong211知乎:https://×××w.zhihu.com/people/yczbj/activities简书:http://×××w.jianshu.com/u/b7b2c6ed9284csdn:http://my.csdn.net/m0_37700275喜马拉雅听书:http://×××w.ximalaya.com/zhubo/71989305/开源中国:https://my.oschina.net/zbj1618/blog泡在网上的日子:http://×××w.jcodecraeer.com/member/content_list.php?channelid=1邮箱:yangchong211@163.com阿里云博客:https://yq.aliyun.com/users/article?spm=5176.100- 239.headeruserinfo.3.dT4bcVsegmentfault头条:https://segmentfault.com/u/xiangjianyu/articles掘金:https://juejin.im/user/5939433efe88c2006afa0c6e
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。