频道栏目
首页 > 程序开发 > 移动开发 > Android > 正文
Android 属性动画实现效果
2018-02-03 10:45:16         来源:zhangxxxq的博客  
收藏   我要投稿

本来想先放实现效果,后来手机实在捉急,只能后续再补啦。
一 实现透明效果:

//属性动画变透明
    private void alphaAnim(){
        //不透明--->透明--->不透明 2s钟时间平均分配
        ObjectAnimator objectAnimator=ObjectAnimator.ofFloat(imageView,"alpha",1f,0f,1f);
        //从不透明变成透明
//        ObjectAnimator objectAnimator=ObjectAnimator.ofFloat(imageView,"alpha",1f,0f);
        //只执行一次动画时,可以省略1f
//        ObjectAnimator objectAnimator=ObjectAnimator.ofFloat(imageView,"alpha",0f);
        objectAnimator.setDuration(2000);  //设置动画时间为2000ms
        objectAnimator.start();
    }

1f为完全不透明   0f为完全透明

二:实现旋转效果

//属性动画 旋转
    private void rotationAnim(){
        //0-->360 顺时针 360-->0 逆时针
        //下个度数大于上个度数,顺时针旋转;下个度数小于上个度数,逆时针旋转。
        ObjectAnimator objectAnimator=ObjectAnimator.ofFloat(imageView,"rotation",0f,360,0);
        objectAnimator.setDuration(5000);
        objectAnimator.start();
    }

三 实现平移效果:

//平移
    private void translationAnim(){
        // translationX 沿着x轴移动 上个数大于下个数,左移。反之右移
//        ObjectAnimator objectAnimator=ObjectAnimator.ofFloat(imageView,"translationX",0f,-300f,0f);  //左移-->右移
        // translationX 沿着x轴移动 上个数大于下个数,上移。反之下移
        ObjectAnimator objectAnimator=ObjectAnimator.ofFloat(imageView,"translationY",0f,300f,0f);  //下移-->上移
        objectAnimator.setDuration(5000);
        objectAnimator.start();
    }

四 实现缩放效果

//缩放
    private void scaleAnim(){
        ObjectAnimator objectAnimator=ObjectAnimator.ofFloat(imageView,"scaleX",1f,2f,1f); //沿着x轴放大两倍再返回
        ObjectAnimator objectAnimator1=ObjectAnimator.ofFloat(imageView,"scaleY",1f,2f,1f); //沿着Y轴放大两倍再返回
        objectAnimator.setDuration(5000);
        objectAnimator1.setDuration(5000);
        objectAnimator.start();
        objectAnimator1.start();
    }

五 组合动画
以上都是基本动画,如果只有基本动画,显然是不够的,所以还有个类AnimatorSet,专门来组合这些动画。
AnimatorSet:这个类提供了一个play()方法,调用后将会返回一个AnimatorSet.Builder的实例,AnimatorSet.Builder中包括以下四个方法:

after(Animator anim) :将现有动画插入到传入的动画之后执行
after(long delay) :将现有动画延迟指定毫秒后执行
before(Animator anim): 将现有动画插入到传入的动画之前执行
with(Animator anim) :将现有动画和传入的动画同时执行

//组合动画
    private void setAnim(){
        //沿x轴放大
        ObjectAnimator scaleXAnimator = ObjectAnimator.ofFloat(imageView, "scaleX", 1f, 2f, 1f);
        //沿y轴放大
        ObjectAnimator scaleYAnimator = ObjectAnimator.ofFloat(imageView, "scaleY", 1f, 2f, 1f);
        //移动
        ObjectAnimator translationXAnimator = ObjectAnimator.ofFloat(imageView, "translationX", 0f, 200f, 0f);
        //透明动画
        ObjectAnimator alphaAnimator = ObjectAnimator.ofFloat(imageView, "alpha", 1f, 0f, 1f);
        AnimatorSet animatorSet=new AnimatorSet();
        //同时沿X,Y轴放大,且改变透明度,然后移动
        //在3s内,沿x、y轴同时放大,然后缩小,在缩放的同时还要改变透明度。然后再完成3s的左右移动。
        animatorSet.play(scaleXAnimator).with(scaleYAnimator).with(alphaAnimator).before(translationXAnimator);
        //每个动画都设置成3s,也可以分别设置
        animatorSet.setDuration(3000);
        animatorSet.start();
    }

六 在xml中实现动画效果
1.透明:



    

在布局中的实现:

//alpha.xml对应的代码实现
    private void alphaXml(){
        Animator animator= AnimatorInflater.loadAnimator(this,R.animator.alpha);
        animator.setTarget(imageView);
        animator.start();
    }

2.旋转


3.移动

4.缩放:

5.组合:



    
        
        
            
            
        
    
    
        
        
            
            
        
    
这里需要说下set中的属性android:ordering:规定了这个set中的动画的执行顺序,包括:
together(默认):set中的动画同时执行
sequentially:set中的动画按顺序执行
点击复制链接 与好友分享!回本站首页
上一篇:mac中android studio使用svn版本控制遇到的问题的解决
下一篇:android及接口测试基础
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站