当前位置: 首页 > 知识库问答 >
问题:

soundPool在onAnimationStart时不播放内部循环

辛渝
2023-03-14

我有一个ImageViews数组,ImageViews将彼此缩放。现在我想在onAnimationStart动画循环播放短丁音(持续时间不到一分钟)。

public void AnimationAtEnd() {

    for (ck = 0; ck < totalCount; ck++) {

            ScaleAnimation scale = new ScaleAnimation(0f, 1.6f,0f,1.6f,
                    Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);

            scale.setInterpolator(new LinearInterpolator());
            scale.setStartOffset(ck * 600);
            scale.setDuration(600);
            scale.setAnimationListener(new Animation.AnimationListener() {
                @Override
                public void onAnimationStart(Animation animation) {    
                       mySoundPool.play(2, 1, 1, 1, 0, 1);          
                }

                @Override
                public void onAnimationEnd(Animation animation) {

                }

                @Override
                public void onAnimationRepeat(Animation animation) {

                }
            });

            images_cen[ck].startAnimation(scale);

        }
    }
}

下面是我如何定义soundPool和load声音的。

mySoundPool = new SoundPool(
                3,
                AudioManager.STREAM_MUSIC,
                0
        );
    mySoundPool.load(this, R.raw.circuit, 1);
    mySoundPool.load(this, R.raw.ding, 1);
    mySoundPool.load(this, R.raw.block, 1);

我该怎么做???还是有什么问题???

PS1:

共有1个答案

牛越
2023-03-14

即使您设置了动画startoffset,OnAnimationStart也将在images_cen[ck].startanimation(scale);之后不久调用

我建议您改用animator

ObjectAnimator scale = ObjectAnimator.ofPropertyValuesHolder(images_cen[ck],
                    PropertyValuesHolder.ofFloat(View.SCALE_X, 0, 1.6f),
                    PropertyValuesHolder.ofFloat(View.SCALE_Y, 0, 1.6f)
                    );
scale.setInterpolator(new LinearInterpolator());
scale.setStartDelay(ck * 600);
scale.setDuration(600);
final View view = images_cen[ck];
scale.addListener(new Animator.AnimatorListener() {
                @Override
                public void onAnimationStart(Animator animation) {
                    view.setVisibility(View.VISIBLE);
                    mySoundPool.play(2, 1, 1, 1, 0, 1);
                }

                @Override
                public void onAnimationEnd(Animator animation) {

                }

                @Override
                public void onAnimationCancel(Animator animation) {

                }

                @Override
                public void onAnimationRepeat(Animator animation) {

                }
            });
scale.start();

 类似资料:
  • 我想用MediaPlayer或SoundPool播放URL中的短声音,但当我尝试播放时,什么都没有发生。 我有此MP3链接格式:“http://www.universal-soundbank.com/802a/805020000000000000000000000pkjn800000000000000000000000000000090/g/85055050505050505050505/k/98

  • 主要内容:本节引言:,1.相关方法介绍:,3.使用代码示例:,4.OnLoadCompleteListener监听声音文件是否加载完毕,5.示例代码下载:,本节小结:本节引言: 第九章给大家带来的是Android中的多媒体开发,与其说是多媒体开发还不如是多媒体相关API的 的使用,说下实际开发中我们做了一些和多媒体搭边的东西:拍照,录音,播放音乐,播放视频... 嗯,好吧,好像就这些了是吧,比如播放音乐,我们只是调用MediaPlayer,找到音乐文件, 然后调用下play方法播放而已...当然

  • 如何在按钮点击时发出随机的声音? 我对编程世界很陌生,我以前检查过上面的链接,试图用它作为播放随机声音的参考。我使用SoundPool因为我知道它比MediaPlayer更擅长播放短片段。我总共有四个声音。

  • 音乐播放器在没有外置存储器的智能手机上运行,应用程序会崩溃,而在有外置存储器的智能手机上运行。你能告诉我为什么。 Java类 activity XML listitem.xml 错误日志 谢谢你的帮助

  • 我试图在一个循环中的两个上播放动画,其中ImageViews的图像在每个循环中都发生变化,但正如预期的那样,用户只看到最后一个图像和动画。 在其他文章中,我尝试了和等方法,但都没有成功。 该程序的目的是让用户选择9张照片,然后根据照片的RGB构图与计算机图像进行岩石-纸-剪刀式的格斗。 程序从两个数组列表中获取ImageViews的照片,是drawable文件夹中文件名字符串的数组列表,以及是的数

  • 我试图在任意年份的经济衰退中计算复利。以下promise函数计算可变投资组合的发展。 编辑的清晰度: const是一个从1到20循环一年的数组(是静态的) 三元()在每次运行的不同年份触发,导致不同年份的