效果图
项目说明
1. 适配
广告机的屏幕分辨率为 1920 * 1080,我在做项目的时候不可能实时的将APP刷上去Debug(因为广告机得有2吨重,而且开机就得半天...),所以这个项目得适配所有的屏幕。
各位请看效果图,图上一共有9个图块,可以用表格形式分成 5 * 3的形式 (5行3列)。
想要做到在 800 * 400 的手机上显示效果和 1920 * 1080 的一样,除了使用 LinearLayout 暂时没有想到其他的办法,因为它有一个设置权重的属性 Weight
如果不了解,请看 的详细介绍。
这样,就做到了不管是在什么分辨率下面,都能分成 5 * 3的形式 , 9个图块,其中2个大的占了 2 * 2 ,其他7个都是是 1 * 1,请看下图标红部分
2. 前台效果
需求是这样的,获取到图片数据后,将最新的图片插入到第一个格子,其他的图片向右边挤,等于说是在UI层上整体做一个无缝连接的右移动画,动画时间为2s,动画方向走的是Z字型。
效果图:
3. 后台效果
后台负责从服务器获取轮询,获取最新的图片数据。
检查有没有最新的图片
- 没有,继续轮播当前缓存的图片
- 有,下载完毕,插入第一个模块及时显示
当然,还有一个问题就是,当图片太多时,缓存在内存中是否不合适,是否会导致OOM?
答案是肯定的,所以我在做的时候,就想到了解决方案,直接将图片下载之后存到SD卡上,只是在内存中缓存一个图片名称的List<String>
这个List的前八张图片将传到前台作为展示,所以我们要对这个List不断的操作
4. 开源库的使用
我做项目一直喜欢用 androidannotations,它可以通过注解快速开发应用,而且体积也很小,功能也够全面。详见
Ion是一个链式风格的网络框架,在我看来还有点小缺陷,即不能自己指定request method(get | post | delete),只能通过它的API调用来确定请求的method ,貌似现在只支持 Get 和 Post,但在这个项目里使用,是完全足够用的,它基于androidasync,由于服务器传输的数据格式是基于JSON,Ion支持Gson,所以果断加上。详见
Otto相信用过的人不少了,Otto是由Square发布的一个着重于Android支持的基于Guava的强大的事件总线,在对应用程序不同部分进行解耦之后,仍然允许它们进行有效的沟通。这里我用它来做后台和前台之间的桥梁。详见
有了这些开源框架的支持以后,就能快速的进行开发了!
这里是Freestyletime@foxmail.com,欢迎交流。
本人原创作品,转载请标明出处。