반응형

토스트 (Toast)


앱을 실행하다 보면 중간중간 디버깅을 위한 메시지를 출력해보고 싶은 경우가 생깁니다.

이때 Log 클래스를 이용해 콘솔에 메시지를 출력할 수 있는데, 이 메시지를 화면에 보여주고 싶다면 토스트를 사용할 수 있습니다.

토스트는 간단한 메시지를 잠깐 보여주었다가 없어지는 뷰인데, 앱 화면에 종속되지 않습니다.

실행영역보다 앞쪽에 보이는 뷰이기 때문에 앱이 화면에 보이지 않는 상태에서도 토스트가 보일 수 있다는 의미죠.

토스트 메시지를 보여주고 싶다면 다음과 같은 코드 형태를 사용합니다.

Toast.makeText(Context context, String message, int duration).show();

토스트가 보이는 위치를 바꿀 수도 있는데요, 위치를 바꾸고 싶다면 setGravity와 setMargin 메소드를 사용합니다.

토스트의 모양도 바꿔줄 수 있어서 XML 레이아웃을 만든 후에 setView 메소드를 이용해 토스트 객체에 XML 레이아웃을 설정하면 됩니다.

스낵바는 아래쪽에서 잠깐 올라왔다가 사라지는 뷰입니다.

토스트처럼 사용하긴 하지만 앱의 화면 안에서 보이게 됩니다.

스낵바를 사용할 때의 코드 형태는 토스트를 사용할 때와 유사하기 때문에 코드 사용이 어렵지는 않습니다.

Snackbar.make(v, "스낵바입니다.", Snackbar.LENGTH_LONG).show();

다만 Snackbar의 make 메소드를 호출할 때 첫 번째 파라미터로 뷰 객체를 넣어주어야 한다는 점이 다릅니다.

이 뷰는 앱 화면에 들어있는 어떤 뷰라도 상관없습니다.

스낵바의 색상을 용도에 따라 바꿔주면 사용자가 메시지를 볼 때 정상 상태인지, 경고 상태인지, 아니면 긴급 상태인지 등을 직관적으로 알려줄 수 있습니다.





알림 대화상자(AlertDialog) 사용하기

알림 대화상자는 사용자에게 어떤 내용을 알려주거나 '아니오', '예' 버튼을 선택하도록 만들고 싶을 때 사용됩니다.

알림 대화상자는 AlertDialog 객체를 만들고 show 메소드를 이용해 화면에 표시하게 됩니다.

AlertDialog 객체를 만들 때는 AlertDialog.Builder 객체를 사용합니다.

알림 대화상자에는 타이틀, 안내 메시지, 아이콘 그리고 예, 아니오 버튼 등을 설정할 수 있습니다.

AlertDialog.Builder builder = new AlertDialog.Builder(this); 

builder.setTitle("안내");
builder.setMessage("종료하시겠습니까?");
builder.setIcon(android.R.drawable.ic_dialog_alert);

builder.setPositiveButton("확인", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int whichButton) {
        String message = "확인 버튼이 눌렸습니다. ";
        …중략

    }
});

AlertDialog dialog = builder.create(); 
dialog.show();

 


Q.토스트 메시지를 여러 번 띄울 때는 얼마만큼의 시간이 지연되어 보일까요?

A.(마지막 띄운 시간 - 처음 띄운 시간) 만큼 지연되어 보일 것 같습니다.


Q.알림 대화상자 외에 대화상자를 직접 만들어서 띄울 수도 있을까요?

A.네. 결국 토스트나 대화상자도 코딩하여 만든 module일테니 가능할 것 같습니다.


Q.대화상자에서 사용자 입력을 받을 수 있도록 대화상자 안에 입력상자를 넣고 싶다면 어떻게 해야 할까요?

A.대화상자에 들어갈 view로 edit text를 넣으면 가능할거 같습니다.

반응형

'안드로이드 개발 > 부스트코스(안드로이드 프로그래밍)' 카테고리의 다른 글

비트맵 버튼 만들기  (0) 2019.03.05
나인패치 이미지  (0) 2019.03.05
Event  (0) 2019.03.04
스크롤뷰  (0) 2019.03.03
테이블 레이아웃(Table Layout)  (0) 2019.03.03
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기