LinearLayout の ChordActivity アプリケーションに一連のボタンがあります。ボタンがクリックされると、TextToSpeech エンジンがクリックされたボタンの名前 (例: Minor 7th ) を読み上げるようにします。これは正常に動作しています。また、「飛び出してから戻る」ボタンのアニメーションを発生させたいと思っています。これも機能しています。問題は、コードをどのように配置しても、スピーチが最初に発生し、その後にアニメーションが発生することです。同時に実現してほしい。TextToSpeech には独自のメッセージ キューがあることがわかっているので、ランナブルを使用してアニメーションを実行すれば、音声とアニメーションを同時に実行できると思いましたが、そうではありませんでした。その後、ランナブルをバックアウトしたところ、次のコードが作成されました。誰かがこれに対する解決策を持っていますか? とても有難い。
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>