前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >android-属性动画2

android-属性动画2

作者头像
tea9
发布2022-07-16 16:31:59
2640
发布2022-07-16 16:31:59
举报
文章被收录于专栏:tea9的博客

http://blog.csdn.net/yegongheng/article/details/38435553 #######ObjectAnimator ofFloat 对象 ,属性名(对象存在get set的属性) ,变化的范围

一组属性动画

代码语言:javascript
复制
ImageView imageView= (ImageView) findViewById(R.id.img);
//旋转360度
ObjectAnimator.ofFloat(imageView,"rotation",0f,360f).setDuration(1000).start();
//x坐标变换
ObjectAnimator.ofFloat(imageView,"translationX",0f,200f).setDuration(1000).start();
//y坐标变换
ObjectAnimator.ofFloat(imageView,"translationY",0f,200f).setDuration(1000).start();

一组属性动画 常见的属性

代码语言:javascript
复制
PropertyValuesHolder p1=PropertyValuesHolder.ofFloat("rotation",0f,360f);
PropertyValuesHolder p2=PropertyValuesHolder.ofFloat("translationX",0f,200f);
PropertyValuesHolder p3=PropertyValuesHolder.ofFloat("translationY",0f,200f);
ObjectAnimator.ofPropertyValuesHolder(imageView,p1,p2,p3).setDuration(1000).start();

用AnimatorSet 执行一组动画 可以设置执行顺序

代码语言:javascript
复制
ObjectAnimator oa1=ObjectAnimator.ofFloat(imageView,"rotation",0f,360f);
ObjectAnimator oa2=ObjectAnimator.ofFloat(imageView,"translationX",0f,200f);
ObjectAnimator oa3=ObjectAnimator.ofFloat(imageView,"translationY",0f,200f);
AnimatorSet set=new AnimatorSet();
//一起执行
//set.playTogether(oa1,oa2,oa3);
//依次执行
//set.playSequentially(oa1,oa2,oa3);
//3  2一起执行
set.play(oa2).with(oa3);
//执行完 2在执行1
set.play(oa1).after(oa2);
set.setDuration(1000);
set.start();

#######动画的监听 (监听动画的开始 结束 取消 …)

代码语言:javascript
复制
ObjectAnimator objectAnimator=ObjectAnimator.ofFloat(v,"alpha",0f,1f);
//全部重写
objectAnimator.addListener(new Animator.AnimatorListener() {
    @Override
    public void onAnimationStart(Animator animation) {

    }

    @Override
    public void onAnimationEnd(Animator animation) {
        Toast.makeText(AnimationListenEventActivity.this,"anim end",Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onAnimationCancel(Animator animation) {

    }

    @Override
    public void onAnimationRepeat(Animator animation) {

    }
});


//按 需求重写
objectAnimator.addListener(new AnimatorListenerAdapter() {
    @Override
    public void onAnimationEnd(Animator animation) {
        super.onAnimationEnd(animation);
        Toast.makeText(AnimationListenEventActivity.this,"anim stop",Toast.LENGTH_SHORT).show();
    }
});
objectAnimator.setDuration(1000);
objectAnimator.start();

两种方式 第一种 实例化 AnimatorListener 需要重写所有监听 第二种 实例化 AnimatorListenerAdapter 需要哪个监听就重写哪个


#######valueAnimator

Valueanimator实现的定时器 5秒内从0走到100 在onAnimationUpdate给button重新赋值

代码语言:javascript
复制
final Button button=(Button)v;
ValueAnimator valueAnimator=ValueAnimator.ofInt(0,100);
valueAnimator.setDuration(5000);
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
    @Override
    public void onAnimationUpdate(ValueAnimator animation) {
        //获取每次修改的值
        Integer value= (Integer) animation.getAnimatedValue();
        button.setText(""+value);
    }
});

valueAnimator.start();

代码 https://github.com/shaomiao/PropertyAnimationDemo

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档