`
modabobo
  • 浏览: 509307 次
文章分类
社区版块
存档分类
最新评论

安卓开发-动画

 
阅读更多
动画分为三种:
逐帧动画、布局动画和控件动画
-----------------------------
控件动画实现
通过重写Animation的applyTransformation(float interpolatedTime, Transformation t)函数来实现自定义动画效果,另外一般也会实现initialize(int width, int height, int parentWidth, int parentHeight)函数,这是一个回调函数告诉Animation目标View的大小参数,在这里可以初始化一些相关的参数,例如设置动画持续时间、设置Interpolator、设置动画的参考点等。
OPhone在绘制动画的过程中会反复的调用applyTransformation函数,每次调用参数interpolatedTime值都会变化,该参数从0渐变为1,当该参数为1时表明动画结束。通过参数Transformation 来获取变换的矩阵(matrix),通过改变矩阵就可以实现各种复杂的效果。
下面举例说明一个控件动画:
Animation anim = new Animation() {
			@Override
			protected void applyTransformation(float interpolatedTime, Transformation t) {
				if (interpolatedTime == 1) {
					v.setVisibility(View.GONE);
				}
				else {
					v.getLayoutParams().height = initialHeight - (int)(initialHeight * interpolatedTime);
					v.requestLayout();
				}
			}

			@Override
			public boolean willChangeBounds() {
				return true;
			}
		};
例子中,一个view的高度逐渐由原来的高度变为0。当动画结束之后,view消失。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics