2010/04/07

[Android Dev.] 맛있는 토스트 메세지 뿌리기~~ Toast

안드로이드에는 사용자에게 알려주기 위한 수단으로 몇가지가 있는데 그 중 가장 간단한 방법이 Toast 메세지 이다. Toast 메시지는 아래와 같이 화면에 뿌려지게 된다.



Toast 는 두가지 방법에 의해 출력이 가능한데 그 첫 번째는 텍스트만 뿌리는 방법이고 두 번째는 Toast 메세지 창에 View 얹어 출력하는 방법이다.



문자만 출력하는 Toast

Toast makeText() 함수를 이용하면 간단하게 메세지를 뿌릴 수 있다.




public static Toast makeText( Context context, CharSequence text, int duration)

context : 사용될 Context. 일반적으로 Application 이나 Activity 를 넘겨 준다.

text : 출력될 메세지

duration : 출력된 시간





duration 은 Toast 의 상수로 짧은 시간을 의미하는 Toast.LENGTH_SHORT 와 긴 시간을 의미하는
Toast.LENGTH_LONG 이 있다.



아래 코드는 간단하게 Toast Message 를 뿌리는 코드이다.

Toast.makeText(this, "Toast Message", Toast.LENGTH_SHORT ).show();






View 를 출력하는 Toast

Toast 창에 뿌려질 View 의 XML 리소스 코드 ( custom_toast.xml )

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<ImageView
android:src="@drawable/icon"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:text="Custom Toast Message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>



Toast toast = new Toast(this);

LayoutInflater inflater = getLayoutInflater();
View vToast = inflater.inflate( R.layout.custom_toast, null);

toast.setView( vToast );

toast.setDuration( Toast.LENGTH_LONG );
toast.show();





위의 코드를 실행하면 아래와 같이 Toast 창에 지정한 View 출력이 된다.



XML 리소스를 사용하지 않고 코드로 View 구성하여 지정할 수 있다.

Toast toast = new Toast(this);

LinearLayout vToast = new LinearLayout(this);
vToast.setOrientation(LinearLayout.HORIZONTAL);

ImageView ivIcon = new ImageView(this);
ivIcon.setImageResource(R.drawable.icon);

TextView tvMsg = new TextView(this);
tvMsg.setText("Toast Message by Code");

vToast.addView(ivIcon);
vToast.addView(tvMsg);

toast.setView( vToast );

toast.setDuration( Toast.LENGTH_LONG );
toast.show();







Toast 출력 위치 지정하기


Toast 의 setGravity 함수를 이용하면 Toast 출력 위치를 지정할 수 있다.





public void setGravity (int gravity, int xOffset, int yOffset)

gravity : 메세지 출력 위치 상수 (Gravity 참조)

xOffset, yOffset : 출력 위치로 부터의 Offset





Toast toast = Toast.makeText(this, "Toast Message", Toast.LENGTH_LONG );

// 왼쪽 아래에 출력
toast.setGravity( Gravity.BOTTOM | Gravity.LEFT, 0, 0 );

// 오른쪽 아래에 출력
toast.setGravity( Gravity.BOTTOM | Gravity.RIGHT, 0, 0 );

toast.show();







<

Original Post : http://neodreamer-dev.tistory.com/405

No comments :

Post a Comment