从刚入行的时候,接触最多的就是动画,那时候天真的以为,就这四种动画能够做出那么绚丽的APP?,后来才明白自己真的天真,在2016年的时候,那是不管做什么,都想加个动画,后来发现,哇,怎么这么别扭,慢慢的,我疏远了它,觉得不过如此,一直到今天,我们又相遇了,互相注视着,感觉故友重逢,一切都那么顺其自然,为了庆祝再次相遇,我决定今天抽时间单独介绍我的老朋友-----动画。
首先可能刚开发的朋友知道也接触最多的就是tween动画,rotate(旋转),translate(平移),alpha(渐变),scale(伸缩)。我想这个大家用的比较多,首先在res文件目录下件一个animation的文件,然后设置set,这个时候我就可以设置自己想要的动画,当然这些动画也是可以组合的,但是这个不是今天要讲的,今天讲的是属性动画,为什么会有属性动画?在Android3.0之前,我们都是用的tween动画,但是tween动画有一个重要的缺点,就是对于点击事件的处理,我们知道tween动画只是改变控件的的绘制,动画之后处理点击事件还是原位置的view,不能支持自定义view的动画,所以引申出了属性动画。
属性动画,顾名思义是改变控件的属性来实现的效果,首先,我们如何创建属性动画,下面一起来看看
首先我们可以看到,通过ofInt()函数获取到属性动画的对象,那么ofint()这个函数到底是干嘛的呢?看过源码就只到,首先会在内部直接new一个ValueAnimator对象,然后将传入的参数放入新建的对象中,然后返回这个对象,这个参数到底是什么呢?我们继续看源码,源码对参数介绍说的是动画将在给定的参数值之间执行动画,那么我们知道了,这个类似于tween动画中的fromx,tox,监听事件中可以看到,参数是重复的动画对象,那么执行动画就由这个animation来执行的,那么animation.getAnimatedFraction()是做什么的呢,源码中是这样解释的,
获取当前动画执行到的部分,很好理解,就是动画当前进度的百分比。如果我们想获取当前动画执行的值,那么获取value,然后给想要控件设置这个值,,动画就完成了。
以上动画可以做折叠效果箭头的旋转,可以做基金数字的翻滚,
是不是很炫?别着急,还有一种更炫的效果-----转场动画,可能有人没听到,但是很多场景都会用到,比喻列表跳详情页,这个看似简单的需求,加上这个动画,让逼格瞬间膨胀起来。那么我来看看转场动画是如何使用的,
startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this,
Pair.create(tv_order_code,"share"),//需要共享的控件
Pair.create(tv_total,"tv_total"),//
Pair.create(tvcurrent,"top_view")//每个共享控件的key --value
).toBundle());
}
然后在activity的oncreat方法中执行getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS),那么整个页面在跳转过程中就会出现转场动画。
网友评论