ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ Android ] Toast / Snackbar 보여주기
    Android/Java 2020. 5. 19. 23:22

     

      CatServant  

     Toast ( 토스트 )

    Toast는 간단한 메시지를 잠깐 보여주었다가 없어지는 뷰로 앱화면에 종속되지 않습니다. 이는 실행영역보다 앞쪽에 보이는 뷰이기 때문에 앱이 화면에 보이지 않는 상태에서도 Toast가 보일 수 있다는 의미입니다.

    Toast

     Code

        Context context = getApplicationContext();
        CharSequence text = "Hello toast!";
        int duration = Toast.LENGTH_SHORT;
    
        Toast toast = Toast.makeText(context, text, duration);
        toast.show();
        Toast.makeText(getApplicationContext(), "Hello toast!", Toast.LENGTH_SHORT).show();

    Toast를 띄우기 위해서는 makeText() 함수에 3개의 인자 정보를 넘겨줍니다. 여기서 3번째 인자는 Toast message를 화면에 띄우는 시간을 지정하는 인자로 Toast class 안에 정의된 static 멤버 변수로 지정이 가능합니다.

    설명
    Toast.LENGTH_SHORT 짧게 Toast message를 표시합니다.
    Toast.LENGTH_LONG 길게 Toast message를 표시합니다.

    1. Toast 위치 지정

    일반적으로 Toast 알림은 화면 하단 가운데에 표시됩니다.  setGravity(int, int int)  메서드를 사용하면 이 위치를 변경할 수 있습니다. 이 메서드는 ( Gravity 상수, x-좌표 offset, y-좌표 offset )의 3가지 매개변수를 사용합니다.

    2. 맞춤 Toast View 만들기

    Toast 알림용 맞춤설정된 Layout을 만들 수 있습니다. 먼저, View Layout을 정의하고 root View 객체를 setView(View) 메서드에 전달하면 됩니다.

     

     

     SnackBar

    사용자가 메시지에 응답할 수 있다는 점에서 Toast와는 다릅니다. 메시지 텍스트 옆에 버튼을 두고 버튼을 누르면 작업을 취소할 수 있습니다. Snackbar는 잠시 후에 자동으로 사라지므로, 사용자가 확실히 메시지를 보거나 버튼을 누를 기회가 없을 수 있습니다.

    SnackBar https://developer.android.com/training/snackbar/action.html

     Code - 메시지에 작업 추가

        <android.support.design.widget.CoordinatorLayout
            android:id="@+id/myCoordinatorLayout"
            xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
    
            <!-- Here are the existing layout elements, now wrapped in a CoordinatorLayout -->
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical">
    
                <!-- …Toolbar, other layouts, other elements… -->
    
            </LinearLayout>
        </android.support.design.widget.CoordinatorLayout>

    앱에서 다른 Layout 객체를 사용하는 경우, 위와 같이 CoordinatorLayout에서 기존 Layout 요소를 랩핑하는 것(LinearLayout 부분)이 가장 간단한 방법입니다.

        public class MyUndoListener implements View.OnClickListener {
    
            @Override
            public void onClick(View v) {
                // Code to undo the user's last action
            }
        }
        Snackbar mySnackbar = Snackbar.make(findViewById(R.id.myCoordinatorLayout),
                R.string.email_archived, Snackbar.LENGTH_SHORT);
        mySnackbar.setAction(R.string.undo_string, new MyUndoListener());
        mySnackbar.show();

     SetAction()  메서드를 사용하여 Snackbar에 Listener를 연결합니다.

    시스템에서 동시에 여러 Snackbar 객체를 표시하지 않으므로, 현재 다른 Snackbar를 표시 중이면 시스템에서 Queue에 Snackbar를 넣고 현재 Snackbar가 닫힌 다음 표시합니다. 

    CoordinatorLayout을 사용하는 이유

    1. Snackbar를 스와이프하여 닫을 수 있습니다.

    2. Sanckbar가 표시되면 레이아웃에서 다른 UI 요소를 이동시킵니다.

     

     Code - 메시지만 표시

        Snackbar.make(findViewById(R.id.myCoordinatorLayout), R.string.email_sent,
                                Snackbar.LENGTH_SHORT)
                .show();

    메시지만 표시하려고 하면 Snackbar의 참조를 유지하지 않아도 되므로 메서드 체인을 사용하여 하나의 명령문으로 Snackbar를 만들고 표시하는 것이 일반적입니다.

     

     

    출처

    'Android > Java' 카테고리의 다른 글

    [ Android ] Application Class  (0) 2020.07.12

    댓글

Designed by Tistory.