Launcher 动画改造

PagedView.java:继承自viewgroup,主要包含了CellLayout的显示,在功能上主要实现对整体Launcher界面滑动切换桌面的效果,包含滑动的速率,滑动的偏移量,距离等计算以及是否切换到第二屏,或在当屏等场景状态的处理


Workspace.java:继承自PagedView。默认是由5celllaout组成,也可以N个,在Workspac.xml中可以添加桌面的数量,每个桌面是由一个cellLayout组成,以及对更高一级的层面上对事件的处理


CellLayout.java:组成workspaceview,继承自viewgroup,其中的childView包含对每个应用APPShortcut以及Widget.

整体动画分成两部分实现:

一:实现对桌面滑动完成后,每个图标实现从最上第一排开始逐排呈阶梯状到达当前滑动到的桌面。

PagedViewonTouchEventMotionEvent.ACTION_UP后,获取对滑动结束后的如速率,距离,页面距离等的处理,在这里得到计算后的deltaX速率和滑动后位置作为动画开始时间和速度的计算依据传递给自定义的动画实现函数,通过Animation的平移效果通过childView获得每个CellLayoutAPPShortcut,通过设置Animation类的setDurationsetStartOffset()等属性实现滑动结束后,图标逐行阶梯平移的效果。在PagedViewpageBeginMoving()中启动动画。


二:滑动过程中在结束滑动前(即TouchMove_UP前),每个应用的图标随手指移动,从最上第一排横排逐次呈阶梯状向滑动方向移动。

这部分实现主要在ShortcutAndWidgetContainer类中的onLayout中对Shortcut的位置和尺寸进行重绘,当在此方法中得到CellLayout的实例获得由PagedView传递过来的滑动速率和距离再对每个Shortcut重新实现Animation效果,这里有个缺陷就是增加了模块的耦合,但为了保证在滑动中和滑动后两部分动画的平滑过度,需要实时获得同样的速率和距离做为动画起止和速速率,这样保证了滑动中不管手指托动快慢和距离,都可以保证滑动结束后Shortcut动画效果的平滑衔接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值