AS中的动画-Animation

通常可以分为三种动画:帧动画-AnimationDrawable 、补间动画、属性动画ObjectAnimator
1、AnimationDrawable类似于Drawable文件,一系列的Drawable图像资源随时间播放,设定好每张图像展示时间即可,宿主只能是ImageView相关的图像视图
am_frame= new AnimationDrawable();//获取对象
am_frame.addFrame(…,50)//参数1:Drawable对象,参数2:持续的时间

am_frame.setOneShot();//是否只播放一次
imageView.setImageDrawable(am_frame);//设置载体
am_frame.start();//开始动画
通过资源文件的形式放置好Drawable文件,同时设置好放映的时间,以animation-list资源文件头开始
<animation-list …,android:oneshort=“true”>



代码中使用:
imageView.setImageDrawable(R.Drawable. )//载体
am_frame=(AnimationDrawable)imageView.getDrawable();/获取Drawable资源强制转化
am_frame.start();//开始动画

 代码中在家GIf,将其加载,获取每帧的图像,然后设置为AnimationDrawable
 例如:
 GifImage gifImage= new GifImage();
 int status= gifIamge.read(getResource().openRawResource(R.raw....) //gifImage根据流获取状态
 if(status==GifImage.STATUS_OK){
     GifImage.GifFrame [] framelist= gifImage.getFrames();//根据流,获取每一帧的全部属性,image与delay等
     am_frame= new AnimationDrawable();//获取对象
    for(int i =0;i<framelist.length;i++){
       BitmapDrawable bd= new BitmapDrawable(getResource(),framelist[i].image) ;
       am_frame.addFrame(bd,framelist[i].delay);
       }
   am_frame.setOneShot(true);
   imageView.setDrawable(am_frame);
   am_frame.start();
 }

TransitionDrawable:过渡动画,只能两张图片实现深入浅出,若是多张,可以结合handler进行通信,不断更换前后两张图片。
Drawable [] drawablearray = {getResources().getDrawable(),   ......}
TransitionDrawable ts = new TransitionDrawable(drawablearray);
imageView.setImaegDrawable(ts)//宿主
ts.startTransition(3000);//过渡的时间

2、补间动画:灰度动画AlphaAnimation、平移动画TranslateAnimation、缩放动画ScaleAnimation、旋转动画RotateAnimation,都为Animation的子类,setFillAfter-是否维持结束画面 setRepeatCount setDuration setAnimationListener
①、灰度动画:构造函数中指定前后的灰度值。0表示完全不透明;1表示完全透明
②、平移动画:构造函数中指定平移前后左上角的坐标(x1,x2,y1,y2)//1b表示平移前
③、缩放动画:缩放的前后横纵坐标的缩放比例。(x1,x2,y1,y2)//
④、旋转动画:6个构造参数。参1:旋转前角度;参2:旋转后角度;参3:圆心横坐标类型;参4:圆心横坐标数值比例;参5:圆心纵坐标类型;参6:圆心纵坐标数值比例。。坐标类型:ABSOLUTE-绝对位置;RELATIVE_TO_SELF-相对自身位置;RELATIVE_TO_PARENT-相对上级位置

多个补间动画组合:AnimationSet-addAnimation()就行

3、属性动画:ObjectAnimator,常用方法:ofInt、ofFloat、ofArgb、ofObject,分别处理不同类型的属性。ofInt(参数1,参数2…)//参1:宿主视图;参2:需变化属性名称;后面参数表示变化过程。
setInterpolator-设置插值器、setEvaluator-设置估值器、addListener()
属性动画组合起来一起使用:AnimatorSet
使用过程:各个属性动画初始化-AnimatorSet初始化-调用play(属性动画)方法-返回一个AnimatorSetBuilder对象-然后设置其他动画的先后顺序。with()-同时、before-之前、after()-之后—最后设置Set播放的时间,开始动画。

Interpolator :插值器,用来控制动画的速度。
Evaluator: 估值器,ofInt–IntEvaluator ofFloat–FloatEvaluator ofArgb–ArgbEvaluator ofObject–RectEvaluator对应关系。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值