安卓开发帧动画使用

本文详细介绍如何在安卓中创建和使用帧动画,包括通过XML定义动画列表及使用Java代码动态创建帧动画的方法,并提供了实例代码。

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

安卓中有时候需要使用到帧动画,比如进度条等等。

先在drawable文件夹中建立一个动画文件 “文件名”.xml,其根节点是animation-list
android:oneshot=”false”还需要添加上该属性 取值为boolean值,意思是播放一次还是一直重复。
然后建立多子节点:
drawable属性为资源图,duration属性为该图显示的时长(毫秒值)。

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false">
    <item
        android:drawable="@drawable/one"
        android:duration="100" />
    <item
        android:drawable="@drawable/two"
        android:duration="100" />
    <item
        android:drawable="@drawable/three"
        android:duration="100" />
    <item
        android:drawable="@drawable/four"
        android:duration="100" />
    <item
        android:drawable="@drawable/five"
        android:duration="100" />
    <item
        android:drawable="@drawable/six"
        android:duration="100" />
    <item
        android:drawable="@drawable/seven"
        android:duration="100" />
</animation-list>

然后在代码中引用该资源文件:

public class Fragment8 extends Fragment {
    private ImageView iv;
    public AnimationDrawable a;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.fragment8, container, false);

        iv = (ImageView) v.findViewById(R.id.iv);
        iv.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                iv.setImageResource(R.drawable.anumation);
                a = (AnimationDrawable) iv.getDrawable();
                a.start();
            }
        });
        return v;
    }

点击了imageview后动画就跑起来了。

注意点:(如果需要在activity的一进来时就让动画跑起来的话,不能在OnCreate方法中调用start方法而需要在onWindowFocusChanged方法中调用)

动态使用java代码创建帧动画:

AnimationDrawable frameAnim =new AnimationDrawable();
        // 为AnimationDrawable添加动画帧
        frameAnim.addFrame(getResources().getDrawable(R.drawable.one), 100);
        frameAnim.addFrame(getResources().getDrawable(R.drawable.two), 100);
        frameAnim.addFrame(getResources().getDrawable(R.drawable.three), 100);
        frameAnim.addFrame(getResources().getDrawable(R.drawable.four), 100);
        frameAnim.addFrame(getResources().getDrawable(R.drawable.five), 100);
        frameAnim.addFrame(getResources().getDrawable(R.drawable.six), 100);
        frameAnim.addFrame(getResources().getDrawable(R.drawable.seven), 100);
        // 设置为循环播放
        frameAnim.setOneShot(false);

        // 设置ImageView设置AnimationDrawable
        iv.setImageResource(frameAnim);
        frameAnim.start();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值