Android animation 之视图动画、帧动画、属性动画的简单使用

Android animation 之视图动画、帧动画、属性动画的简单使用

前言: Android提供的动画效果可以说是非常丰富了,一个Android软件如果没有一点动画效果,这款软件怎么用都会是死气沉沉的,因此,为你的APP添加一下简单的动画效果还是必不可少的,在此我简单的介绍View Animation(视图动画)、Drawable Animation (帧动画) 、Property Animation (属性动画)的XML使用方法。

一、View Animation(视图动画)
视图动画,也叫 Tween (补间)动画可以在一个视图容器内执行一系列简单变换(位置、大小、旋转、透明度)。 譬如,如果你有一个 TextView 对象,您可以移动、旋转、缩放、透明度设置其文本,当然,如果它有一个背景图像,背景图像会随着文本变化。
但它有一个非常严重的缺点是,移动后的View仅仅是效果上的移动,实际位并没有移动,因此在动画效果移动后的位置点击View是没有效果的。这个问题可以用属性动画 去解决

xml使用视图动画的简单示例代码如下:

1、layout布局xml文件




    

2、…res/anim文件夹下新建viewanimation.xml文件如下(动画效果是透明度从0-1;大小从原图的0.5倍-原图的1.2倍;旋转角度从0-360;位置移动从View控件的左上角至右下角)



    
    

    
    

    
    
    

    
    
    


注:关于位置的值,总结一下,其实都是以View的左上角为参考进行左右移动

3、java代码执行动画

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void test(View view)
    {
        ImageView spaceshipImage = findViewById(R.id.img);
        Animation animation = AnimationUtils.loadAnimation(this, R.anim.viewanimation);
        animation.setDuration(1000);
        spaceshipImage.startAnimation(animation);
    }
}

二、Drawable Animation (帧动画)
帧动画它允许你实现像播放幻灯片一样的效果,就是设置一系列图片有顺序有时间的进行显示,几张图片有序的快速展示,就会形成动画效果。

1、layerout布局xml文件




    

2、…res/drawable文件夹下新建anim.xml文件

该动画效果是四张图片每张展示5ms,顺序重复执行




    
    
    
    
    


3、Java代码执行动画

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }


    public void test(View view)
    {
        ImageView rocketImage = findViewById(R.id.img);
        rocketImage.setBackgroundResource(R.drawable.anim);
        AnimationDrawable animationDrawable=(AnimationDrawable)rocketImage.getBackground();
        animationDrawable.start();
    }
}

三、Property Animation (属性动画)

属性动画是比较常用的动画,它的动画效果更加灵活多样,切解决了视图动画的位置问题。

1、layerout布局xml文件




    

2、…res/animator文件夹下新建set.xml文件

该动画效果是将View从-1000的位置移动到0,并且同时进行一次0-180的旋转




    

    

3、Java代码执行动画

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void test(View view)
    {
        Animator anim = AnimatorInflater.loadAnimator(this, R.animator.set);
        ImageView iv=findViewById(R.id.img);
        anim.setTarget(iv);
        anim.start();
    }
}

后言:
关于Android动画方面,这位前辈的文章讲的非常详细,并且带有示例代码,有兴趣深入学习的,可以移步 https://github.com/OCNYang/Android-Animation-Set

你可能感兴趣的:(Android)