ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [안드로이드 kotlin] 토스트 메시지 사용하기
    안드로이드(kotlin)/기능 관련 2020. 1. 4. 16:16

    토스트 메시지에 대해서 정리해보려고 합니다.

    사용자에게 간단하게 정보를 보여주기 위해서 종종 사용되는 기능입니다.

    토스트 메시지는 기본 토스트 메시지커스텀 메시지로 보여줄 수 있습니다.

     

    소스를 보고싶으신 분들은 아래 주소에서 확인하실 수 있습니다.

    완성된 소스 : https://github.com/dailyshow/kotlinToast.git

     

    기본 토스트 메시지 사용 방법

    < activity_main.xml >

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context=".MainActivity">
     
        <Button
            android:id="@+id/btn1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="기본 토스트" />
     
        <Button
            android:id="@+id/btn2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="커스텀 토스트" />
     
    </LinearLayout>
    cs

     

    < MainActivity.java >

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class MainActivity : AppCompatActivity() {
     
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
     
            btn1.setOnClickListener {
                var t1 = Toast.makeText(this"토스트 메시지", Toast.LENGTH_SHORT)
                t1.show()
            }
        }
    }
    cs

     

    < 결과 화면 >

    하단 가운데에 토스트 메시지가 잠깐 나타났다가 사라집니다. 나타나는 시간을 조정하시고싶다면

    Toast.makeText(this"토스트 메시지", Toast.LENGTH_SHORT) 부분에서 세 번째 인자부분인 Toast.LENGTH_SHORT 대신에 Toast.LENGTH_LONG으로 변경해주시면 조금 더 길게 보여지게 됩니다.

     

    커스텀 토스트 메시지 사용 방법

     xml 파일은 위와 똑같습니다.

    기본 토스트와 다른점은 보여주고 싶은 화면을 하나 더 만들어야 한다는게 다른점이겠네요.

    layout 파일을 하나 만들어줍니다.

     

    < custom_toast.xml >

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
     
        <ImageView
            android:id="@+id/iv"
            android:layout_width="wrap_content"
            android:layout_height="200dp"
            android:src="@drawable/twice" />
     
        <TextView
            android:id="@+id/tv"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="twice"
            android:textSize="20sp"
            android:textColor="#000"
            android:gravity="center"/>
     
    </LinearLayout>
    cs

    보여주고싶은 사진을 drawable 폴더에 넣어주고 imageview에서 불러오도록 합니다.

     

    < MainActivity.java >

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    class MainActivity : AppCompatActivity() {
     
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
     
            btn2.setOnClickListener { view ->
                var v1 = layoutInflater.inflate(R.layout.custom_toast, null)
     
                v1.setBackgroundResource(android.R.drawable.toast_frame)
     
                var t2 = Toast(this)
                t2.view = v1
                t2.show()
     
            }
        }
    }
     
    cs

    < 결과 화면 >

    커스텀 토스트를 이용해서 화면에 메시지가 잠깐동안 나타나도록 해주었습니다.

    이렇게 커스텀 토스트를 이용하면 그림도 보여줄 수 있게됩니다.

     

    setBackgroundResource 를 이용하면 토스트 메시지의 배경도 지정할 수 있습니다.

    위 예제에서는 android.R.drawable.toast_frame 를 이용했기 때문에 회색의 배경색이 나타났습니다.

     

    여기에 추가적으로 더 수정할 수 있습니다.

    이미지와 텍스트를 변경하도록 해봅니다.

     

    < 내용 추가한 MainActivity.java >

    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
     
    class MainActivity : AppCompatActivity() {
     
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
     
            btn2.setOnClickListener { view ->
                var v1 = layoutInflater.inflate(R.layout.custom_toast, null)
     
                v1.setBackgroundResource(android.R.drawable.toast_frame)
     
               var image: ImageView = v1.findViewById(R.id.iv)
               image.setImageResource(R.mipmap.ic_launcher)
     
               var text: TextView = v1.findViewById(R.id.tv)
               text.text = "토스트"
               text.setTextColor(Color.BLACK)
     
                var t2 = Toast(this)
                t2.setGravity(Gravity.CENTER, 0400)
                t2.view = v1
                t2.show()
     
            }
        }
    }
     
    cs

    < 결과 화면 >

    이미지, 글자, 토스트 위치가 변경되었습니다.

     

    댓글

Designed by Tistory.