实现墨迹天气向上滑动的viewpager使用的开源库ViewPager-Android。ViewPager-Android开源库设置app:orientation定义滑动方向。

墨迹天气引导界面共有4个视图,先看一下:(这里引入的图片都是实现后的,截图都是静态图,运行程序看动画效果)。

                

图一                                                                                          图二

                

图三                                                                                        图四

图一动画效果:

图一中有四个动画效果,最上面的“极低耗电”标示,最下面的箭头标示,还有中间旋转的电池图标和电子表的闪动,最上面的使用的渐变尺寸(scale)动画效果:

[html] view plain copy print ?
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <set xmlns:android="http://schemas.android.com/apk/res/android" >
  3. <scale
  4. android:duration="2000"
  5. android:fillAfter="false"
  6. android:fromXScale="0.0"
  7. android:fromYScale="0.0"
  8. android:interpolator="@android:anim/accelerate_decelerate_interpolator"
  9. android:pivotX="50%"
  10. android:pivotY="50%"
  11. android:toXScale="1.1"
  12. android:toYScale="1.1" />
  13. </set>

下面简单说明了scale的各个属性:

[plain] view plain copy print ?
  1. <!-- 尺寸伸缩动画效果 scale
  2. 属性:interpolator 指定一个动画的插入器
  3. 常见动画插入器:
  4. accelerate_decelerate_interpolator  加速-减速 动画插入器
  5. accelerate_interpolator        加速-动画插入器
  6. decelerate_interpolator        减速- 动画插入器
  7. anticipate_interpolator 先回退一小步然后加速前进
  8. anticipate_overshoot_interpolator   在上一个基础上超出终点一小步再回到终点
  9. bounce_interpolator 最后阶段弹球效果
  10. cycle_interpolator  周期运动
  11. linear_interpolator 匀速
  12. overshoot_interpolator  快速到达终点并超出一小步最后回到终点
  13. 浮点型值:
  14. fromXScale 属性为动画起始时 X坐标上的伸缩尺寸
  15. toXScale   属性为动画结束时 X坐标上的伸缩尺寸
  16. fromYScale 属性为动画起始时Y坐标上的伸缩尺寸
  17. toYScale   属性为动画结束时Y坐标上的伸缩尺寸
  18. 说明:
  19. 以上四种属性值
  20. 0.0表示收缩到没有
  21. 1.0表示正常无伸缩
  22. 值小于1.0表示收缩
  23. 值大于1.0表示放大
  24. pivotX     属性为动画相对于物件的X坐标的开始位置
  25. pivotY     属性为动画相对于物件的Y坐标的开始位置
  26. 说明:
  27. 以上两个属性值 从0%-100%中取值
  28. 50%为物件的X或Y方向坐标上的中点位置
  29. 长整型值:
  30. duration  属性为动画持续时间
  31. 说明:   时间以毫秒为单位
  32. 布尔型值:
  33. fillAfter 属性 当设置为true ,该动画转化在动画结束后被应用
  34. -->

最下面的箭头标示使用了混合动画:

[html] view plain copy print ?
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <set xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:repeatMode="reverse" >
  4. <translate
  5. android:duration="1000"
  6. android:fromXDelta="0"
  7. android:fromYDelta="-15"
  8. android:repeatCount="infinite"
  9. android:toXDelta="0"
  10. android:toYDelta="20" />
  11. <alpha
  12. android:duration="1000"
  13. android:fromAlpha="1.0"
  14. android:repeatCount="infinite"
  15. android:toAlpha="0.3" />
  16. </set>

混合动画是set集合,包含了平移动画(translate)和渐变动画(alpha),对这两动画简单说明:

[plain] view plain copy print ?
  1. <alpha
  2. android:duration="1000"
  3. android:fromAlpha="1.0"
  4. android:repeatCount="infinite"
  5. android:toAlpha="0.3" />
  6. <!--
  7. 透明度控制动画效果 alpha
  8. 浮点型值:
  9. fromAlpha 属性为动画起始时透明度
  10. toAlpha   属性为动画结束时透明度
  11. 说明:
  12. 0.0表示完全透明
  13. 1.0表示完全不透明
  14. 以上值取0.0-1.0之间的float数据类型的数字
  15. 长整型值:
  16. duration  属性为动画持续时间
  17. 说明:
  18. 时间以毫秒为单位
  19. 整型值:
  20. repeatCount:重复次数
  21. 说明:
  22. infinite:循环执行,
  23. 具体正整数表示循环次数
  24. repeatMode:重复模式,
  25. 说明:
  26. restart:重新从头开始执行
  27. reverse:反方向执行
  28. -->
[plain] view plain copy print ?
  1. <translate
  2. android:duration="1000"
  3. android:fromXDelta="0"
  4. android:fromYDelta="-15"
  5. android:repeatCount="infinite"
  6. android:toXDelta="0"
  7. android:toYDelta="20" />
  8. <!-- translate 平移动画效果
  9. 整型值:
  10. fromXDelta 属性为动画起始时 X坐标上的位置
  11. toXDelta   属性为动画结束时 X坐标上的位置
  12. fromYDelta 属性为动画起始时 Y坐标上的位置
  13. toYDelta   属性为动画结束时 Y坐标上的位置
  14. 注意:
  15. 没有指定fromXType toXType fromYType toYType 时候,
  16. 默认是以自己为相对参照物  ,默认参考物最重要
  17. 长整型值:
  18. duration  属性为动画持续时间
  19. 说明:   时间以毫秒为单位
  20. gt;

中间的电池动画使用了旋转(rotate)动画和渐变尺寸动画的组合:

[html] view plain copy print ?
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <set xmlns:android="http://schemas.android.com/apk/res/android" >
  3. <scale
  4. android:duration="800"
  5. android:fillAfter="false"
  6. android:fromXScale="0.0"
  7. android:fromYScale="0.0"
  8. android:interpolator="@android:anim/accelerate_decelerate_interpolator"
  9. android:pivotX="50%"
  10. android:pivotY="50%"
  11. android:toXScale="1.2"
  12. android:toYScale="1.2" />
  13. <rotate
  14. android:duration="3000"
  15. android:fromDegrees="0"
  16. android:pivotX="50%"
  17. android:pivotY="50%"
  18. android:repeatCount="-1"
  19. android:toDegrees="359.0" />
  20. </set>

前面介绍了渐变尺寸动画,下面只介绍旋转动画:

[plain] view plain copy print ?
  1. <rotate
  2. android:duration="3000"
  3. android:fromDegrees="0"
  4. android:pivotX="50%"
  5. android:pivotY="50%"
  6. android:repeatCount="-1"
  7. android:toDegrees="359.0" />
  8. <!-- rotate 旋转动画效果
  9. 属性:interpolator 指定一个动画的插入器
  10. 浮点数型值:
  11. fromDegrees 属性为动画起始时物件的角度
  12. toDegrees   属性为动画结束时物件旋转的角度 可以大于360度
  13. 说明:
  14. 当角度为负数——表示逆时针旋转
  15. 当角度为正数——表示顺时针旋转
  16. (负数from——to正数:顺时针旋转)
  17. (负数from——to负数:逆时针旋转)
  18. (正数from——to正数:顺时针旋转)
  19. (正数from——to负数:逆时针旋转)
  20. pivotX     属性为动画相对于物件的X坐标的开始位置
  21. pivotY     属性为动画相对于物件的Y坐标的开始位置
  22. 说明:        以上两个属性值 从0%-100%中取值
  23. 50%为物件的X或Y方向坐标上的中点位置
  24. 长整型值:
  25. duration  属性为动画持续时间
  26. 说明:       时间以毫秒为单位
  27. -->

电子表闪动动画使用animation-list实现的逐帧动画:

[html] view plain copy print ?
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <animation-list xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:oneshot="false" >
  4. <!--
  5. 根标签为animation-list,其中oneshot代表着是否只展示一遍,设置为false会不停的循环播放动画
  6. 根标签下,通过item标签对动画中的每一个图片进行声明
  7. android:duration 表示展示所用的该图片的时间长度
  8. -->
  9. <item
  10. android:drawable="@drawable/tutorial1_icon1"
  11. android:duration="200"/>
  12. <item
  13. android:drawable="@drawable/tutorial1_icon2"
  14. android:duration="200"/>
  15. </animation-list>

Anima启动:

[java] view plain copy print ?
  1. t1_icon1.setImageResource(R.drawable.t1_frame_animation);
  2. t1_icon1_animationDrawable = (AnimationDrawable) t1_icon1
  3. .getDrawable();
  4. t1_icon1_animationDrawable.start();

图二动画效果:

图二中最上面的“极小安装”动画和最下面的箭头动画和图一中一样,不做过多介绍,中间动画使用的尺寸渐变动画,和图一中的尺寸渐变动画一样,也不多介绍。

图三动画效果:

图二中最上面的“极速流畅”动画和最下面的箭头动画和图一中一样,不做过多介绍。中间效果使用了云移动效果使用了平移动画,火箭喷气效果使用了animation-list的逐帧动画。逐帧动画就不多说了,这里的平移动画没有使用xml文件实现,使用的java代码,为了适配多种屏幕,需要计算平移的初始位置,代码定义了几个位置:

[java] view plain copy print ?
  1. view3.getViewTreeObserver().addOnGlobalLayoutListener(
  2. new OnGlobalLayoutListener() {
  3. @Override
  4. public void onGlobalLayout() {
  5. // TODO Auto-generated method stub
  6. int h1 = centerLayout.getTop();
  7. int h2 = centerLayout.getBottom();
  8. DensityUtil densityUtil = new DensityUtil(
  9. MainActivity.this);
  10. int w = densityUtil.getScreenWidth();
  11. fx1 = t3_icon2.getTop() + t3_icon2.getHeight();
  12. fy1 = -t3_icon2.getTop() - t3_icon2.getHeight();
  13. tx1 = -t3_icon2.getWidth() - t3_icon2.getLeft();
  14. ty1 = t3_icon2.getTop() + t3_icon2.getLeft()
  15. + t3_icon2.getWidth();
  16. fx2 = t3_icon3.getTop() + t3_icon3.getHeight();
  17. fy2 = -t3_icon3.getTop() - t3_icon3.getHeight();
  18. tx2 = -t3_icon3.getWidth() - t3_icon3.getLeft();
  19. ty2 = t3_icon3.getTop() + t3_icon3.getLeft()
  20. + t3_icon3.getWidth();
  21. fx3 = w - t3_icon4.getLeft();
  22. fy3 = -(w - t3_icon4.getLeft());
  23. tx3 = -(h2 - h1 - t3_icon4.getTop());
  24. ty3 = h2 - h1 - t3_icon4.getTop();
  25. fx4 = w - t3_icon5.getLeft();
  26. fy4 = -(w - t3_icon5.getLeft());
  27. tx4 = -(h2 - h1 - t3_icon5.getTop());
  28. ty4 = h2 - h1 - t3_icon5.getTop();
  29. }
  30. });

图四动画效果:

图四中“墨迹天气3.0”图片使用了RotateAnimation,动画插值器使用的CycleInterpolator,“全面革新 我是极致控”使用的渐变尺寸动画。

[java] view plain copy print ?
  1. int pivot = Animation.RELATIVE_TO_SELF;
  2. CycleInterpolator interpolator = new CycleInterpolator(3.0f);
  3. RotateAnimation animation = new RotateAnimation(0, 10, pivot,
  4. 0.47f, pivot, 0.05f);
  5. animation.setStartOffset(500);
  6. animation.setDuration(3000);
  7. animation.setRepeatCount(1);// Animation.INFINITE
  8. animation.setInterpolator(interpolator);
  9. t4_icon1.startAnimation(animation);

上面基本实现了墨迹天气的动画效果。

资源库下载:http://download.csdn.net/detail/xyz_lmn/7094071

demo下载看回复

案例apk下载

墨迹天气3.0引导动画相关推荐

  1. Android UI开发第四十一篇——墨迹天气3.0引导界面及动画实现

    周末升级了墨迹天气,看着引导界面做的不错,模仿一下,可能与原作者的代码实现不一样,但是实现的效果还是差不多的.先分享一篇以前的文章,android动画的基础知识,<Android UI开发第十二 ...

  2. 墨迹天气电脑版官方版 v1.0.1.5 最新版​

    墨迹天气电脑版官方版 v1.0.1.5 最新版 软件大小:7.35MB 软件语言:简体中文 软件类别:应用其他 软件授权:官方版 更新时间:2015-03-02 应用平台:/Win8/Win7/Win ...

  3. (4.0.24.2)Android之桌面组件App Widget案例之高仿墨迹天气桌面组件

    相信墨迹天气,大家都见过,他在时间显示和天气界面上,很吸引人,今天我就来模仿一下墨迹天气的桌面组件,但是由于谷歌在天朝频频被墙的缘故,所以我在今天测试的时候,解析xml文件的网页打不开,所以天气显示出 ...

  4. 默认墨迹天气 下雪效果

    WeatherAnimationDemo 项目地址:KitTak/WeatherAnimationDemo 简介:默认墨迹天气 下雪效果 模仿墨迹下雪效果 在布局中直接通过自定义 SurfaceVie ...

  5. 高仿墨迹天气“我”页面

    看到墨迹天气的"我"页面比较炫酷,处于好奇,就写了一个demo模仿一下. 1,实现效果 实现的效果分三个部分来说明,首先是下拉到最大高度,个人信息界面会产生一个回弹的效果,然后是滚 ...

  6. 高仿墨迹天气 白天晴天

    简介 一直对墨迹天气的绚丽的场景蛮感兴趣的,趁有时间,自己就高仿了其中的一个场景,其他场景呢,也是类似的,主要是写对象的AI也就是逻辑了. 先看看效果吧,动态效果比较坑,太模糊 高清图 代码分析 来看 ...

  7. 天气类APP产品微体验(墨迹天气、中央天气预报、雅虎天气、2345天气王)

    这几天简单体验了几个天气类APP,分别是墨迹天气.中央天气预报.天气预报.2345天气王.雅虎天气. 一.产品微体验 1.墨迹天气(总榜137分类第一) 全球约5亿人在使用的天气APP,支持196个国 ...

  8. 似墨迹天气 widget翻页时钟实现

    实现widget时钟翻页效果,类似墨迹天气: 比较简单的方法是 帧动画方式实现,但需要很多的图片资源,每次切换都需要三张图,放弃此种方法. 墨迹天气的实现方法: 通过基本的图片每次在时间切换时动态生成 ...

  9. 墨迹天气接口html,moji_weather_spider.py

    #coding = utf-8 ''' 程 序 名:墨迹天气爬虫 编 写 人:bxgj 运行环境:win7x64 Python3.6.4 修改日志:2018.09.09 新建 2018.09.10 ...

最新文章

  1. 高并发的核心技术 - 幂等的实现方案
  2. linux日期日增,Linux日期
  3. 利用反射及ActionFilterAttribute实现MVC权限管理
  4. hi3559 h264
  5. JQuery仿最新淘宝网首页带箭头幻灯片,JQuery轮播图
  6. java打印系统参数_Java学习(二十):获取系统参数
  7. 亿级用户下的新浪微博平台架构阅读心得
  8. redis管道的使用
  9. [剑指offer]面试题22:栈的压入、弹出序列
  10. addr 与 offset 异同
  11. navicat 简体中文破解版
  12. php留言板制作模板,简单5步,制作wordpress留言板
  13. 【问题】微信小程序设置bindinput事件没有反应
  14. git 和gitHup工具笔记的详细教程
  15. linux 域名解析 命令,Linux动态域名解析命令脚本
  16. python爬取英雄联盟所有皮肤_python爬取lol英雄皮肤
  17. eighth week(1)
  18. RationalDMIS 7.1 手动测量特征注意事项
  19. C语言task的用法,C# Task 用法
  20. 怎么将计算机的触摸鼠标锁定,戴尔电脑怎么将触控板锁定?

热门文章

  1. 完整的境外、港澳台、电信、移动、联通、教育网、国内其他ISP的IPv4列表(数据整理日期2022年4月)-IP列表太长只能份2篇发布(1/2)
  2. 简历优化实战案例01:工作经历篇
  3. 基于STM32F4的CANOpen移植教程(超级详细)
  4. python5.网络爬虫
  5. PHP代码审计系统—RIPS
  6. excel如何提取单元格中的数字
  7. 2023 闲鱼扫码自动收货跳转支付宝HTML源码
  8. java entropy_java面试
  9. Machine Learning | (1) Scikit-learn与特征工程
  10. GPS导航电文——第二子帧数据解析