对android中动画的简单理解及对NotBoringActionBar效果的简单分析

      

        备注:NotBoringActionBar效果:github地址

  1. 效果的实现原理:

         在布局中header和listview帧布局排列,header有一个默认高度,给listview设置一个与header等高空布局的headerview。

         listview滑动的时候,计算listview的滑动距离,利用view'的setTranslationY特性将headerview移动等距离同时利用这个距离、demo中的imagview、还有系统actionbar中的

   actionbarimageview计算demo中imageview的setTranslationY、setscaleX等值进行动画处理。

         效果巧妙的利用了listview的headerview空布局和系统actionbar的特性做动画效果。

2. setTranslationY和setTranslationX解析:

      setTranslationY: 设置view相当于上边界(top属性)的属相平移距离。

      setTranslationX:设置view相当于左边界(left属性)的横向平移距离。

      此二种移动都是基于android系统坐标系的(以左上角为00)。

3. setScaleX:设置viewX轴上的缩放

    setScaleY: 设置viewY轴上的缩放

    此二种缩放或造成view的移动,所以通常2和3一起使用,不会在view的缩放的过程中造成view的偏移。

4. listview的高度计算:

       1. 对于此demo:利用header的高度和listview的显示item进行计算:

              显示item为0时:listview第一个view的top既是listview的滑动距离,即listview.getchildernat(0).gettop()。

             显示item不为0时:listview.getchildernat(0).gettop() + header.getheight() + firstvisibleitem * listview.getchildernat(0).getheight();

       2. 除去header。getheight()既是普通listview的滑动距离的计算方法。

5. 效果中对于动画速率的运用很巧妙,特别是listview的滑动距离与header的高度的比值和动画速率和scale中的0和1保持一致,这个设计很巧妙。

6. scale的计算:计算是用demo的header中imagview和actionbar中actionbarimagview的宽度、高度、top、left、right、bottom计算。

7、 demo中的计算都是估算的,并不是精确计算。

在此基础上,修改了一个动画效果:在listview滑动的过程中,textview直接滑动到actionbar中展示(不适用actionbar中的默认titleview)下载链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值