화면에 코드로 조작할 클래스를 멤버변수로 만들어준다.
변수명은, 화면의 아이디 값과 똑같이 지어주면, 개발이 편하다.
Button button;
ImageView imgDice1;
ImageView imgDice2;
화면에서 만든 UI 컴포넌트와 자바의 변수를 연결한다.!
button = findViewById(R.id.button);
imgDice1=findViewById(R.id.imgDice1);
imgDice2=findViewById(R.id.imgDice2);
setOnClickListener 함수에 있는 View.OnClickListener() 파라미터를 이용해 버튼을 누를때마다 난수를 생성하고 난수에 해당하는 이미지 파일로 바뀌는 코드이다.
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 0. 버튼 누르자마자 주사위 굴리는 소리를 낸다.
mp.start();
// 1. 랜덤으로 숫자를 2개 가져온다.
Random random = new Random();
int num1=random.nextInt(6); //0~5까지 정수를 가져오라는 뜻.
int num2=random.nextInt(6); //
// 2. 해당 숫자에 맞게, 주사위 이미지를 바꿔준다.
if (num1==0){
// 주사위 1에 해당되는 이미지를, 이미지 뷰에 표시한다.
imgDice1.setImageResource(R.drawable.dice1);
} else if (num1 == 1){
imgDice1.setImageResource(R.drawable.dice2);
} else if (num1 == 2){
imgDice1.setImageResource(R.drawable.dice3);
} else if (num1 == 3){
imgDice1.setImageResource(R.drawable.dice4);
} else if (num1 == 4){
imgDice1.setImageResource(R.drawable.dice5);
} else if (num1 == 5) {
imgDice1.setImageResource(R.drawable.dice6);
}
if (num2==0){
// 주사위 1에 해당되는 이미지를, 이미지 뷰에 표시한다.
imgDice2.setImageResource(R.drawable.dice1);
} else if (num2 == 1){
imgDice2.setImageResource(R.drawable.dice2);
} else if (num2 == 2){
imgDice2.setImageResource(R.drawable.dice3);
} else if (num2 == 3){
imgDice2.setImageResource(R.drawable.dice4);
} else if (num2 == 4){
imgDice2.setImageResource(R.drawable.dice5);
} else if (num2 == 5) {
imgDice2.setImageResource(R.drawable.dice6);
}
// 3. 에니메이션 효과를 준다.
YoYo.with(Techniques.Shake).duration(400).repeat(0)
.playOn(imgDice1);
YoYo.with(Techniques.Shake).duration(400).repeat(0)
.playOn(imgDice2);
}
View.OnClickListener()
전체 코드
package com.example.diceapp;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import com.daimajia.androidanimations.library.Techniques;
import com.daimajia.androidanimations.library.YoYo;
import java.util.Random;
public class MainActivity extends AppCompatActivity {
// 화면에 코드로 조작할 클래스를 멤버변수로 만들어준다.
// 변수명은, 화면의 아이디 값과 똑같이 지어주면, 개발이 편하다.
Button button;
ImageView imgDice1;
ImageView imgDice2;
MediaPlayer mp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_main);
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
// 화면에서 만든 UI 컴포넌트와 자바의 변수를 연결한다.!
button = findViewById(R.id.button);
imgDice1=findViewById(R.id.imgDice1);
imgDice2=findViewById(R.id.imgDice2);
mp = MediaPlayer.create(MainActivity.this,R.raw.dice_sound);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 0. 버튼 누르자마자 주사위 굴리는 소리를 낸다.
mp.start();
// 1. 랜덤으로 숫자를 2개 가져온다.
Random random = new Random();
int num1=random.nextInt(6); //0~5까지 정수를 가져오라는 뜻.
int num2=random.nextInt(6); //
// 2. 해당 숫자에 맞게, 주사위 이미지를 바꿔준다.
if (num1==0){
// 주사위 1에 해당되는 이미지를, 이미지 뷰에 표시한다.
imgDice1.setImageResource(R.drawable.dice1);
} else if (num1 == 1){
imgDice1.setImageResource(R.drawable.dice2);
} else if (num1 == 2){
imgDice1.setImageResource(R.drawable.dice3);
} else if (num1 == 3){
imgDice1.setImageResource(R.drawable.dice4);
} else if (num1 == 4){
imgDice1.setImageResource(R.drawable.dice5);
} else if (num1 == 5) {
imgDice1.setImageResource(R.drawable.dice6);
}
if (num2==0){
// 주사위 1에 해당되는 이미지를, 이미지 뷰에 표시한다.
imgDice2.setImageResource(R.drawable.dice1);
} else if (num2 == 1){
imgDice2.setImageResource(R.drawable.dice2);
} else if (num2 == 2){
imgDice2.setImageResource(R.drawable.dice3);
} else if (num2 == 3){
imgDice2.setImageResource(R.drawable.dice4);
} else if (num2 == 4){
imgDice2.setImageResource(R.drawable.dice5);
} else if (num2 == 5) {
imgDice2.setImageResource(R.drawable.dice6);
}
// 3. 에니메이션 효과를 준다.
YoYo.with(Techniques.Shake).duration(400).repeat(0)
.playOn(imgDice1);
YoYo.with(Techniques.Shake).duration(400).repeat(0)
.playOn(imgDice2);
}
});
}
}
'Aandroid Studio > 기능' 카테고리의 다른 글
[android] RecyclerView와 Adapter를 이용하여 리스트를 화면에 표시하는 방법 (1) | 2024.06.10 |
---|---|
[android] SharedPreferences 를 이용한, 데이터 저장과 불러오기 (0) | 2024.06.07 |
[android] 액티비티간, 단방향 전달, 백버튼 누를때 전달 방법 (0) | 2024.06.07 |
[android] Toast, Snackbar, AlerDialog 팝업창 띄우는 방법 (0) | 2024.06.05 |
[android] 앱이름, 아이콘, 바꾸기, 액션바 없애기 (0) | 2024.06.04 |