파이티스

안드로이드 스튜디오 주사위게임 앱 제작 4(완성) - 애니메이션 효과 / 효과음 주기 본문

Android/APP 만들기

안드로이드 스튜디오 주사위게임 앱 제작 4(완성) - 애니메이션 효과 / 효과음 주기

파이티스 2023. 8. 18. 14:53

 

 

모듈수준 Gradle

주사위 눈이 랜덤으로 바뀔때마다 주사위에 애니메이션 효과를 주기위해서 가장 먼저 해야 할 것은 모듈수준 Gradle에 아래와 같이 라이브러리를 설치해 주어야 한다.

implementation 'com.daimajia.androidanimations:library:2.4@aar'

 

애니메이션 로직 구현

 

첫번째 주사위 id : imageView2

두번째 주사위 id : imageView3

 

Techniques.Shake 는 애니메이션 효과중 하나로 흔들리는 효과를 준다. 

duration(400) 는 애니메이션의 진행시간을 조정한다. 밀리초 단위 ( 현재 0.4초 )

repeat(0) 는 애니메이션의 반복 횟수를 결정한다. ( 현재 0번 )

 

                YoYo.with(Techniques.Shake)
                        .duration(400)
                        .repeat(0)
                        .playOn(imageView2);
                YoYo.with(Techniques.Shake)
                        .duration(400)
                        .repeat(0)
                        .playOn(imageView3);

 

효과음 주기

 

멤버변수 만들기 

 

    MediaPlayer mp;

MediaPlayer 클래스를 사용하여 리소스 폴더에 있는 오디오 파일을 재생하는 로직 구현

 

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

 

지난 시간에 안드로이드 스튜디오 주사위게임 앱 만들기 1,2,3과정에서 미리 이미지와 효과음 wav파일을 복사하여 붙여넣어두었다.

 

 

버튼을 눌렀을때 효과음 재생

 

public void onClick(View view) 메서드 안에 mp.start(); 를 작성한다.

 

이는 MediaPlayer 객체의 start() 메서드를 호출하여 오디오 재생을 시작하도록 하는 것이다.

 

 public void onClick(View view) {

                // 1. 주사위 굴리는 소리
                mp.start();

 

완성

 

아래는 안드로이드 스튜디오 주사위게임 앱 만들기 최종 소스코드 이다. 지난시간들의 모든 내용과 이번시간에 애니메이션 효과 및 효과음 주기까지 로직구현이 완성되었으므로 안드로이드 앱개발 공부에 도움이 되었으면 한다.

 

public class MainActivity extends AppCompatActivity {

    ImageView imageView2;
    ImageView imageView3;
    Button button;

    MediaPlayer mp;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        imageView2 = findViewById(R.id.imageView2);
        imageView3 = findViewById(R.id.imageView3);
        button = findViewById(R.id.button);

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


        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                // 1. 주사위 굴리는 소리
                mp.start();

                Random random = new Random();
                int num1 = random.nextInt(5 + 1);
                int num2 = random.nextInt(5 + 1);

                if (num1 == 0) {
                    imageView2.setImageResource(R.drawable.dice1);
                } else if (num1 == 1) {
                    imageView2.setImageResource(R.drawable.dice2);
                } else if (num1 == 2) {
                    imageView2.setImageResource(R.drawable.dice3);
                } else if (num1 == 3) {
                    imageView2.setImageResource(R.drawable.dice4);
                } else if (num1 == 4) {
                    imageView2.setImageResource(R.drawable.dice5);
                } else if (num1 == 5) {
                    imageView2.setImageResource(R.drawable.dice6);
                }


                if (num2 == 0) {
                    imageView3.setImageResource(R.drawable.dice1);
                } else if (num2 == 1) {
                    imageView3.setImageResource(R.drawable.dice2);
                } else if (num2 == 2) {
                    imageView3.setImageResource(R.drawable.dice3);
                } else if (num2 == 3) {
                    imageView3.setImageResource(R.drawable.dice4);
                } else if (num2 == 4) {
                    imageView3.setImageResource(R.drawable.dice5);
                } else if (num2 == 5) {
                    imageView3.setImageResource(R.drawable.dice6);
                }


                // 4. 에니메이션 효과를 준다.
                YoYo.with(Techniques.Shake)
                        .duration(400)
                        .repeat(0)
                        .playOn(imageView2);
                YoYo.with(Techniques.Shake)
                        .duration(400)
                        .repeat(0)
                        .playOn(imageView3);

            }

        });

    }
}

 

애니메이션 관련 참고 링크

 

아래는 안드로이드 스튜디오 애니메이션 효과에 대한 공부를 할 수 있도록 정리가 되어있는 깃허브 링크 url이다. 위에서 예제로 만들었던 Shake 외에도 다양한 Animation 효과들이 있으며 많은 정보들이 잘 정리되어있으므로 많은 도움이 될것이다. https://github.com/daimajia/AndroidViewAnimations