首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

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

2013-10-22 
Android特效开发(可伸缩View带互相挤压效果)进阶篇本文由manymore13原创,转载请标明出处http://blog.csdn.

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带互相挤压效果)进阶篇



热点排行