(原)android中的动画(二)

本文详细介绍了帧动画的实现方法,包括在XML文件中指定每一帧图片及播放代码。同时,深入讲解了旋转、平移、缩放、渐变四种补间动画的Java代码实现,并展示了如何通过AnimationSet实现多种动画同时执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

帧动画的使用需要在xml文件中指定每一帧所对应的图片

animation-list写法如下:

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:drawable="@drawable/b1"
        android:duration="200"/>
    <item
        android:drawable="@drawable/b2"
        android:duration="200"/>
    <item
        android:drawable="@drawable/b3"
        android:duration="200"/>
    <item
        android:drawable="@drawable/b4"
        android:duration="200"/>
    <item
        android:drawable="@drawable/b5"
        android:duration="200"/>
    <item
        android:drawable="@drawable/b6"
        android:duration="200"/>

</animation-list>

播放帧动画的java代码如下:

iv.setImageResource(R.drawable.myanimationlist);
        AnimationDrawable animation = (AnimationDrawable) iv.getDrawable();
        animation.start(); // 开始播放动画

旋转,平移,缩放,渐变这四种补间动画的写法很相似,统一列在下面:

public void rote(View v) {
        RotateAnimation rotateAnimation = new RotateAnimation(0, 180,
                iv.getWidth() / 2, iv.getHeight() / 2);
        rotateAnimation.setDuration(2000);
        iv.startAnimation(rotateAnimation);
    }

    public void translate(View v) {
        TranslateAnimation translateAnimation = new TranslateAnimation(0, 200,
                0, 200);
        translateAnimation.setDuration(2000);
        iv.startAnimation(translateAnimation);
    }

    public void scale(View v) {
        ScaleAnimation scaleAnimation = new ScaleAnimation(0.5f, 2, 0.5f, 2,
                iv.getWidth() / 2, iv.getHeight() / 2);
        scaleAnimation.setDuration(2000);
        iv.startAnimation(scaleAnimation);

    }

    public void alpha(View v) {
        AlphaAnimation alphaAnimation = new AlphaAnimation(0, 1);
        alphaAnimation.setDuration(2000);
        iv.startAnimation(alphaAnimation);
    }

补间动画同时只能有一个在执行,如果想让几种补间动画同时执行的话,可以使用animationSet:

public void together(View v) {
        AnimationSet animationSet = new AnimationSet(false);
        RotateAnimation rotateAnimation = new RotateAnimation(0, 180,
                iv.getWidth() / 2, iv.getHeight() / 2);
        rotateAnimation.setDuration(2000);
        TranslateAnimation translateAnimation = new TranslateAnimation(0, 200,
                0, 200);
        translateAnimation.setDuration(2000);
        ScaleAnimation scaleAnimation = new ScaleAnimation(0.5f, 2, 0.5f, 2,
                iv.getWidth() / 2, iv.getHeight() / 2);
        scaleAnimation.setDuration(2000);
        AlphaAnimation alphaAnimation = new AlphaAnimation(0, 1);
        alphaAnimation.setDuration(2000);
        animationSet.addAnimation(rotateAnimation);
        animationSet.addAnimation(translateAnimation);
        animationSet.addAnimation(scaleAnimation);
        animationSet.addAnimation(alphaAnimation);
        iv.startAnimation(animationSet);
    }

这样几种补间动画就可以一起执行了

这篇先总结到这里,下篇总结动画监听事件以及页面切换动画.

 

转载于:https://www.cnblogs.com/BlogCommunicator/p/4916840.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值