在一个动画序列中可以使用多少个 PNG 图像?

发布于 2024-12-25 18:20:42 字数 133 浏览 1 评论 0原文

我有大约 45 个 PNG 文件,我想在使用 XML 动画文件的动画序列中使用它们。我注意到我无法对超过 10 个 PNG 文件进行动画处理,然后我会遇到动画确实播放到第 10 个图像之后的问题,否则就会崩溃。

有没有办法突破这个限制?

I have like 45 PNG files that I want to use in a animation sequence using the XML animation file. I noticed that I'm not able to animate past 10 PNG files, any more then that I get problems where the animation does play past the 10th image or it would just crash.

Is there a way to get past that limitation?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浅听莫相离 2025-01-01 18:20:42

您需要检查崩溃原因,如果是内存不足错误,您可以尝试将png图片像素变小

如果是系统动画大小限制,你可以尝试另一种方法,你可以创建你的视图并在你的视图中创建一个Handler,并且Handler每次发送消息(每次持续时间的动画),当接收时消息,更改 png。

补充:

static final int MSG_ANIMATION = 1, MSG_CANCEL = 2;

static final int ANIMATION_DURATION = 500;

public Handler mHandler = new Handler() {
    public void handleMessage(android.os.Message msg) {
        final int what = msg.what;
        if (what == MSG_ANIMATION) {
            // here change the animation png
            setImageResource(..);
            mHandler.sendEmptyMessageDelayed(MSG_ANIMATION, ANIMATION_DURATION);
        } else if (what == MSG_CANCEL) {
            removeMessages(MSG_ANIMATION);
        }
    };
};

public void startAnimation() {
    // set first animation png
    setImageResource(..);
    mHandler.sendEmptyMessageDelayed(MSG_ANIMATION, ANIMATION_DURATION);
}

public void stopAnimation() {
    mHandler.sendEmptyMessage(MSG_CANCEL);
}

you need check the crash reason, if it the Out of memory error, you can try make the png pictures pixel smaller.

if it's the system animation size limit, you can try another method, you can create your view and in your view create a Handler, and handler send message every time(the animation every duration time), when receive the message, change the png.

added:

static final int MSG_ANIMATION = 1, MSG_CANCEL = 2;

static final int ANIMATION_DURATION = 500;

public Handler mHandler = new Handler() {
    public void handleMessage(android.os.Message msg) {
        final int what = msg.what;
        if (what == MSG_ANIMATION) {
            // here change the animation png
            setImageResource(..);
            mHandler.sendEmptyMessageDelayed(MSG_ANIMATION, ANIMATION_DURATION);
        } else if (what == MSG_CANCEL) {
            removeMessages(MSG_ANIMATION);
        }
    };
};

public void startAnimation() {
    // set first animation png
    setImageResource(..);
    mHandler.sendEmptyMessageDelayed(MSG_ANIMATION, ANIMATION_DURATION);
}

public void stopAnimation() {
    mHandler.sendEmptyMessage(MSG_CANCEL);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文