在Android中,如何让动画与TextToSpeech语句同时播放

在Android中,如何让动画与TextToSpeech语句同时播放,android,Android,我在线性布局中的ChordActivity应用程序中有一组按钮。单击按钮时,我希望TextToSpeech引擎能够说出所单击按钮的名称(例如,Minor 7th),这样可以正常工作。我还希望一个按钮'弹出,然后回来'的动画发生,我也有工作。问题是,无论我如何安排代码,首先是语音,然后是动画。我希望它们同时发生。我知道TextToSpeech有自己的消息队列,所以我假设如果我使用runnable来制作动画,我可以让语音和动画同时发生,但事实并非如此。然后我退出了runnable,现在有了下面的代码

我在线性布局中的ChordActivity应用程序中有一组按钮。单击按钮时,我希望TextToSpeech引擎能够说出所单击按钮的名称(例如,Minor 7th),这样可以正常工作。我还希望一个按钮'弹出,然后回来'的动画发生,我也有工作。问题是,无论我如何安排代码,首先是语音,然后是动画。我希望它们同时发生。我知道TextToSpeech有自己的消息队列,所以我假设如果我使用runnable来制作动画,我可以让语音和动画同时发生,但事实并非如此。然后我退出了runnable,现在有了下面的代码。有人能解决这个问题吗?非常感谢

private void speakChordMessage(View v) {
        image = (ImageView) v;
        image.startAnimation(animScale);
        chordTTS.playSilence(2000, TextToSpeech.QUEUE_FLUSH, null);
        chordTTS.speak(str1, TextToSpeech.QUEUE_FLUSH, null);
        while (chordTTS.isSpeaking()) {
        }
    }
animscale.xml代码:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_decelerate_interpolator" >
    <scale
        android:duration="200"
        android:fromXScale="1.0"
        android:fromYScale="1.0"
        android:pivotX="100%"
        android:pivotY="0%"
        android:repeatCount="1"
        android:repeatMode="reverse"
        android:startOffset="0"
        android:toXScale="1.3"
        android:toYScale="1.25" />
</set>

如果在调用startAnimation之前向动画中添加了,则将有一个

public void onAnimationStart(Animation animation){}

与TextToSpeech引擎不同的是,动画被添加到队列系统中,不会立即执行。如果在onAnimationStart()中调用chordTTS.speak(),应该会大大减少您看到的延迟。从这里开始,您可能需要尝试小延迟以达到预期效果。

完美。工作起来很有魅力!完美的工作起来很有魅力!在这个网站上,我是否有一个过程来证明你的这一点?@JoeBarry通过点击“向下”箭头下方的绿色复选标记来接受他的答案。