일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 부스트코스
- 테이블_레이아웃
- 리니어 레이아웃
- 텍스트뷰 스크롤
- 데이터베이스
- 코틀린
- 제약 레이아웃
- 자바
- 안드로이드_프로그래밍
- 드로어블
- textview auto scroll
- 프로그래밍
- 아이폰
- IOS
- SceneDelegate
- RecyclerView
- 안드로이드
- 스낵바
- 코드리뷰
- 상대 레이아웃
- 액션바
- 수명주기
- 텍스트뷰 자동 스크롤
- edwith
- 뷰
- 프로젝트
- 서비스
- 레이아웃
- 안드로이드 스튜디오
- Swift
- Today
- Total
듀다의 성장개발로그
[부스트코스] 안드로이드 프로그래밍 08 - 토스트 본문
앱을 구성하다 보면 메시지가 잠시 떴다 사라지게 하는 기능이 필요할 때가 있을 것입니다.
여러분이 사용하시는 앱에서도 이 기능을 많이 보셨을겁니다. 물론 안드로이드 스튜디오로 이런 기능을 만들 수 있습니다. 음식과 연관짓는 것을 좋아하는 안드로이드답게 이 기능을 '토스트'라고 부릅니다.
토스트를 추가하는 것은 매우 간단합니다.
메소드 Toast.makeText를 호출합니다. 그리고 그 안에 적절한 인자를 넣고 .show()를 붙여주기만 하면 끝. 지정된 시점에서 메시지가 출력됩니다. 인자로는 Context, 내용, 토스트 길이가 들어갑니다.
그럼 조금씩 바꿔볼까요?
출력 위치를 바꿀 때는 setGravity를 활용할 수 있습니다.
그런데 setGravity를 사용하기도 전에 메시지가 출력되어서는 안되겠죠?
또, 토스트가 한 번만 쓰이고 사라진 탓에 setGravity를 사용할 수 있는 대상도 없습니다.
그래서 이 때는 show()를 붙이지 말고, 토스트도 Toast toast라는 변수에 저장해둡니다.
이제 toast.setGravity를 호출하면 위치가 변경됩니다.
인자로는 gravity, x오프셋, y오프셋이 들어가고, '|'연산자로 gravity를 두 개 이상 지정할 수 있습니다.
toast.show()를 호출하면 설정한 gravity에서 오프셋 값 만큼 떨어진 위치에 토스트가 출력됩니다.
토스트의 모양도 바꿀 수 있습니다.
새 xml파일에서 모양을 정의해주고, 그 모양을 갖는 뷰를 소스코드상에 정의해줍니다.
그리고 토스트의 모양을 해당 뷰의 모양으로 지정해주면 끝. 다음과 같이 표현할 수 있겠네요.
인플레이터를 선언하고. 새로 선언된 View layout에 객체 모양과 그 모양을 담을 레이아웃을 지정해줍니다.
xml파일의 데이터를 갖는 새 View 인플레이터로 이 객체를 만들어 준 것인데요,
인플레이션/인플레이터에 대해서는 추후 포스팅에서 자세히 다루겠습니다.
그리고 새 View인 'layout'의 텍스트 내용을 "모양을 바꾼 토스트입니다."로 설정해줍니다.
그리고 나서 토스트를 생성하고, setView를 통해 이 토스트의 모양을 layout에 담긴 모양으로 바꾸어 주는 것입니다.
토스트 대신 다른 기능으로도 메시지를 잠깐 출력시키는 것이 가능합니다.
역시 먹는 것과 관련된 스낵바라는 기능입니다.
이 기능은 그냥 선언해서는 사용할 수 없고, 외부 라이브러리를 추가해주어야 합니다.
파일 - Project Structure를 클릭합니다.
Dependencies를 클릭하고 app에서 +를 클릭합니다. 그리고 Library Dependency를 클릭합니다.
design을 검색해 가장 위의 design이라는 라이브러리를 추가합니다. 버전은 강의와 맞추기 위해 25로 설정했습니다.
그리고 위와 같이 뷰, 메시지, 길이를 설정하고 show()를 붙여 주면 스낵바가 출력됩니다.
스낵바는 반드시 뷰를 인자로 가져야 하는데요, 최상위 레이아웃이나 화면에 존재하는 뷰를 인자로 넣을 수 있습니다.
단말기상에 스낵바를 토스트 메시지와 함께 출력시킬 수 있습니다.
스낵바가 좀 더 깔끔하지 않나요?
<생각해 보기>
- 토스트 메시지를 여러 번 띄울 때는 얼마만큼의 시간이 지연되어 보일까요?
- 이전까지의 토스트 메시지가 띄워지고 사라지는 시간만큼 지연되어서 보일 것입니다. 한번에 하나씩만 보여주기 때문이죠. - 알림 대화상자 외에 대화상자를 직접 만들어서 띄울 수도 있을까요?
- 화면에 무언가 띄우는 기능이 여러 가지 있을 거라고 생각합니다. 그 기능들을 적절히 사용하면 대화상자를 직접 만드는 것도 가능할 것 같습니다. - 대화상자에서 사용자 입력을 받을 수 있도록 대화상자 안에 입력상자를 넣고 싶다면 어떻게 해야 할까요?
- 대화상자 설정 코드에 입력 텍스트를 출력하는 코드를 넣어서 구현할 수 있습니다.
오늘은 유용하고 중요한 기능들인 토스트와 스낵바에 대해서 이야기해보았습니다. [부스트코스] 덕분에 앱 개발에 필요한 것들을 하나하나 찾아가는 느낌이네요. 특히 오늘 중요한 퍼즐 조각을 하나 더 맞춘 것 같은 느낌이 듭니다.
'안드로이드 > 부스트코스' 카테고리의 다른 글
[부스트코스] 안드로이드 프로그래밍 10 - 인플레이션 (0) | 2020.02.14 |
---|---|
[부스트코스] 안드로이드 프로그래밍 09 - 나인패치 이미지와 비트맵 버튼 (0) | 2020.02.14 |
[부스트코스] 안드로이드 프로그래밍 07 - 이벤트 (0) | 2020.02.12 |
[부스트코스] 안드로이드 프로그래밍 06 - 테이블 레이아웃과 스크롤뷰 (0) | 2020.02.12 |
[부스트코스] 안드로이드 프로그래밍 - 프로젝트 A 코드 리뷰 (0) | 2020.02.12 |