기본 구성
manifests 폴더의 activity 부분이 앱실행시 실행되는부분
res 리소스폴더 R이라고 씀
이미지 파일은 res폴더의 drawable 폴더에 넣어놓고
사운드 파일은 res폴더에 rew폴더를 만들어서 보관
MainActivity 기능구현 코드작성부분
build.gradle sdk 버전설정 앱버전설정 dependencies에 사용할 라이브러리 (pip와 비슷한것)
레이아웃디자인 id값으로 기능구현 연결함
기능부분
실행시 에뮬레이터의 모습
잘되던 앱이 갑자기 안된다면 build-tools 부분을 업데이트 하면됨
사용할 api 레벨 (전부하면 용량이 커져서 안됨)
테스트 환경에서는 sdk Platform 33 하나만 설정하였다.
minsdk 21은 최소 21버전이상이면 된다는것.
image asset 으로 앱 아이콘을 변경가능
Clip art는 디자인이 된것을 사용한다는거고
직접등록시 image path를 연결
자주쓰는 디자인 속성
padding (글자와 박스간격을 맞춤)
gravity ( 글자의 위치를 조정)
뷰에 애니메이션효과를 주려면 아래 깃허브
- 안드로이드 애니메이션 오픈소스 라이브러리 : https://github.com/daimajia/AndroidViewAnimations
라이브러리를 사용하기위해 디펜던시에 추가함
사용예시
주사위 굴리는 코드전체
package com.leopard4.diceapp;
import androidx.appcompat.app.AppCompatActivity;
import android.media.MediaParser;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
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);
setContentView(R.layout.activity_main);
// 화면에서 만든 버튼과 이미지뷰를 가져와서 변수로 연결한다.
button = findViewById(R.id.button);
imgDice1 = findViewById(R.id.imgDice1);
imgDice2 = findViewById(R.id.imgDice2);
mp = MediaPlayer.create(this, R.raw.dice_sound);
// 로직을 작성한다.
// 사용자가 주사위버튼 눌렀을때!!
button.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
// 여기 안에다가 코드 작성만 하면 된다.
// 버튼 눌렀을때의 코드 작성
// 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) {
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) {
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);
}
});
}}
01
0