Android 照片墙

效果图

Android 照片墙_第1张图片

 

项目说明

1. 适配

广告机的屏幕分辨率为 1920 * 1080,我在做项目的时候不可能实时的将APP刷上去Debug(因为广告机得有2吨重,而且开机就得半天...),所以这个项目得适配所有的屏幕。

各位请看效果图,图上一共有9个图块,可以用表格形式分成 5 * 3的形式 (5行3列)。

想要做到在 800 * 400 的手机上显示效果和 1920 * 1080 的一样,除了使用 LinearLayout 暂时没有想到其他的办法,因为它有一个设置权重的属性 Weight

如果不了解,请看 http://stephen830.iteye.com/blog/1142956 的详细介绍。

                        

这样,就做到了不管是在什么分辨率下面,都能分成 5 * 3的形式 , 9个图块,其中2个大的占了 2 * 2 ,其他7个都是是 1 * 1,请看下图标红部分

 Android 照片墙_第2张图片

 

2. 前台效果

 需求是这样的,获取到图片数据后,将最新的图片插入到第一个格子,其他的图片向右边挤,等于说是在UI层上整体做一个无缝连接的右移动画,动画时间为2s,动画方向走的是Z字型。

                

效果图:

 Android 照片墙_第3张图片

                        

3. 后台效果

后台负责从服务器获取轮询,获取最新的图片数据。

检查有没有最新的图片

- 没有,继续轮播当前缓存的图片

- 有,下载完毕,插入第一个模块及时显示

当然,还有一个问题就是,当图片太多时,缓存在内存中是否不合适,是否会导致OOM?

答案是肯定的,所以我在做的时候,就想到了解决方案,直接将图片下载之后存到SD卡上,只是在内存中缓存一个图片名称的List<String>

这个List的前八张图片将传到前台作为展示,所以我们要对这个List不断的操作

4. 开源库的使用

 Android 照片墙_第4张图片

我做项目一直喜欢用 androidannotations,它可以通过注解快速开发应用,而且体积也很小,功能也够全面。详见http://androidannotations.org/

Ion是一个链式风格的网络框架,在我看来还有点小缺陷,即不能自己指定request method(get | post | delete),只能通过它的API调用来确定请求的method ,貌似现在只支持 Get 和 Post,但在这个项目里使用,是完全足够用的,它基于androidasync,由于服务器传输的数据格式是基于JSON,Ion支持Gson,所以果断加上。详见https://github.com/koush/ion

Otto相信用过的人不少了,Otto是由Square发布的一个着重于Android支持的基于Guava的强大的事件总线,在对应用程序不同部分进行解耦之后,仍然允许它们进行有效的沟通。这里我用它来做后台和前台之间的桥梁‍。详见 https://github.com/square/otto

 

有了这些开源框架的支持以后,就能快速的进行开发了!

 

这里是[email protected],欢迎交流。

本人原创作品,转载请标明出处。

你可能感兴趣的:(android,动画,照片墙)