1.Tween动画简介:Tween动画主要通过进行图形矩阵变换,camera投影,和透明度变换来实现动画效果。
主要实现有以下四个子类
AlphaAnimation:明暗变换动画
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<alpha
android:fromAlpha="0.1"
android:toAlpha="1.0"
android:duration="2000"
/>
</set>
ScaleAnimation:图像缩放动画
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale
android:interpolator="@android:anim/accelerate_decelerate_interpolator"

android:fromXScale="0.5"
android:toXScale="1.0"

android:fromYScale="0.5"
android:toYScale="1.0"

android:pivotX="175"
android:pivotY="118"

android:fillAfter="false"
android:duration="500" />
</set>
TranslateAnimation:移动动画
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="10"
android:toXDelta="100"
android:fromYDelta="10"
android:toYDelta="100"
android:duration="1000"
/>
</set>
RotateAnimation:旋转动画
<set xmlns:android="http://schemas.android.com/apk/res/android">

<rotate
android:interpolator="@android:anim/accelerate_decelerate_interpolator"

android:fromDegrees="0"
android:toDegrees="+360"

android:pivotX="350"
android:pivotY="235"

android:duration="1000" />
</set>
2.属性说明
android:duration="2000"//动画时长,毫秒
android:fromAlpha="0.1"//开始透明度
android:toAlpha="1.0"//结束透明度
android:fromXScale="0.5"//坐标x开始比例
android:toXScale="1.0"//坐标x结束比例
android:fromYScale="0.5"//坐标y开始比例
android:toYScale="1.0"//坐标y结束比例
android:pivotX="175"//坐标轴心,在旋转和缩放使用该属性
android:pivotY="118"
android:fromXDelta="10"//位移动画x和y坐标开始和结束点
android:toXDelta="100"
android:fromYDelta="10"
android:toYDelta="100"
android:fillAfter="false"//是否把view放在结束位置
android:interpolator//指定动画插入器,常见动画插入器:
accelerate_decelerate_interpolator
加速-减速 动画插入器
accelerate_interpolator
加速-动画插入器
decelerate_interpolator
减速- 动画插入器
其他的属于特定的动画效果
3.效果组合,可以在配置文件中组合各种动画,透明度变化和旋转变化组合如下:
<set
xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
android:fromAlpha="0.1"
android:toAlpha="1.0"
android:duration="2000" />
<rotate
android:interpolator="@android:anim/accelerate_decelerate_interpolator"

android:fromDegrees="0"
android:toDegrees="+360"

android:pivotX="350"
android:pivotY="235"

android:duration="2000" />
</set>
4.使用动画
1.新建Animation对象,可查看不同Animation类的构造函数,新建,并设置相关值,如动画时长
2.通过布局文件构造动画:animaTemp = AnimationUtils.loadAnimation(context, R.anim.push_up_out_not_alpha);布局文件如我前面给的例子
3.开始动画:View.startAnimation可以开始一个view的动画
5.动画原理,理解动画的原理先要理解android view的树形结构,android中的每个view都是建立在父view上的除了activity的rootview外,每个view在调用完自己的draw方法后,会调用dispatchDraw通知调用子view的绘制,Animation就是通过设定绘制子view不断变化的坐标位置,view大小,透明度等,并且在动画时间内不断重复绘制子view,实现动画效果,view的透明度变化是通过设置alpha值,而图像变化是通过animation的变换矩阵实现的,Animation.getMatrix可获取动画的变换矩阵,对变换矩阵进行变换,就可以达到动画效果。
6.自定义Tween动画,有时候需要实现一些特殊的效果,上面四种动画都不能够实现,就需要自定义Animation类,实现applyTransformation方法,对alpha值进行设置,和对变换矩阵进行变化,
7.投影变换,getMatrix获取的Matrix矩阵只能够进行缩放,xy移动旋转,不能够进行3d效果的一些变换,要实现3d效果的变换,就需要使用Camera类对矩阵进行3d投影变换,如z轴平移,x,y,z轴旋转。
如apidemos中Rotate3dAnimation进行y轴旋转变化:
final Camera camera = mCamera;

final Matrix matrix = t.getMatrix();

camera.save();
if (mReverse) {
camera.translate(0, degrees,0f);
} else {
camera.translate(0, degrees, 0f);
}
camera.getMatrix(matrix);
camera.restore();
8.动画顺序组合,有时候需要先后多个动画实现效果,如Rotate3dAnimation中画面的3d旋转,旋转到90度的时候需要切换动画这个时候就需要进行动画顺序组合,这个是通过动画生命周期监听器来实现的,该监听器需要实现接口Animation.AnimationListener,Animation通过调用方法setAnimationListener设置监听器:
private final class DisplayNextView implements Animation.AnimationListener {
private final int mPosition;

private DisplayNextView(int position) {
mPosition = position;
}

public void onAnimationStart(Animation animation) {
//动画开始
}

public void onAnimationEnd(Animation animation) {
//动画结束
mContainer.post(new SwapViews(mPosition));
}

public void onAnimationRepeat(Animation animation) {
//动画重复播放时
}
}

更多相关文章

  1. Android(安卓)Frame Animation 帧动画不播放问题。
  2. Android解码/显示/播放Gif图片动画
  3. Android属性动画---Property Animation(四)
  4. 动画效果编程基础
  5. android动画详解
  6. android之animation(一)
  7. Android(安卓)Interpolators
  8. android opengl es 2.0 draw circle
  9. android animation动画效果的两种实现方式

随机推荐

  1. Android利用addr2line分析traces.txt
  2. Google Map API V2
  3. Android(安卓)学习笔记——旋转模拟器方
  4. Android(安卓)Jetpack -- Lifecycle
  5. Android(安卓)Browser 支持屏蔽webaudio
  6. Android(安卓)init.rc BOOTCLASSPATH
  7. 【Android(安卓)消息处理】Handler、Loop
  8. Android原生分享图片和视频
  9. android ultredit smali语法加亮
  10. Android线程优先级规定及其设置的具体方