读书人

Android奇效开发(可伸缩View带互相挤

发布时间: 2013-10-22 16:17:03 作者: rapoo

Android特效开发(可伸缩View带互相挤压效果)进阶篇

本文由manymore13原创,转载请标明出处http://blog.csdn.net/manymore13/article/details/12907969


上一篇 Android特效开发(可伸缩View带互相挤压效果 )初级篇

在上一篇文章末尾我提出了三点不足 ,遂本篇主要是为了解决上篇的不足之处。

对于上一篇的不足之处 有三点 :

1. 特效动画死板,变化速度死板;

2. 特效动画不能设置动画时间,如遇到高分辨率的机型,动画时间会变长。

3. view只能水平伸缩,不能竖直伸缩。


对于第一点不足之处变化速度死板,我立马想到了Android中Interpolator类,对于做过Android中动画的同学

来说,这个类应该并不陌生,该类可以改变动画的变化速率,它的直接子类中有

BounceInterpolator 弹球效果

AccelerateInterpolator 加速

LinearInterpolator 匀速

更多子类可请查阅Android开发文档

它有个getInterpolation (float input) 方法,你可以传入动画消逝时间值(input范围 [0,1] ),0代表开始,1代表

结束,获取变化速率。等会儿代码中有用到这个类。

有关插值器可参考: android动画(一)Interpolator

对于第一二三点不足,我写了辅助类StretchAnimation可以解决。欢迎批评指正。

StretchAnimation只负责view水平拉伸或者垂直拉伸。你可以设置动画的时间,你可以设置它的插值器,改变动

画的效果。下面该类的实现过程。

Android奇效开发(可伸缩View带互相挤压效果)进阶篇


不同插值器运行效果不一样,上面是垂直动画效果

下面我们只需简单的三步就可以实现水平效果

1. measureSize(screentWidth);你可以设置屏幕宽度,例如上面我这个大小设置的是屏幕的高度,所以四个按钮就占屏幕的高度。

2. StretchAnimation实例化时修改 StretchAnimation.TYPE.horizontal 水平效果

3. 修改XML布局Linearlayout属性 android:orientation="horizontal" 水平

修改后的水平动画效果:

Android奇效开发(可伸缩View带互相挤压效果)进阶篇

本篇相对于上一篇来说算是加强版 。水平伸缩动画和垂直伸缩动画可轻松转换,相对于上一篇增加对动画的控制

功能。可以控制动画时间,而动画时间不会因分辨率的增加而改变;通过改变动画的速率可实现不同的动画效果,弹

球效果,加速,匀速效果等等。

对上述代码稍作修改就可以实现如下效果,这种效果用到插值器 AccelerateDecelerateInterpolator

Android奇效开发(可伸缩View带互相挤压效果)进阶篇



读书人网 >Android

热点推荐