启动页+广告页实现优化

前言

每个app中都有启动+广告这个功能逻辑,或多或少,每个公司的逻辑都不大一样,最近我优化了一版广告业+启动页面逻辑,遇到了一些问题,同大家分享一下

流程图

image.png

优化

我们在启动页面的时候如果直接把"启动图"写在Launcher的activity里面就会出现打开的一瞬间出现白屏现象,所以我们需要针对launcher对应的activity在AndroidManifest.xml中设置一个属于他自己的theme,设置一个windwoBackground,本人代码如下:


同时尽量不要再Application里面写一些耗时操作,比如handler等待,静态操作,轮询等耗时操作,以免点击app的时候给用户造成卡顿的错觉,尽量写一个静态的类,然后在launcher的初始化的时候赋值一下就OK

代码

广告业比较特殊,上面是一张图片,下面是我方的一个logo图.图片框架用的Glide,项目运行应该是不正常的,请看下方问题+解决来修改项目,以确保正确运行,也是为了让读者发现并且知道这个问题.以防以后出现这种问题花费时间解决.

项目Github地址

问题+解决

Glide加载图片加载不出来,listener回调也没有走到成功或者失败的回调函数中.开始我以为是Glide的配置有问题,我查看Glide日志也没有发现任何问题,经过层层排查,最后将问题锁定在高度绘制,我们都知道Glide绘制是需要有宽高的,但是因为开始需要显示启动页,广告页加载出来才可以显示广告页,所以我把广告页面的布局Gone.然后我看LinearLayout的源码发现
image.png

如果等于Gone竟然不去绘制View的高度,RelativeLayout也同样,大家可以去看一下,我果断把Gone改成了invisible,结果发现还是不显示,然后我去打印,结果发现高度还是为0,接着查看源码结果发现子View里面设置了weight,也没办法获取高度,我果断改成RelativeLayout,结果好使了,问题就是这些,但是我解决了好半天,最后感觉还是没事儿多看看源码,好使

修改

大家下载了Demo 的话,需要把 activity_splash.xml 里面的LinearLayout修改成RelativeLayout,并且把ImagView的weight去掉,然后用marginBottom设置距下面的距离,这样就是一个完整的启动页+广告页的完整项目.

你可能感兴趣的:(启动页+广告页实现优化)