본문 바로가기

[Android]/Google Developers

[Android Core] Toast 파해치기 1편

안녕하세요!

허접샴푸입니다.

 

Toast 에 대해 알아보겠습니다. 1편!

출처 : https://developer.android.com/guide/topics/ui/notifiers/toasts

 

토스트 개요  |  Android 개발자  |  Android Developers

토스트는 작은 팝업으로 작업에 관한 간단한 피드백을 제공합니다. 메시지에 필요한 공간만 차지하며 진행 중인 활동은 그대로 표시되고 상호작용도 유지됩니다. 토스트는 시간이 초과하면 자동으로 사라집니다. 예를 들어, 이메일에서 Send를 클릭하면 아래의 화면 캡처와 같이 '메시지를 보내는 중...'이라는 토스트가 트리거됩니다. 상태 메시지에 사용자 응답이 필요하다면 알림을 사용하는 것이 좋습니다. 기본 사항 먼저, makeText() 메서드 중에 하나를 사용

developer.android.com

 

[개요]

토스트는 작은 팝업으로 작업에 관한 간단한 피드백을 제공합니다.

- 메시지에 필요한 공간만 차지하며 진행 중인 활동은 그대로 표시되고 상호작용도 유지됩니다(UI 블록킹이 일어나지 않는다는 뜻).

- 시간이 초과하면 자동으로 사라집니다.

 

(참고)

시간이라하면 Parameter로는 (duration)

Toast.LENGTH_SHORT : 2초

Toast.LENGTH_LONG  : 3.5초

이 있습니다. 위 시간은 아쉽지만 커스터마이징 할 수 없습니다!

 

private static final int LONG_DELAY = 3500; // 3.5 seconds
private static final int SHORT_DELAY = 2000; // 2 seconds

출처 : https://android.googlesource.com/platform/frameworks/base/+/f76a50c/services/java/com/android/server/NotificationManagerService.java

 

services/java/com/android/server/NotificationManagerService.java - platform/frameworks/base - Git at Google

 

android.googlesource.com

 

 

[활용]

<기본 사항>

그림을 보면 "Hello toast!"라고 Toast 가 띄워진 것을 확인할 수 있습니다.

makeText() 메서드 중에 하나를 사용하여 Toast 객체를 인스턴스화합니다.

여기서 makeText() 메서드 중에 하나라고 하는 이유는 아래 사이트에서 makeText를 검색하시면 알 수 있습니다.

https://android.googlesource.com/platform/frameworks/base/+/f4bed684c939b0f8809ef404b8609fe4ef849263/core/java/android/widget/Toast.java

 

core/java/android/widget/Toast.java - platform/frameworks/base - Git at Google

* Copyright (C) 2007 The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * http://www.apache.org/lice

android.googlesource.com

(1) public static Toast makeText(Context context, CharSequence text, @Duration int duration)

(2) public static Toast makeText(Context context, @StringRes int resId, @Duration int duration)

 

위와 같이 두개의 메서드가 오버로딩 되어있습니다. 하나는 CharSequence라고 해서 단순히 "Hello World!" 형태의 문자열을 인자로 넘겨주시면 되며,

다른 하나는 @StringRes int resId 라고 해서, res > values 폴더에 있는 strings.xml 에 있는 문자열의 Id를 인자로 넘겨줍니다. 예를 들어 strings.xml에 가장 기본적으로 있는 app_name을 Toast 로 띄우고 싶으면 아래와 같이 작성하면 됩니다.

 

2편에서는 Toast 위치 지정에 대해서 분석해보도록 하겠습니다!