본문 바로가기

[Android]/Google Developers

[Android Core] Snackbar 파해치기 1편

안녕하세요!

허접샴푸입니다~!

 

Snackbar에 대해 알아보겠습니다.

 

Snackbar는 무엇인가?

출처: https://material.io/components/snackbars/#usage

Snackbar은 화면 하단에 앱 프로레스에 관한 간단한 메세지를 제공합니다.

참조: https://material.io/components/snackbars/#usage

 

Snackbar 클래스가 Toast를 대체합니다.

현재 Toast도 여전히 지원되지만 간략한 임시 메시지를 표시하는 데 Snackbar가 더 많이 사용됩니다.

출처 : https://developer.android.com/training/snackbar

 

즉, Toast 보다는 Snackbar를 사용하라는, 권장한다는 뜻이군요! ㅋㅋ

 

이번 편에서 알아볼 것은 다음과 같습니다.

[알아볼 것]

- 어떠한 동작에 대해 간단한 피드백을 제공한다.

- 폰 스크린 아래에 간단한 메세지를 보여줄 수 있다. 큰 화면 기기에서는 왼쪽 아래에 표시된다.

- Snackbar는 화면에 있는 모든 다른 항목들 위에 표시되며 한번에 하나씩만 보여진다.

 

 

[사전 중요사항]

Snackbar를 사용하기 위해서는 build.gradle (Module: app)에 아래와 같이 dependency를 추가해주셔야 합니다!

 

dependencies {

...

implementation 'com.google.android.material:material:1.1.0'

...

}

 

 

 

[알아보자]

1. 먼저 Snackbar 사용법과 화면에 어떻게 표시되는지 봐볼까요?

Snackbar.make() 메서드를 호출하여 Snackbar 객체를 만듭니다. 

static Snackbar

make(View view, CharSequence text, int duration) | make(View view, int resId, int duration)

view = 뷰를 지정하여야 하며, Snackbar는 Snackbar를 화면에 보여줄 수 있도록 해당 view의 부모 view를 찾게 됩니다. (즉 button을 view로 넣었다면, button을 품고 있는 부모 view를 찾아 그 부모 view에 Snackbar를 띄운다는 소리겠죠?  (^오^)

 

text = 문자열을 집어넣으면 됩니다. or resId = 정수값의 id 이니, strings.xml의 id를 집어넣어주라는 소리겠쥬?

 

duration = LENGTH_LONG, LENGTH_SHORT, LENGTH_INDEFINITE 세 종류 중 하나를 넣으시면 됩니다. LENGTH_INDEFINITE 요놈은 무한으로 보여줘야 할 때 사용하시면 됩니다. 참고로 Toast 와 다르게 직접 8000(8초)라고 입력해서 원하는 시간만큼 보여주는 것도 가능하답니다.

 

 

(결과 화면)

Hello World 라고 Snackbar(회색 배경의 바)가 화면 아래에 표시됩니다. 

 

 

 

2. They show a brief message at the bottom of the screen on mobile and lower left on larger devices(폰 스크린 아래에 간단한 메세지를 보여줄 수 있다. 큰 화면 기기에서는 왼쪽 아래에 표시된다.. 라고 구글 developers 문서에 나와있는 데 과연 그럴까요?

(이것은 제가 궁금해서... ㅎㅎ)

 

(결과 화면)

Nexus9 Tab에서 실행한 화면

뭡니까 이게? 왼쪽 아래가 아닌 화면 중간 아래에 작게 표시되네요? Lower Left on Larger devices라고 공식 문서에 나와있는데 더 큰 기기에서 실행해야 하는건가... 아무튼 매우 중요한 사항은 아니므로 PASS!

 

 

 

3. Snackbar는 한번에 하나만 표시된다?

 

(결과 화면)

두개를 띄울 수 있도록 코딩을 하였으나 역시 Hello World2 밖에 표시되지 않습니다. 결국 한번에 하나만 표시 되는군요!

 

오늘은 여기까지입니다~!

다음 2편에서 찾아오도록 하겠습니다! 2편에서는 더 파해쳐 보도록 하겠습니다!

 

궁금한 점이 있으면 댓글로 남겨주세요~!

혹시 만들고 싶으신 뷰가 있으시면 댓글로 남겨주십쇼.

제가 만들어서 리뷰할 수 있도록 하겠습니다!