android 动画

1.概述
android提供了几种动画类型:Tween(补间)动画和ViewAnimation、Drawable(帧)动画、Property(属性)动画、LayoutAnimation(布局动画)。其中Property动画是在Android3.0(API 11)及以上版本可用,也是Android推荐使用。一般的动画的使用方式都有两种,xml与Java代码实现。以下也是分别对着这两种方式进行说明
2.Tween动画

  • Tween动画体系结构介绍
    package:android.view.animation
    抽象类Animation:

    类名说明
    AlphaAnimation渐变透明动画效果
    RotateAnimation旋转动画效果
    ScaleAnimation伸缩动画效果
    TranslateAnimation位置移动动画效果
    AnimationSet动画容器

    Interfaces:

    接口名说明
    Animation.AnimationListeneronAnimationEnd();onAnimationRepeat();onAnimationStart();
    Interpolator插值器
  • Tween动画的使用
    Tween各个动画属性
    Animation属性:

    xml属性java方法解释
    android:detachWallpapersetDetachWallpaper(boolean)是否在壁纸上运行
    android:durationsetDuration(long)动画持续的时间
    android:fillAftersetFillAfter(boolean)动画结束时是否保持在动画最后的状态
    android:fillBeforesetFillBefore(boolean)动画结束时是否还原到初始状态
    android:fillEnabledsetFillEnabled(boolean)以上一个相同
    android:interpolatorsetInterpolator(interpolator)设置插值器
    android:repeatCountsetRepeatCount(int)重复次数
    android:repeatModesetRepeatMode(int)重复类型reverse
    android:startOffsetsetStartOffset(long)调用start函数之后等待多久开始
    android:zAdjustmentsetZAdjustment(int)动画的z轴位置top/bottom/normal

    Alpha动画属性:

    xml属性java方法解释
    android:fromAlphaAlphaAnimation(float fromAlpha,…)动画开始的透明度0.0是全透明,1.0是不透明
    android:toAlphaAlphaAnimation(…,float toAlpha)动画结束的透明度,同上

    Rotate动画属性:

    xml属性java方法解释
    android:fromDegreesRotateAnimation(float fromDegrees,…)旋转开始的角度,正代表顺时针度数
    android:toDegreesRotateAnimation(…,float toDegrees)旋转结束的角度,同上
    android:pivotXRotateAnimation(…,float pivotX,…)旋转起点X坐标@
    android:pivotYRotateAnimation(…,float pivotY)旋转起点Y坐标 ,同上

    @:表示数值、百分数,如30表示以当前View左上角坐标加30px为初始点、30%表示以View宽高的30%作为初始点、30%p表示以当前View的左上角加上父控件宽高的30%作为初始点。
    Scale动画属性:

    xml属性java方法解释
    android:fromXScaleScaleAnimation(float fromX,…)初始X轴缩放比例,1.0表示无变化
    android:toXScaleScaleAnimation(…,float toX,…)结束X轴缩放比例
    android:fromYScaleScaleAnimation(…,float fromY,…)初始Y轴缩放比例
    android:toYScaleScaleAnimation(…,float toY,…)结束Y轴缩放比例
    android:pivotXScaleAnimation(…,float pivotX,…)缩放起点X坐标@
    android:pivotYScaleAnimation(…,float pivotY)缩放起点Y坐标 ,同上

    Translate动画属性:

    xml属性java方法解释
    android:fromXDeltaTranslateAnimation(float fromDelta,…)起始点X轴坐标,@
    android:fromYDeltaTranslateAnimation(…,float fromDelta,…)起始点Y轴坐标,@
    android:toXDeltaTranslateAnimation(…,float toDelta,…)结束X轴坐标
    android:toYDeltaTranslateAnimation(…,float toDelta)结束Y轴坐标
  • Tween动画使用方式

    xml方式:放置在”res/anim/”目录下(如:example.xml)

<rotate xmlns:android="http://schemas.android.com/apk/res/android"
        android:fromDegrees="0"
        android:toDegrees="+360"
        android:duration="3000"/>
然后在java代码中运用        
ImageView image = (ImageView) findViewById(R.id.image);  
Animation testAnim = AnimationUtils.loadAnimation(this, R.anim.example);  
image.startAnimation(testAnim);
  java方式:
//这里的0.5f就是上面提到的**@**的注释
Animation anim = new  RotateAnimation(0,360, Animation.RELATIVE_TO_SELF,0.5f,  Animation.RELATIVE_TO_SELF,0.5f);  
//表示线性插值器 后续有详细说明
LinearInterpolator lir = new LinearInterpolator();  
anim.setInterpolator(lir);  
anim.setDuration(1000);  
image.startAnimation(anim);  

注意点:Tween动画执行后并未改变View的真实布局属性值。

Tween动画:是通过 ParentView 来不断调整 ChildView 的画布坐标系来实现的。如果以上这几种动画都不能够满足需求则可以自定义动漫,重写Animation:applyTransformation(float interpolatedTime, Transformation t);的方法。其中interpolatedTime表示0-1之间的数值变化,Transformation表示动画在不同时刻对图形或组件的变形程度,该对象封装了两个可变的值mMatrix,mAlpha。为了能控制图片或View进行三维变化,android提供了android.graphics.Camera;类

  • Tween动画举例
    待续
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值