1.java代码实现Animation动画

首先介绍4个动画类:

PS:一下出现的百分比数值 均化为数值 比如 100%=1 50%=0.5

// TODO Auto-generated method stub//                              Alpha 透明度渐变效果 参1:起始的透明度  参2:执行之后的透明度 范围 1~0 1为不透明 0为完全透明AlphaAnimation animation=new AlphaAnimation(fromAlpha, toAlpha);//Scale 缩放动画效果//图片从横坐标从fromX缩放到toX,纵坐标从fromY缩放到toY(4个参数的数值为float类型,代表整个图像的百分比,比如fromX=1 toX=2 就是横向扩大1倍)//缩放的起始点的中心由pivotXvalue(指定横坐标上的点)和pivotYvalue(指定Y坐标上的点)决定 (也就是设定的两个点的交接点,这两个参数也为float,也是为百分比)//上面两个参数的值为百分比数,则必须指定一个参照物 pivotYType和pivotXType来指定参照物是本身还是父控件,此类提供常量RELATIVE_TO_SELF,RELATIVE_TO_PARENT提供ScaleAnimation animation2=new ScaleAnimation(fromX, toX, fromY, toY, pivotXType, pivotXValue, pivotYType, pivotYValue);//Transalte移动效果//从fromXvalue(X坐标 百分比)和fromYvalue(Y坐标 百分比)的坐标点,移动到toXvalue和toYvalue的坐标点//起始和最终的位置的参照物由参数值前面的Type参数决定 此类提供常量RELATIVE_TO_SELF,RELATIVE_TO_PARENT提供,TranslateAnimation animation3=new TranslateAnimation(fromXType, fromXValue, toXType, toXValue, fromYType, fromYValue, toYType, toYValue);//从fromXdelta和fromYdelta做标点移动到 toXdelta和toYdelta的坐标点(非百分比数值)TranslateAnimation animation=new TranslateAnimation(fromXDelta, toXDelta, fromYDelta, toYDelta)//Rotate旋转效果//fromDegress和toDegrees决定旋转角度,从fromDegress度旋转至toDegrees度  toDegrees为正则顺时针旋转,为负则逆时针旋转//pivotXType, pivotXValue, pivotYType, pivotYValue决定旋转的中心点 pivotXvalue和pivotYValue两 个百分比数值决定点的位置参照物原理同上由pivotXType和pivotYType决定,但原点0,0 都为参照物的左上点RotateAnimation animation4=new RotateAnimation(fromDegrees, toDegrees, pivotXType, pivotXValue, pivotYType, pivotYValue);

动画的通用属性:

                                animation.setDuration(1000);//设置动画播放时间 毫秒单位animation.setFillAfter(true); //设置动画结束后是否回到原点,true为动画结束后不会回到原点,false会回到原点animation.setStartOffset(1000); //懂话开始时间的偏移量 毫秒单位                                animation.setRepeatCount(1);//设置动画的执行次数                                animation.setInterpolator(i)//设置iterpolator下面介绍iterpolator

AnimationSet类:

此类类似于一个List,只不过里面装的是动画类,在此类上设置的各项属性会添加到其包含的每个动画上.

interpolator的解释

interpolator定义一个动画的变化率(the rate of change)。这使得基本的动画效果(alpha, scale, translate, rotate)得以加速,减速,重复等。

Interpolator 定义了动画的变化速度,可以实现匀速、正加速、负加速、无规则变加速等。Interpolator 是基类,封装了所有 Interpolator 的共同方法,它只有一个方法,即 getInterpolation (float input),该方法 maps a point on the timeline to a multiplier to be applied to the transformations of an animation。Android 提供了几个 Interpolator 子类,实现了不同的速度曲线,如下:

AccelerateDecelerateInterpolator 在动画开始与介绍的地方速率改变比较慢,在中间的时候加速
AccelerateInterpolator 在动画开始的地方速率改变比较慢,然后开始加速
CycleInterpolator 动画循环播放特定的次数,速率改变沿着正弦曲线
DecelerateInterpolator 在动画开始的地方速率改变比较慢,然后开始减速
LinearInterpolator 在动画的以均匀的速率改变


使用XML文件来实现动画类的效果:

1.在res/anim下建立xml文件

2.设置动画:(转 http://www.cnblogs.com/feisky/archive/2010/01/11/1644482.html)

PS:以下pivot的设置有三种写法:

1. pivotX=50 绝对定位

2. pivotX=50% 相对于本身

3. pivot=50%p 相对于父窗口

属性[类型] 功能 备注
Duration[long] 属性为动画持续时间 时间以毫秒为单位
fillAfter [boolean] 当设置为true ,该动画转化在动画结束后被应用
fillBefore[boolean] 当设置为true ,该动画转化在动画开始前被应用

interpolator

指定一个动画的插入器 有一些常见的插入器
accelerate_decelerate_interpolator
加速-减速 动画插入器
accelerate_interpolator
加速-动画插入器
decelerate_interpolator
减速- 动画插入器
其他的属于特定的动画效果
repeatCount[int] 动画的重复次数
RepeatMode[int] 定义重复的行为 1:重新开始 2:plays backward
startOffset[long] 动画之间的时间间隔,从上次动画停多少时间开始执行下个动画
zAdjustment[int] 定义动画的Z Order的改变 0:保持Z Order不变
1:保持在最上层
-1:保持在最下层

表二

XML节点 功能说明
alpha 渐变透明度动画效果
<alpha
android:fromAlpha=”0.1″
android:toAlpha=”1.0″
android:duration=”3000″ />
fromAlpha

属性为动画起始时透明度

0.0表示完全透明
1.0表示完全不透明
以上值取0.0-1.0之间的float数据类型的数字

duration为动画持续时间,ms单位

toAlpha

属性为动画结束时透明度

表三

scale 渐变尺寸伸缩动画效果
<scale
android:interpolator= “@android:anim/accelerate_decelerate_interpolator”
android:fromXScale=”0.0″
android:toXScale=”1.4″
android:fromYScale=”0.0″
android:toYScale=”1.4″
android:pivotX=”50%”
android:pivotY=”50%”
android:fillAfter=”false”
android:startOffset=“700”
android:duration=”700″
android:repeatCount=”10″ />
fromXScale[float] fromYScale[float] 为动画起始时,X、Y坐标上的伸缩尺寸 0.0表示收缩到没有
1.0表示正常无伸缩
值小于1.0表示收缩
值大于1.0表示放大
toXScale [float]
toYScale[float]
为动画结束时,X、Y坐标上的伸缩尺寸
pivotX[float]
pivotY[float]
为动画相对于物件的X、Y坐标的开始位置 属性值说明:从0%-100%中取值,50%为物件的X或Y方向坐标上的中点位置

表四

translate 画面转换位置移动动画效果
<translate
android:fromXDelta=”30″
android:toXDelta=”-80″
android:fromYDelta=”30″
android:toYDelta=”300″
android:duration=”2000″ />
fromXDelta
toXDelta
为动画、结束起始时 X坐标上的位置
fromYDelta
toYDelta
为动画、结束起始时 Y坐标上的位置

表五

rotate 画面转移旋转动画效果
<rotate
android:interpolator=”@android:anim/accelerate_decelerate_interpolator”
android:fromDegrees=”0″
android:toDegrees=”+350″
android:pivotX=”50%”
android:pivotY=”50%”
android:duration=”3000″ />
fromDegrees 为动画起始时物件的角度 说明
当角度为负数——表示逆时针旋转
当角度为正数——表示顺时针旋转
(负数from——to正数:顺时针旋转)
(负数from——to负数:逆时针旋转)
(正数from——to正数:顺时针旋转)
(正数from——to负数:逆时针旋转)
toDegrees 属性为动画结束时物件旋转的角度 可以大于360度
pivotX
pivotY
为动画相对于物件的X、Y坐标的开始位 说明:以上两个属性值 从0%-100%中取值
50%为物件的X或Y方向坐标上的中点位置

在java代码中使用:

Animation animation=AnimationUtils.loadAnimation(AnimationTestActivity.this, R.anim.anmiation);image.startAnimation(animation); //当然也可以放入AnimationSet当中

LayoutAnimationController的使用

用于实现一个layout或者viewgroup(例如ListView) 下的所有控件的动画效果,比如可以实现listview中的每一项出现时的动画效果

使用XML方法

1.在res/anim下建立xml文件内容:

<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"          android:delay="30%"           android:animationOrder="reverse"          android:animation="@anim/具体显示的动画xml文件" />  

android:delay 子类动画时间间隔 (延迟) 70% 也可以是一个浮点数 如“1.2”等

android:animationOrder="random" 子类的显示方式 random表示随机

android:animationOrder 的取值有

normal 0 默认
reverse 1 倒序
random 2 随机

android:animation="@anim/slide_right" 表示空间所使用的动画效果文件

在主布局文件当中为layout或者viewgroup添加如下配置

android:layoutAnimation="@anim/xml文件名"

使用Java代码方法

//LayoutAnimationController controller=new LayoutAnimationController(animation); //参数为 animation动画类//controller.setOrder(LayoutAnimationController.ORDER_NORMAL);                   //设置播放顺序 使用的是LayoutAnimationController//controller.setDelay(0);                                                        //设置间隔时间//(Layout).setLayoutAnimation(controller);       //为Layout或者listview设置layoutanimationController对象
AnimationListener介绍
Animation animation=AnimationUtils.loadAnimation(AnimationTestActivity.this, R.anim.anmiation);//加载animationanimation.setAnimationListener(new AnimationListener() {//动画开始时执行@Overridepublic void onAnimationStart(Animation animation) {// TODO Auto-generated method stub}//动画重复时执行@Overridepublic void onAnimationRepeat(Animation animation) {// TODO Auto-generated method stub}//动画结束时执行@Overridepublic void onAnimationEnd(Animation animation) {// TODO Auto-generated method stub}});






更多相关文章

  1. Android面试题(四)——动画
  2. Android中实现照片滑动时左右进出的动画的xml代码
  3. [置顶] 很实用的android压缩图片的算法
  4. 【Android(安卓)动画】帧动画、补间动画、属性动画
  5. SwitchLayout安卓最佳切换动画
  6. Android(安卓)安卓动画 属性动画 - 组合动画
  7. Android补间动画
  8. Android开机动画 (boot animation)制作
  9. 使用Android来画一个钟表

随机推荐

  1. Kubernetes节点之间的ping监控
  2. IIC实战---》BH1750FVI光照强度传感器
  3. C++基础学习---->变量与运算操作
  4. 扇贝 Service Mesh 发展历程
  5. C++基础学习---->指针基础笔记
  6. pip下载失败?快换镜像网试试
  7. Docker是不是遇上麻烦了?
  8. GNSS接收机技术以及应用复习
  9. C++基础学习----->函数与各种数据结构
  10. centos7.4升级openssh7.4p1到openssh8.5p