Android天气Demo

来源:互联网 发布:mac python idle 编辑:程序博客网 时间:2024/06/03 10:43

天气预报

这几天做了一个小Demo,用了几个类库,记录一下写的过程中遇到的一些问题和实现的方式,对于第三方的类库使用还不是特别透彻,只做简单介绍。先上Splash效果。

差点忘记打广告了:在找工作,有合适的请留言,不胜感激。

首页

初始界面使用的是墨迹天气的背景,做了点处理,之后找的一个帧动画的素材,使用ImageView+帧动画的形式,实现小人动的效果,横移是属性动画。天上的太阳也是用的属性动画,旋转加透明度,至于按钮,用了一个Shape,加上延时出现,出现效果采用渐变,之后就遇到问题了,我想实现的效果是字体的颜色从透明到淡蓝色,循环效果,还准备加上字体的变大和缩小,这样就会变成一个类似于呼吸灯的效果,现在看到的是用ObjectAnimator实现的字体颜色的变化,不过由于Color从白色到蓝色的变化是RGB的变化,并不是我想的那样,解决方案:采用ValueAnimator,直接对颜色进行更改。改完之后就是这个样子。

看起来有点卡卡的,不过确实跟我最开始设想的效果是一样的,本来还想要实现的就是让小人贴着屏幕边缘走一圈,后来发现实现起来有点费劲,就放弃这个方案了。

问题1: 在小人移动的过程中,我想要获得这个ImageView 的宽度,发现结果在onCreate和onResume中的宽度都是0,无法得到宽度,XML中定义的是warp_content,不知道原因出在哪里。

问题2: 在使用动画的时候因为之前重点关注了下ViewPropertyAnime,想通过这种我想要的效果,不过发现个问题,anime的动画好像不能设置循环效果,难道是在withAnimaEnd中重写一遍?后来还是使用的ObjectAnimator。

主界面

还是先上图(终于会上传gif了)看下效果。

先说一下整体的布局,采用的是PullToRefreshListView作为主体,头部是一个帧布局包含一个线性布局,设置在ListViewde滑动过程中对其透明度进行改变,重新修改了下下拉刷新的显示信息,对上面的view加旋转,右下有一个能显示进度的控件是用的progerssViews,这个类中提供其中不同的显示进度的控件,可以根据自己的需求选择,看到的数据均来自于聚合数据中,整体就这么多。说一下遇到的问题。

问题1: 在使用progressview的时候,由于我使用的是用来显示PM25,但是默认的一圈是100,PM25小于100还好说,大于100就会出现问题,而且北京的PM25有时候会到500+;这就需要对PM25的数值进行分析,采用不同的区间去决定这一圈代表多少,在计算当前的数值。

问题2:在listView获取偏移量的时候遇到问题,通过getScrollY,getY,getTranslationY,等方式之后均为0,无法获得偏移的量,之后百度找到一种方法,就是计算现在是第几个item,之后通过item的高度和之前的item的数量来获取高度,在加上当前显示的第一个的偏移量就能得到listView的偏移量,不过这得是在你知道已经划出屏幕的item的高度才可以。

关于代码就不贴了,如果有用过的一看就知道怎么回事,自己都觉得自己写的low,没有用过的可以去网上下一份,里面都有例子,可以很好的帮助到你。

侧滑

对于侧滑,android中有很多的实现方式,最开始在没有接触别人的东西的时候都是自己写,定义一个布局在左边或者右边,通过按钮的点击,让其执行动画,实现滑入和滑出,之后使用slidingmenu,看了郭神还是鸿洋大神的博客,实现QQ5.0效果,在然后及时使用android官方的DrawerLayout实现侧滑,再之后就是研究了ViewDragHelper这个类,自定义ViewGroup来实现侧滑。方式多种多样,完全可以根据实际情况来达到自己想要的效果,在这个demo中用的是SlindingMenu,就是实现简单的侧滑功能而已。上图。

通过侧滑来改变城市,重新获取数据,更新数据源,而且还改变动画效果,感觉还是挺满意的。

本来还有一个折线图的,但是个人觉得实在是太丑了,就不贴图了,用的是achartengine,用完之后我就已经把它放弃了,实在是不能满足对于美的要求,准备研究研究MR,也会也会写一篇关于MR的博客。

总结

今天的有点少,其实也没什么东西,就是三个第三方的类库的使用,而且也没有深入的研究,所以也不敢随便说些什么,这个项目重点就是对动画,加载数据,和几个常用的下拉刷新,侧滑进行使用。想要源代码的可以留言。

打个广告:在找工作,有合适的请留言,不胜感激。

1 2