android的三种动画

Posted 菜鸟xiaowang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android的三种动画相关的知识,希望对你有一定的参考价值。

1.view animation  视图动画(补间动画)

只能被用来设置View的动画。

可以使用xml或者java 代码进行实现

xml放在 res/anim/ 下

android:duration 动画持续时间,以毫秒为单位
android:fillAfter 如果设置为true,控件动画结束时,将保持动画最后时的状态
android:fillBefore 如果设置为true,控件动画结束时,还原到开始动画前的状态
android:fillEnabled 与android:fillBefore 效果相同,都是在动画结束时,将控件还原到初始化状态
android:repeatCount 重复次数
android:repeatMode 重复类型,有reverse和restart两个值,reverse表示倒序回放,restart表示重新放一遍,必须与repeatCount一起使用才能看到效果。因为这里的意义是重复的类型,即回放时的动作。
android:interpolator 设定插值器,其实就是指定的动作效果,比如弹跳效果等,

 

java类名xml关键字描述信息
AlphaAnimation<alpha> 放置在res/anim/目录下渐变透明度动画效果
RotateAnimation<rotate> 放置在res/anim/目录下画面转移旋转动画效果
ScaleAnimation<scale> 放置在res/anim/目录下渐变尺寸伸缩动画效果
TranslateAnimation<translate> 放置在res/anim/目录下画面转换位置移动动画效果
AnimationSet<set> 放置在res/anim/目录下一个持有其它动画元素alpha、scale、translate、rotate或者其它set元素的容器

 

xml属性java方法解释
android:detachWallpapersetDetachWallpaper(boolean)是否在壁纸上运行
android:durationsetDuration(long)动画持续时间,毫秒为单位
android:fillAftersetFillAfter(boolean)控件动画结束时是否保持动画最后的状态
android:fillBeforesetFillBefore(boolean)控件动画结束时是否还原到开始动画前的状态
android:fillEnabledsetFillEnabled(boolean)与android:fillBefore效果相同
android:interpolatorsetInterpolator(Interpolator)设定插值器(指定的动画效果,譬如回弹等)
android:repeatCountsetRepeatCount(int)重复次数
android:repeatModesetRepeatMode(int)重复类型有两个值,reverse表示倒序回放,restart表示从头播放
android:startOffsetsetStartOffset(long)调用start函数之后等待开始运行的时间,单位为毫秒
android:zAdjustmentsetZAdjustment(int)表示被设置动画的内容运行时在Z轴上的位置(top/bottom/normal),默认为normal

 Alpha属性详解  透明度

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

 Rotate属性详解  旋转

xml属性java方法解释
android:fromDegreesRotateAnimation(float fromDegrees, …)旋转开始角度,正代表顺时针度数,负代表逆时针度数
android:toDegreesRotateAnimation(…, float toDegrees, …)旋转结束角度,正代表顺时针度数,负代表逆时针度数
android:pivotXRotateAnimation(…, float pivotX, …)缩放起点X坐标(数值、百分数、百分数p,譬如50表示以当前View左上角坐标加50px为初始点、50%表示以当前View的左上角加上当前View宽高的50%做为初始点、50%p表示以当前View的左上角加上父控件宽高的50%做为初始点)
android:pivotYRotateAnimation(…, float pivotY)缩放起点Y坐标,同上规律

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轴坐标(数值、百分数、百分数p,譬如50表示以当前View左上角坐标加50px为初始点、50%表示以当前View的左上角加上当前View宽高的50%做为初始点、50%p表示以当前View的左上角加上父控件宽高的50%做为初始点)
android:pivotYScaleAnimation(…, float pivotY)缩放起点Y轴坐标,同上规律

Translate属性详解  移动

xml属性java方法解释
android:fromXDeltaTranslateAnimation(float fromXDelta, …)起始点X轴坐标(数值、百分数、百分数p,譬如50表示以当前View左上角坐标加50px为初始点、50%表示以当前View的左上角加上当前View宽高的50%做为初始点、50%p表示以当前View的左上角加上父控件宽高的50%做为初始点)
android:fromYDeltaTranslateAnimation(…, float fromYDelta, …)起始点Y轴从标,同上规律
android:toXDeltaTranslateAnimation(…, float toXDelta, …)结束点X轴坐标,同上规律
android:toYDeltaTranslateAnimation(…, float toYDelta)结束点Y轴坐标,同上规律

 使用

Animation animation = AnimationUtils.loadAnimation(this, R.anim.alphaanim);
btn.setAnimation(animation);

2.frame animation 帧动画 多张图片形成的效果

使用xml描述动画  xml放在res/drawable/下

3.property animation 属性动画

这种动画可以设置给任何Object,包括那些还没有渲染到屏幕上的对象。这种动画是可扩展的,可以让你自定义任何类型和属性的动画

Android 基础的三种动画 帧动画补间动画属性动画。

帧动画 drawable   animation

通过xml文件声明一个帧动画

①在res目录下创建一个drawable目录 把用到的图片资源放到这个目录下 并且创建一个xml文件

根元素  animation-list可以设置一个属性 oneshot如果设置为true 动画只执行一次 执行之后停在最后一帧

animation-list 子元素item   

<?xml version="1.0" encoding="utf-8"?>
2.  <animation-list xmlns:android="http://schemas.android.com/apk/res/android"
3.      android:oneshot="true" >     //踹人的动画
4.       <item android:drawable="@drawable/girl_1" android:duration="200" />
5.      <item android:drawable="@drawable/girl_2" android:duration="200" />
6.      <item android:drawable="@drawable/girl_3" android:duration="200" />
7.       <item android:drawable="@drawable/girl_4" android:duration="400" />
8.      <item android:drawable="@drawable/girl_5" android:duration="400" />
9.      <item android:drawable="@drawable/girl_6" android:duration="400" />
10.     <item android:drawable="@drawable/girl_4" android:duration="400" />
11.    <item android:drawable="@drawable/girl_5" android:duration="400" />
12.    <item android:drawable="@drawable/girl_6" android:duration="400" />
13.     <item android:drawable="@drawable/girl_4" android:duration="400" />
14.    <item android:drawable="@drawable/girl_5" android:duration="400" />
15.    <item android:drawable="@drawable/girl_6" android:duration="400" />
16.     <item android:drawable="@drawable/girl_7" android:duration="400" />
17.    <item android:drawable="@drawable/girl_8" android:duration="400" />
18.    <item android:drawable="@drawable/girl_9" android:duration="200" />
19.     <item android:drawable="@drawable/girl_10" android:duration="200" />
20.    <item android:drawable="@drawable/girl_11" android:duration="200" />
21.</animation-list>

item 中drawable属性 对应当前帧使用的图片资源  duration指定每一帧播放的时长

②在界面的布局文件中 通过ImageView的background属性加载drawableanimation

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
2.      xmlns:tools="http://schemas.android.com/tools"
3.      android:layout_width="match_parent"
4.      android:layout_height="match_parent"
5.      android:paddingBottom="@dimen/activity_vertical_margin"
6.      android:paddingLeft="@dimen/activity_horizontal_margin"
7.      android:paddingRight="@dimen/activity_horizontal_margin"
8.      android:paddingTop="@dimen/activity_vertical_margin"
9.      tools:context=".MainActivity" >
10. 
11.    <ImageView
12.        android:id="@+id/iv_animation"
13.        android:layout_width="wrap_content"
14.        android:layout_height="wrap_content"
15.        android:background="@drawable/drawableanimation" />
16.</RelativeLayout>

③在java代码中 找到imageview 通过getbackground找到Drawableanimation 资源 然后开始动画

public class MainActivity extends Activity {
2.   
3.      @Override
4.      protected void onCreate(Bundle savedInstanceState) {
5.          super.onCreate(savedInstanceState);
6.          setContentView(R.layout.activity_main);
7.          ImageView iv_image = (ImageView) findViewById(R.id.iv_animation);
8.          //找到imageview的背景资源 这个背景就是一个帧动画 强转成帧动画对应的AnimationDrawable对象
9.         AnimationDrawable anim =  (AnimationDrawable) iv_image.getBackground();
10.       //开启动画
11.       anim.start();
12.    }

 

以上是关于android的三种动画的主要内容,如果未能解决你的问题,请参考以下文章

Android 属性动画实现抛物线动画

Android 设计模式 笔记 - 深入了解属性动画

Android 设计模式 笔记 - 深入了解属性动画

Android动画 三种动画

Carson带你学Android:手把手带你全面学习补间动画的使用!

Carson带你学Android:手把手带你全面学习补间动画的使用!