Android

[안드로이드] 안드로이드스튜디오(Android Studio) 토스트(Toast) 보여주기(show), 토스트 위치 변경하기(change location), 토스트 모양 변경하기(change shape), 안드로이드 예제, 안드로이드 강좌

정보처리마법사 2016. 8. 10. 22:11
반응형

[안드로이드] 안드로이드스튜디오(Android Studio) 토스트(Toast) 보여주기(show), 토스트 위치 변경하기(change location), 토스트 모양 변경하기(change shape), 안드로이드 예제, 안드로이드 강좌

 

참고 : 이미지서명은 제 와이프 블로그 이미지서명입니다. 

 

 

 

 

안녕하세요 정보처리마법사 입니다.

이번 포스팅의 주제는 토스트(Toast)에 관한 내용입니다.

토스트는 사용자의 시야를 가리면서 메시지를 전달하는 방식이어서 일반적으로 중요한 내용을 알리는 목적으로 사용합니다. 기본적으로 화면 하단부에 보여지며 사용자가 어떤 반응을 보이지 않더라도 설정한 일정시간이 지나면 자동적으로 사라집니다.

 

먼저 토스트 보여주기에 관해 살펴보겠습니다.

일단 레이아웃에 버튼을 하나 추가해주고, 아이디를 btnToastShow로 잡아놨습니다.

 

 

Activity 를 상속받고 View.OnClickListener 를 구현한 MainActivity 입니다.

Button btn = (Button)findViewById(R.id.btnToastShow);

버튼을 하나 선언하여 레이아웃의 그 버튼을 연결해주고 이벤트리스너를 설정해줬습니다.

그리고 onClick()메소드를 구현했습니다. 이미지서명때문에 끝이 조금 잘렸습니다.

Toast.makeText(this, "토스트입니다.", Toast.LENGTH_SHORT).show(); 입니다.

이렇게 그냥 문자열로 토스트를 보여줄 수 도 있고, string.xml 파일에 문자열을 지정한 후

Toast.mackText(this, R.string.toast, Toast.LENGTH_SHORT).show(); 처럼 리소스 아이디로 토스트를

보여주는 것도 가능합니다.

Toast.LENGTH_SHORT 는 약 2초동안 토스트를 보여주는 옵션이며 Toast.LENGTH_LONG 은 약 3초정도 토스트를 보여줍니다.

 

 

디바이스로 테스트를 해봤습니다. 토스트보기 버튼을 클릭하니

아래쪽에 "토스트입니다." 라는 토스트가 보여집니다.

 

그리고 이어서 토스트 위치 변경하는 방법을 살펴보겠습니다.

토스트는 기본적으로 화면 하단부에 나타납니다. 이 위치를 변경하고 싶다면 setGravity() 메소드로 원하는 위치를 지정하면 됩니다.

 

android.widget.Toast 클래스의 setGravity() 메소드

void setGravity(int gravity, int xOffset, int yOffset) : 화면에 보여줄 토스트의 위치를 설정합니다.

gravity : 토스트를 보여줄 기본 위치.

xOffset : 지정된 gravity에 기반한 상대적 x 위치(x 오프셋값).

yOffset : 지정된 gravity에 기반한 상대적 y 위치(y 오프셋값.

 

 

레이아웃에 버튼을 다섯 개 배치합니다.

 

 

버튼의 아이디는 그냥 디폴트로 생성되는 button, button2, ... 등으로 하겠습니다.

 

 

이번 예제 역시 Activity 클래스를 상속받고 View.OnClickListener 인터페이스를 구현하는 MainActivity 입니다. 일단 다섯개의 버튼을 선언하고 레이아웃의 그 버튼들과 연결을 해주고 이벤트 리스너를 설정해줍니다.

 

 

onClick() 메소드를 구현해줍니다. switch 문을 사용하든 if 문을 사용하든 본인이 편하신 대로 구현하시면 됩니다. viewToast() 메소드를 만들어서 호출하였습니다. viewToast() 메소드 내부를 살펴보면 앞서 설명 했던 setGravity() 메소드를 사용했음을 쉽게 알 수 있습니다.

 

 

 

 

디바이스로 실행한 모습입니다. 잘 작동 하는군요.

 

그리고 마지막으로 토스트 모양 변경하는 방법을 살펴보겠습니다.

Toast 클래스에는 뷰의 모양을 변경할 수 있도록 setView() 메소드가 선언되어 있습니다.

 

activity_main.xml 의 모습입니다.

 

 

res/layout/toast_layout.xml 파일을 새로 하나 만들어서 다음과 같이 레이아웃을 만듭니다.

res/drawable 내에 테스트용 아주 작은 이미지 papoo.png를 미리 넣어놨습니다.

 

 

메인액티비티 소스코드 입니다.

LinearLayout layout = (LinearLayout) getLayoutInflater().inflate(R.layout.toastlayout, null);

토스트 모양을 정의한 레이아웃을 인플레이션(inflation)을 통해 객체로 얻어옵니다.

인플레이션은 XML 레이아웃 파일을 읽어 View객체의 트리 구조로 만들어 코드에서 사용할 수 있게 해주는 작업을 말하며, 이 기능은 안드로이드 플랫폼 내부적으로 쓰이지만 LayoutInflater 클래스를 사용하면 직접 XML 레이아웃을 읽을 수 있으며 사용법은 다음과 같습니다.

LayoutInflater inflater = context.getLayoutInflater();

View row = inflater.inflate(R.layout.list_row, null);

 

View로 받지 않고 다음처럼 작성해서 LinearLayout으로 변환할 수도 있습니다.

 

LinearLayout row = (LinearLayout) inflater.inflate(R.layout.list_row, null);

 

이 코드에서 사용한 context는 액티비티가 될 수도 있고, 아니면 액티비티에서 getApplicationContext() 메소드를 호출해서 얻은 컨텍스트(Context) 객체일 수도 있습니다. 그러므로 이러한 컨텍스트 객체만 얻을 수 있다면 인플레이션은 어디서든 사용할 수 있습니다.

 

toast.setView(layout);

인플레이션으로 얻어온 레이아웃 객체를 토스트에 설정합니다.

이 코드로 인해 토스트의 레이아웃이 변경됩니다.

 

 

디바이스에서 테스트한 모습입니다.

 


 

이상으로 포스팅을 마칩니다. 감사합니다.


 


 




참고서적 : 200개의 단계별 예제로 배우는 안드로이드 4.0 [제이펍]






Fin.


잘 못 된 정보가 있으면 말씀해주세요~


공감버튼 클릭은 작성자에게 큰 힘이 됩니다.  행복한 하루 되세요.


 

반응형