您的位置:首页 > 移动开发 > Android开发

android animation——动画的基本属性

2016-05-12 20:07 639 查看
如果想在app中加入炫酷的动画,那么这些基本属性是必须掌握的。

本来我使用word文档记录的,传递过来只能以这种方式显示了。

1,  view动画
a)  四种变换:
i.  平移,<translate>,TranslateAnimation
ii. 缩放,<scale>,ScaleAnimation
iii.    旋转,<rotate>,RotateAnimation
iv. 透明度,<alpha>,AlphaAnimation
b)  Xml文件创建
i.  res/anim
c)  标签含义
i.  <set>动画集合:
1.  interpolator 为插值器,插值器的选择影响动画的移动过程
2.  shareInterpolator 表示集合中的动画是否公用一个插值器,true/false
3.  duration 动画的持续时间
4.  fillAfter 动画结束后view是否停留在结束为止,true/false
ii. <translate>平移:
1.  fromXDelta:x的起始值,0
2.  toXDelta:x的结束值,100
3.  fromYDelta:y的起始值
4.  toYDelta:y的结束值
iii.    <scale>缩放:
1.  fromXScale:水平缩放起始值:0
2.  toXScale:水平缩放结束值:1
3.  fromYScale:竖直方向起始值
4.  toYScale: 竖直方向结束值
5.  pivotX:缩放轴点X
6.  pivotY:缩放轴点Y
iv. <rotate>旋转:
1.  fromDegrees旋转开始的角度:
2.  toDegrees:旋转结束的角度
3.  pivotX:旋转的轴点x
4.  pivotY:旋转的轴点y
v.  <alpha>透明度:
1.  fromAlpha:透明度的起始值,0
2.  toAlpha:透明度的结束值,1
d)  引用xml文件:
i.  Animation animation=AnimationUtils.loadAnimaton(context,R.anim.anim_demo);
View.startAnimation(animationss);
2,  帧动画
a)  Xml文件创建:drawable/anim_demo
b)  Xml文件写法:
i.  根标签:<animation-list>
1.  Oneshot 是否只播放一次,true/false
ii. Item :<item>:
1.  Duration 一帧的播放时间,毫秒
iii.    引用xml文件:
1.  View.setBackgroundResource(R.drawable.anim_demo);
2.  AnimationDrawable animationDrawable=(AnimationDrawable)view.getBackground();
3,  LayoutAnimation(父布局的动画效果,指向子view进行):
a)  定义xml文件:
i.  <LayoutAnimation delay=”0.5” adimationOrder=”normal” animation=”@anim/anim_demo”/>
1.  Delay:开始动画延迟,子动画会依次延迟出场,0到1
2.  adimationOrder:子动画顺序
a)  normal 顺序显示
b)  reverse 逆向显示
c)  random 随机出场
3.  animation 为子元素指定具体的入场动画
b)  使用方法:
i.  给GroupView指定layoutAnimation属性
1.  layoutAnimation=”@anim/anim_layout”
c)  代码实现方法:
i.  Animation animation=AnimationUtils.loadAnimation(context,R.anim.anim_item);
ii. LayoutAnimationController controller=new LayoutAniationController(animation);
iii.    Controller.setDelay(0.5f);
iv. Controller.setorder(LayoutAnimationController.ORDER_NORMAL);
v.  listView.setLayoutAnimation(controller);
4,  Activity的切换效果:
a)  overridePendingTransition(int enterAnim,int exitAnim);
i.  这个方法必须在finish();或者startActivity(intent);之后调用
ii. EnterAnim: activity被打开时调用的动画资源
iii.    exitAnim:activity被暂停时调用的动画资源
b)  使用方法:
i.  Intent intent=new Intent(this,activity.class);
ii. startActivity(intent);
iii.    overridePendingTransition(R.anim.anim_demo1,R.anim.anim_demo2);
c)  activity退出时也可调用该方法
d)  Fragment也可以添加切换动画
i.  FragmentTransaction中的setCustomAnimations()方法
5,  属性动画(最灵活的动画实现方式):
a)  ObjectAnimator:
i.  代码实现:ObjectAnimator objectAnimator= ObjectAnimator.ofFloat(view,"translationY",-view.getHeight());
objectAnimator.setDuration(1000);//动画执行时间
objectAnimator.setRepeatCount(ValueAnimator.INFINITE);//设置重复计数。设置成无限循环
objectAnimator.setRepeatMode(ValueAnimator.REVERSE);//设置重复的模式,反转效果
objectAnimator.start();
ii. 标签含义:
1.  propertyName=“translationY”:属性动画的作用对象名称
2.  duration=”1000”:动画的时常
3.  valueFrom=”200”:属性的起始值
4.  valueTo=“300”:属性的结束值
5.  startOffset=”500”:动画的延迟时间
6.  repeatCount=”1”:动画的重复次数,infinite表示无限循环,0默认,-1也表示无限循环
7.  repeatMode=”动画的重复模式”,reverse反转效果,restart从头开始
8.  valueType=”intType”:表示propertyName所指向的属性类型,intType和FloatType两种
b)  ValueAnimator:
i.  代码实现:ValueAnimator valueAnimator1=ObjectAnimator.ofInt(view,"backgroundColor",/*红色*/0xffff8080,/*蓝色*/0xff8080ff);
valueAnimator1.setDuration(1000);//动画执行时间
valueAnimator1.setEvaluator(new ArgbEvaluator());//设置估值器
valueAnimator1.setRepeatCount(ValueAnimator.INFINITE);//设置重复计数。设置成无限循环
valueAnimator1.setRepeatMode(ValueAnimator.REVERSE);//设置重复的模式,反转效果
valueAnimator1.start();
ii. 标签含义
1.  ValueAnimator的标签属性只比ObjectAnimator少了propertyName标签
c)  AnimatorSet(属性动画集合):
i.  AnimatorSet animatorSet=new AnimatorSet();
animatorSet.playTogether(
ObjectAnimator.ofFloat(show_anim,"rotationX",0,360),
ObjectAnimator.ofFloat(show_anim,"rotationY",0,180),
ObjectAnimator.ofFloat(show_anim,"rotation",0,-90),
ObjectAnimator.ofFloat(show_anim,"translationY",0,90),
ObjectAnimator.ofFloat(show_anim,"translationX",0,90),
ObjectAnimator.ofFloat(show_anim,"scaleX",1,1.5f),
ObjectAnimator.ofFloat(show_anim,"scaleY",1,1.5f),
ObjectAnimator.ofFloat(show_anim,"alpha",1,0.25f,1)
);
animatorSet.setDuration(time);
animatorSet.start();
ii. 标签含义:
1.  Ordering:子动画的播放模式:together表示同时播放,sequentially表示按顺序播放
6,  插值器的种类:
a)  LinearInterpolator linearInterpolator;//线性插值器,根据时间百分比设置属性百分比
b)  TimeInterpolator timeInterpolator;//时间插值器,匀速动画
c)  AccelerateInterpolator accelerateInterpolator;//加速度插值器,两头慢中间快,默认的播放效果
d)  DecelerateInterpolator decelerateInterpolator;//减速插值器,越来越慢
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: