(수정 중...)
오늘은 기본적인 안드로이드
알림과 효과음에 대해서 알아보자!!!
1. toast
2. dialog
1. 메시지
2. 목록
3. singlechoice
4. multichoice
5. custom
3. soundpool
1. toast
우선 들어가기에 앞서서 context에 대한 개념만 알고 가자.
Context : OS의 대리인 객체
를 뜻하며 context를 통해 알림 등 여러 권한을
허가받는 느낌이라고 생각하면 된다.
하지만 app에선 이를 접근하기가 복잡해
MainActivity가 이를 상속받아서 만들어졌다.
따라서 context가 필요할 땐 MainActivity를 불러야 한다.!!
우선 toast에 대해 알아보자.
toast는 어떤 작용을 했을 때
화면 아래에 나타나는 메시지 등을 말한다.
위의 사진의 heart와 같은 형식으로 나타난다.
우선 toast를 실습하기 위해
버튼을 하나 만들어주자.
그리고 자바로 와서
버튼을 xml로부터 받아와서
리스너를 익명클래스로 만들고
토스트 객체를 만들었다.
이때 파라미터 첫 번째에 있는 것은
context를 부른 것으로
MainActivity를 부른 것이다.
두 번째는 어떤 글자가 뜨게 할 건지 적는 칸이며
세 번째는 얼마나 오래 뜨게 할 건지이다.
LONG은 약 4초 정도
SHORT은 약 2초 정도라고 한다.
(시간은 조금씩 바뀌니까 대략적으로 생각하자.)
그럼 아랫부분에 이렇게 Toast가 발생하며
옆에 아이콘은 보통
자기 앱 아이콘이 출력이 된다.
2. dialog
dialog는
위의 화면과 같이 새로운 창이 뜨는 형태로
종류도 여러 가지가 있다.
여러 개를 체크하는 것,
여러개 중 하나를 클릭하는 것,
내 마음대로 커스텀할 수 있는 것 등이 있다.
1. 메시지
우선 dialog를 실습하기 위해
버튼을 xml에서 하나 만들어주자.
참조변수에 버튼 뷰를 넣어주고
setOnclick리스너를 만든 후
onclick메소드에
AlertDialog.Builder라는 다이얼로그를 만들게 도움을 주는
객체를 만들어주자.
(파라미터엔 context!)
그리고 만든 builder를 통해
타이틀을 무엇으로 할 건지
아이콘은 무엇으로 할 건지
그리고 메시지를 무엇으로 할 건지
정한다.
그리고 긍정의 버튼과
부정의 버튼을 눌렀을 때
어떻게 반응할지에
대해서도 설정할 수 있다.
마지막으로 dialog를 create 하게
하고 show를 해주면 된다.
그럼 위와 같은 화면이 탄생한다.
2. 목록
이번엔 목록에 있는 것 중
하나를 선택하는 dialog다.
우선 멤버변수에
String배열로 각각의 item들을 넣어준다.
그리고 dialogbuilder를 만든 뒤
위의 코드처럼 적어주면 된다.
하나씩 설명해 보자면
builder.setItems라는 기능을 써서 미리 만들어둔
문자열 배열을 사용해 준다.
그리고 바로 익명클래스를 만들어서
Toast.makeText를 입력한다.
아까와 같이 첫 번 짼 context, 두 번째 어떤 것이 나올지
세 번째 길게 출력할지, 짧게 출력할지이다.
그리고 t.show()를 따로 써도 되지만
바로 뒤에 붙여 쓰는 것이 편하다.
그리고 ok와 cancel을 눌렀을 때
해당되는 문자가 나오게 설정한 것이다.
결과물을 켰을 때
다이얼로그 바깥쪽이나
뒤로 가기 버튼을 눌러도
꺼지는 경우가 있는데
이를 막으려면
dialog.setCanceledOnTouchside(false);
dialog.setCancelLabel(false);
를 써줘야 한다.
(다이얼로그를 쓰려면 거의 필수!)
3. singlechoice
singlechoice는
어제 배운 radiobutton과 같은 개념이다.
하나만 체크할 수 있는 형태다.
하나를 처음에 체크된 상태로 하기 위해
멤버변수에 배열 index 번호 중 하나로 초기화한
int 자료형을 만들자.
그리고
builder를 이용해
setSingleChoiceItems 기능을 쓰자.
처음엔 어떤 items를 넣을 건지 적고
(String 배열로 아까 만든 거)
체크돼서 나올 아이템이 뭔지
index 번호를 적어주고
리스너 객체를 생성해 주자.
그리고 OK버튼을 누르면
그것이 toast로 뜨게 설정을 해주자.
여기서 파라미터는
1 - context
2 - 어떤 아이템 출력할지
3 - 짧게, 길게 할지
이다.
결과물은 위와 같이
화면 아랫부분에 Banana라고 뜨는 것을 볼 수 있다.
(바나나를 선택했으니까)
4. multichoice
이번엔 어제 배운 체크박스처럼
여러 개를 선택할 수 있는
다이얼로그이다.
boolean 배열이 필요해서
멤버변수에 이를 만들어준다.
(체크되었는지, 아닌지를 담고 있으니까)
역시 builder를 이용해
setMultiChoiceItems 기능을 이용해 준다.
(이름이 참 직관적이다.)
파라미터엔
1 - 어떤 item들인지
2 - 체크된 상태
3 - 리스너
가 들어간다.
바로 익명클래스로 만들어서
boolean 값을 조정하면 된다.
그러면 OK버튼을 눌렀을 때
내가 선택한 것들을 Toast로도 출력이 가능하다.
(아직.. 엔터는 어떻게 추가해야 할지.. 모르겠다..)
5. custom
custom은 말 그대로 내가 원하는 방식대로
다이얼로그를 사용하는 것이다.
예를 들자면 위와 같은
다이얼로그를 만들 수 있다.
물론 java로도 구현이 가능하겠지만
xml로 하는 것이 훨씬 편할 것이다.
우선 res폴더 안에 layout 폴더를 눌러서
dialog라는 xml파일을 새로 만들어주자.
그리고 width는 그 다이얼로그에 들어갈 정도로 설정하고
나머지는 내가 넣고 싶은 대로 만들어주면 된다.
우린 여기서 Text와
이미지, 버튼을 넣었다.
그리고 자바로 돌아와서
멤버변수의 참조변수를 선언해 주고
builder.setView를 이용해서 그 모양을
가져와주었다.
그리고 언제나 이 부분은 default다.
builder를 통해 create 하고 show는
singlechoice든 multi 든 다 해야 한다.!!
만약 custom 한 다이얼로그 내에서
버튼을 클릭했을 때
글자를 바꾸고 싶거나
사진을 바꾸고 싶으면
dialog.show()를 한 부분으로 와서
다이얼로그 안에 있는 custom View들을 찾아서 제어해줘야 한다.
우리가 지금껏 했던 onClickListener를 이용해서
text를 바꾼다든가
이미지도 바꿀 수 있다.
버튼을 눌렀더니
good job이 출력되었다.!!
(원래는 CUSTOM VIEW)
3. soundpool
우선 액티비티 메인 xml에서 리니어 레이아웃으로 바꾸고
버튼 4개를 만들었다.
그럼 위와 같은 미리보기 화면을 볼 수 있다.
그럼 자바로 가서
모든 참조변수를 만들어주고
+
Soundpool 참조변수
음원 ID 저장용 변수들을 만들어준다.
그전에 res 폴더를 오른쪽으로 눌러서
new - android resource Directory를 눌러서
Resource type에 raw를 찾아주자.
(노래, 영상은 손상되면 안되서 여기다 저장..)
그리고 효과음을 컨트롤 c 해서
raw폴더에 컨트롤 v 해주자.
그 후에
onCreate 메소드에서
사운드풀 객체를 만들어 음원들을 등록할 것이다.
우선 Builder 객체를 만들어주자.
그리고 미리 만들어둔 int형 아이디 저장용 참조변수에
각각의 고유 Id들을 저장하자.
sp.load를 사용
(priority는 우선순위를 말하며, 보통 0으로 하길 권장)
그리고 이제 버튼들에 뷰를 넣어주고
setOnClickListener을 이용해서
onClick했을 때 sp.play 즉 시작이 되게 하면된다.
right, left volume값을 각각 설정할 수 있으며
priority는 10에 가까울수록 높은 것이다.
그리고 rate는 재생속도를 뜻한다.
'# 개발 > Android' 카테고리의 다른 글
Android #7 - AdapterView (국비33일차) (0) | 2023.02.16 |
---|---|
Android #6 - Menu (국비32일차) (0) | 2023.02.15 |
Android #4 - CompoundButton, RelativeLayout, FrameLayout (국비30일차) (0) | 2023.02.13 |
Android #3 - 새 버전 설치, imageView (국비29일차) (0) | 2023.02.10 |
Android #2 - Activity, View (국비28일차) (0) | 2023.02.09 |