0

呃,我想在动画播放后显示我的文字。在这段代码中,它同时执行了动画和文本,那么我如何等到动画播放完之后再显示文本呢?或者如何在动画播放之前隐藏文本?

package com.example.magic8ballers;

import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.drawable.AnimationDrawable;
import android.view.Menu;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

public class Magic8Ballers extends Activity {
    MediaPlayer song; //song reference
    TextView answer; // TextView reference
    Button button; // Button reference
    Magic8BallersCode m8b; // M8B reference
    // Animation object
    Animation an;


    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_magic8_ballers);

        // associate answer with TextView object with id textView1
        answer = (TextView) findViewById(R.id.textView1);
        // associate button with Button object with id button
        button = (Button) findViewById(R.id.button1);
        button.setText("Shake It!");
        //Create new Magic8Ball object
        m8b = new Magic8BallersCode();
        song = MediaPlayer.create(Magic8Ballers.this, R.raw.magic);


        //Shake it button animation
        Button button = (Button) findViewById(R.id.button1);//reference to the        
        button that shakes it and provides prediction
        final ImageView imgView =
                (ImageView) findViewById(R.id.imageView1);//reference to the animation image

        //Music Buttons                                                     
        Button btnSound = (Button) findViewById(R.id.button2);//reference to the 
        button that turns on the song
        Button btnSound2 = (Button) findViewById(R.id.button3);//reference to the     
        button that turns off the song

        //Animation
        final Animation an = AnimationUtils.loadAnimation(Magic8Ballers.this,
                R.anim.animation);

        //Button for animation
        button.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {

                imgView.startAnimation(an);
                String prediction = m8b.getAnswer();
                // Set the label's text with the new prediction
                answer.setText(prediction);
            }
        });
    }
}
4

2 回答 2

0

你需要添加一个动画监听器:

an.setAnimationListener(new Animation.AnimationListener() {

            public void onAnimationStart(Animation animation) {
                // TODO Auto-generated method stub

            }

            public void onAnimationRepeat(Animation animation) {
                // TODO Auto-generated method stub

            }

            public void onAnimationEnd(Animation animation) {


                // ADD YOU TEXT HERE
            }
        });

动画播放完毕后,听众会添加您的文本。

于 2012-12-27T01:16:55.557 回答
0

您可以尝试使用setAnimationListener method. “动画侦听器从动画接收通知。通知指示动画相关事件,例如动画的结束或重复。” ——“developer.android.com”。

  • 例子:

     an.setAnimationListener( new AnimationListener()
    
    { 
    
        public void onAnimationStart(Aninmation a){
             //Notifies the start of the animation.
          }
    
        public void onAnimationRepeat(Animation a){
            //Notifies the repetition of the animation.
           }
    
        public void onAnimationEnd(Animation a){
            //Notifies the end of the animation.
            //show your text here
        }
    
    });
    
于 2012-12-27T01:22:03.733 回答