[Android] 내가 써 본 Toast 라이브러리들

Minji Jeong·2022년 5월 26일
1

Android

목록 보기
18/39
post-thumbnail
사용자에게 어떠한 행위에 대한 피드백을 제공하기 위해 우리는 토스트 메세지를 자주 사용한다. 토스트 메세지는 안드로이드 스튜디오에서 기본적으로 제공되는 걸 사용해도 되지만, 기본적으로 제공되는 토스트 메세지는 ui 변경에 제한적이라 자칫하면 좀 허전해 보일 수 있는 단점이 있다. 따라서 오늘은 내가 써 본, 우리가 만드는 어플에 적용해 볼 만한 '꽤 예쁜' 3개의 토스트 메세지 라이브러리들을 추천해 볼까 한다.

1. Motion Toast


Motion Toast는 코틀린으로 개발된 토스트 라이브러리다. API 레벨 21부터 사용이 가능한데, 제공되는 디자인이 4개나 되어서 사용자가 원하는 대로 디자인을 선택해 토스트 메세지를 만들 수 있다는 장점이 있다. 또한 일반적인 토스트 메세지는 보통 한 줄의 메세지만 적어서 넣을 수가 있는데, Motion Toast는 내용 뿐만 아니라 타이틀까지 사용자가 임의로 적을 수 있다.

다만 내가 사용해 봤을 때 느꼈던 단점을 꼽자면 다른 토스트 라이브러리들에 비해 작성해야 하는 코드가 길고(다른 토스트 메세지들은 코드 한 줄이면 구현할 수 있다), 기본 크기가 커서 작은 크기의 토스트를 선호하는 사람들에게는 불호일 수 있다.

사용 방법 🍞

JitPack repository를 build.gradle(Project)에 추가한다.

	allprojects {
		repositories {
			...
			maven { url 'https://jitpack.io' }
		}
	}

build.gradle(Module)에 종속 항목을 추가한다.

	dependencies {
	        implementation 'com.github.Spikeysanju:MotionToast:1.4' 
	}

이후 토스트 메세지를 사용하고 싶은 곳에서 Motion Toast를 호출한다. 4개의 원하는 디자인(Motion, ColorMotion, Dark, DarkColor) 중 하나를 선택한 후, 타이틀과 내용을 적고 MotionToastStyle을 통해 토스트의 용도(Success, Error, Warning, Info) 및 위치, 폰트를 지정하면 끝이다.

MotionToastStyle.TOAST_TYPE : 토스트 타입(SUCCESS, ERROR, WARNING, INFO, DELETE)
MotionToast.GRAVITY_BOTTOM : 토스트가 나타나는 위치(TOP, BOTTOM, CENTER)
MotionToast.DURATION : 토스트 지속 시간(LONG, SHORT)
ResourcesCompat.getFont : 토스트 내의 텍스트 폰트

MotionToast.darkColorToast(
	context as Activity,
    "완료",
    "일기 저장",
    MotionToastStyle.SUCCESS,
    MotionToast.GRAVITY_BOTTOM,
    MotionToast.LONG_DURATION,
    ResourcesCompat.getFont(context as Activity, www.sanju.motiontoast.R.font.helvetica_regular)
)

내가 사용해 본 결과는 다음과 같다.

⚒️ MotionToast ISSUE

토스트 위치를 GRAVITY_TOP 또는 GRAVITY_CENTER로 지정했을 경우 다음과 같이 한쪽으로 쏠려서 나타나는 문제가 있었다. 깃헙 이슈를 확인해보니, 해당 문제는 MotionToast가 아닌 Gravity의 속성을 사용해야 문제가 해결된다고 한다.

binding.openToast.setOnClickListener {
	MotionToast.createToast(
    	requireContext() as Activity,
        	"SUCCESS 😍",
            "성공!",
            MotionToastStyle.SUCCESS,
            Gravity.CENTER_HORIZONTAL,
            MotionToast.LONG_DURATION,
            ResourcesCompat.getFont(requireContext(),R.font.sc_dream4))
 }


2. Fancy Toast


Fancy Toast는 API 레벨 15부터 사용 가능한 토스트 라이브러리다. 기본, Info, Success, Warning, Error, Confusing 총 6개의 디자인이 기본적으로 제공되고, 토스트 내의 아이콘을 변경하거나 오른쪽 상단의 아이콘을 제거하는 등 커스텀해서 사용할 수도 있다. 디자인 면에선 Motion Toast 보다 조금 제한적이라고 생각할 수 있지만, 코드 한 줄이면 구현이 가능하고 좀 더 직관적으로 메세지를 표현할 수 있어서 개인적으론 Motion Toast보다 더 자주 사용할 것 같은 라이브러리다.

사용 방법 🍞

mavenCentral Repository를 build.gradle(Project)에 추가한다.

allprojects {
	repositories {
		...
		mavenCentral()
	}

build.gradle(Module)에 종속 항목을 추가한다.

dependencies {
	...
	implementation 'io.github.shashank02051997:FancyToast:2.0.1'
}

토스트 메세지를 사용하고 싶은 곳에서 Fancy Toast를 호출한다.

FancyToast.makeText(context,"save",FancyToast.LENGTH_SHORT,FancyToast.SUCCESS,true).show()

FancyToast.makeText(context,"delete", FancyToast.LENGTH_SHORT, FancyToast.INFO,true).show()
FancyToast.makeText(
	Context context, 
    CharSequence message, 
    int duration, 
    int type, 
    boolean androidIcon)

FancyToast.LENGTH : 토스트 지속 시간
FancyToast.TOAST_TYPE : 토스트 타입(SUCCESS, WARNING, INFO, ERROR, CONFUSING, DEFAULT, CUSTOM)
boolean : 토스트 상단의 안드로이드 모양 아이콘 유무

내가 사용해 본 결과는 다음과 같다.

3. Styleable Toast


Styleable Toast는 API레벨 16부터 사용 가능한 토스트 라이브러리다. 기본적인 UI는 Fancy Toast와 그렇게 다르지 않지만, 폰트, 배경색, 아이콘 등 토스트의 전반적인 디자인을 styles.xml에서 원하는 대로 지정해 줄 수 있다는 점이 가장 큰 장점이다. 디자인 관점에서 Fancy Toast보다 더 자유롭다고 할 수 있고, 그렇기 때문에 내가 가장 추천하고 싶은 토스트 라이브러리다.

사용 방법 🍞

build.gradle(Module)에 종속 항목을 추가한다.

dependencies {
    implementation 'io.github.muddz:styleabletoast:2.4.0'   
}

styles.xml에서 원하는 토스트 디자인을 정의한다.

    <style name="logoutToast">
        <item name="stTextBold">true</item>
        <item name="stTextColor">@color/mainColor</item>
        <item name="stFont">@font/dosis</item>
        <item name="stTextSize">14sp</item>
        <item name="stColorBackground">@color/white</item>
        <item name="stStrokeWidth">3dp</item>
        <item name="stStrokeColor">#fff</item>
        <item name="stIconStart">@drawable/favorite</item>
        <item name="stIconEnd">@drawable/favorite</item>
        <item name="stLength">SHORT</item> LONG or SHORT
        <item name="stGravity">top</item> top or center
        <item name="stRadius">20dp</item>
    </style>

stTextBold : 텍스트 스타일 Bold 유무
stTextColor : 텍스트 색상
stFont : 폰트
stTextSize : 텍스트 사이즈
stColorBackground : 배경색
stStrokeWidth : 테두리 두께
stStrokeColor : 테두리 색상
stIconStart : 왼쪽에 나타날 아이콘
stIconEnd : 오른쪽에 나타날 아이콘
stLength : 지속 시간
stGravity : 위치
stRadius : 가장자리 둥글게

토스트 메세지를 사용하고 싶은 곳에서 Styleable Toast를 호출한다.

this@MainActivity.let { StyleableToast.makeText(it, "logout", R.style.logoutToast).show() }

context?.let { StyleableToast.makeText(it, "Welcome", R.style.joinToast).show() }

내가 사용해 본 결과는 다음과 같다.

토스트 라이브러리는 내가 앞서 설명한 3가지의 라이브러리 뿐만 아니라 다수의 라이브러리가 존재한다. 위 라이브러리들이 마음에 들지 않는다면, 다음의 사이트에서 원하는 토스트 라이브러리를 찾아보길 바란다. 😀

👉 Top 7: Best Android Native Toast Notification Replacement Libraries

profile
Mobile Software Engineer

0개의 댓글