안드로이드 스튜디오 주사위게임 앱 제작 4(완성) - 애니메이션 효과 / 효과음 주기
모듈수준 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