Как сделать так, чтобы анимация начиналась при касании и прекращалась при повторном касании? - PullRequest
2 голосов
/ 30 декабря 2011

У меня есть приложение для Android, которое я сделал, и все работает, но я хочу добавить код, который остановит анимацию, когда я снова коснусь экрана. Как вы можете видеть из кода, я запустил анимацию, но я могу остановить ее, только выйдя из программы, я хотел бы иметь возможность коснуться экрана во второй раз, чтобы остановить анимацию и воспроизведение звука.

Спасибо.

import android.app.Activity;
import android.os.Bundle;
import android.graphics.drawable.AnimationDrawable;
import android.media.MediaPlayer;
import android.view.MotionEvent;
import android.widget.ImageView;



public class WigleActivity extends Activity {
/** Called when the activity is first created. */

MediaPlayer mp;
AnimationDrawable animation;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    mp = MediaPlayer.create(this, R.raw.sexy);

    ImageView imageView1 = (ImageView)findViewById(R.id.imageView1);
    imageView1.setBackgroundResource(R.anim.wanim);
    animation = (AnimationDrawable) imageView1.getBackground();       
}

protected void onPause() {
    super.onPause();

    mp.release();
    finish();
}

public boolean onTouchEvent (MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
    mp.start();
    animation.start();
    return true;

}
return super.onTouchEvent(event);
}

}

1 Ответ

1 голос
/ 30 декабря 2011

Измените свой код onTouch на следующее:

public boolean onTouchEvent (MotionEvent event) {
  if (event.getAction() == MotionEvent.ACTION_DOWN) {
    if (animation.isRunning()) {
       mp.stop();
       animation.stop();
    } else {
       mp.start();
       animation.start();
    }
    return true;

  }
  return super.onTouchEvent(event);
}
...