多媒体之动画详解
扫描二维码
随时随地手机看文章
补间动画(Tween Animation)
Alpha动画(透明度动画)
属性
//透明度范围0.0-1.0
android:fromAlpha="0.1"
android:toAlpha="1.0"
//动画播放持续时间1000毫秒
android:duration="1000"
scale动画(缩放动画)
属性
//缩放比例
android:fromXScale="0.5"
android:toXScale="1.0"
android:fromYScale="0.5"
android:toYScale="1.0"
//缩放点坐标
android:pivotX="50%"
android:pivotY="50%"
trans动画(平移动画)
属性
//平移距离(像素为单位)
android:fromXDelta="0"
android:toXDelta="100"
android:fromYDelta="0"
android:toYDelta="100"
//停留在最后一帧
android:fillAfter="true"
rotate动画(旋转动画)
属性
//旋转角度
android:fromDegrees="0"
android:toDegrees="360"
//旋转点坐标(动画的中心点)
android:pivotX="50%"
android:pivotY="50%"
组合动画
属性
<alpha p=""
android:toAlpha="1.0"
android:duration="2000"/>
<scale< p="">
android:startOffset="2000"
android:fromXScale="1"
android:toXScale="0.5"
android:fromYScale="1"
android:toYScale="0.5"
android:duration="2000"/>
注意:动画除了可以作用于ImageView控件,还可以作用于Activity组件。
//1.进来的activity的动画
//2.出去的activity的动画
overridePendingTransition(R.anim.ani_alpha, R.anim.ani_trans);
逐帧帧动画:由多张图片组成,每一个帧播放一张图片
自定义动画:SurfaceView
自定义动画可以运行在子线程中,能够保证动画效果的流畅性。
通常android游戏开发都是基于SurfaceView的。且该类自带双缓冲机制,能保证画面的流畅。
Holder类介绍
添加回调方法
Holder holder = this.getHolder();
holder.addCallBack(this);
获取画布对象
Canvas canvas = holder.lockCanvas();
paint(canvas);
logic();
holder.unlockCanvasAndPost(canvas);
裁剪画布
//保存画布
canvas.save();
//设置裁剪区域
canvas.clip(left, top, right, bottom);
//在已经被裁剪的区域上绘制图片
canvas.drawBitmap(bitmap, 10, 10, paint);
//恢复画布
canvas.restore();
封装动画类