위는 file explore입니다.
mina.jpg는 그림파일인데 안드로이드에서는 png나 jpg를 쓰는 것을 추천합니다. 저는 아래 사진을 썼습니다.
토스트메시지는 화면에 잠시 나타나는 메시지인데 디버깅할 때나 잠시 사용자에게 메시지를 보여줄 때 유용합니다.
static Toast makeText(Context context, int resId, int duration)
static Toast makeText)Context context, CharSequence text, int duration)
첫번째인자는 액티비티를 전달하므로 액티비티.this로 넘겨주면 되고 두번째인자는 메시지인데 String타입도 가능합니다.
세번째인자는 메시지의 지속시간인데 LENGTH_SHORT나 LENGTH_LONG 값중 하나를 지정합니다.
그리고 마지막에 반드시
show()메소드를 호출해줘야합니다.
다음예제를 봅시다.
activity_main.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="fill_parent"
>
<Button
android:id="@+id/shortmsg"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="짧은 메시지"
/>
<Button
android:id="@+id/longmsg"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="긴 메시지"
/>
<Button
android:id="@+id/count1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="카운트 연속 출력"
/>
<Button
android:id="@+id/count2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="카운트 연속 출력2"
/>
<Button
android:id="@+id/customview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="커스텀 뷰 표시"
/>
</LinearLayout>
toast.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toastlayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<!-- mina는 .jpg파일명을 나타냅니다. -->
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="민아 사랑"
android:textSize="50dp"
/>
<ImageView
android:layout_width = "fill_parent"
android:layout_height = "wrap_content"
android:src="@drawable/mina"
/>
</LinearLayout>
MainActivity 클래스
package com.example.toasttest4;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Toast;
public class MainActivity extends Activity {
Toast mToast = null;
int count;
String str;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.shortmsg).setOnClickListener(mClickListener);//리스너 등록 및 xml객체 가져옴
findViewById(R.id.longmsg).setOnClickListener(mClickListener);//리스너 등록 및 xml객체 가져옴
findViewById(R.id.count1).setOnClickListener(mClickListener);//리스너 등록 및 xml객체 가져옴
findViewById(R.id.count2).setOnClickListener(mClickListener);//리스너 등록 및 xml객체 가져옴
findViewById(R.id.customview).setOnClickListener(mClickListener);//리스너 등록 및 xml객체 가져옴
}
Button.OnClickListener mClickListener = new Button.OnClickListener() {
public void onClick(View v) {
//xml 객체에 따라서 다른 메시지를 출력함.
switch (v.getId()) {
case R.id.shortmsg:
Toast.makeText(MainActivity.this, "잠시 나타나는 메시지",
Toast.LENGTH_SHORT).show();
break;
case R.id.longmsg:
Toast.makeText(MainActivity.this, "조금 길게 나타나는 메시지",
Toast.LENGTH_LONG).show();
break;
case R.id.count1:
str = "현재 카운트 = " + count++;
if (mToast != null) {
mToast.cancel();//cancel메소드를 호출하면 토스트는 사라지지만 이전메시지의 지속시간이 지나야 나타난다.
//이 지속시간을 없앨수가 없다.
}
mToast = Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT);
mToast.show();
break;
case R.id.count2:
str = "현재 카운트 = " + count++;
if (mToast == null) {
mToast = Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT);
} else {
mToast.setText(str);//setText로 하면 즉시 값이 바뀐다.
}
mToast.show();
break;
case R.id.customview:
//여기서는 inflate를 씀.
//inflate란 간단히 말해서 xml을 그대로 화면에 출력하라는 뜻
//toast.xml을 Toast메시지로 출력함.
LinearLayout linear = (LinearLayout)View.inflate(MainActivity.this, R.layout.toast, null);
Toast t2 = new Toast(MainActivity.this);
t2.setView(linear);
t2.show();
break;
}
}
};
}
출력화면입니다. 카운트 연속 출력과 카운트 연속 출력2를 눌러보세요.
카운트 연속 출력은 버튼을 빠르게 누르면 숫자가 잘 안바뀌는데 카운트 연속 출력2를 누르면 빠르게 눌러도 숫자가 잘 바뀌는 것을 알 수 있습니다.
'프로그래밍 > 안드로이드' 카테고리의 다른 글
안드로이드 쓰레드 3번째 쓰레드를 구현하는 클래스와 메인 클래스를 따로 만들어서 처리해보자 (0) | 2012.08.21 |
---|---|
안드로이드 쓰레드 구현 2번째 방법 post 메소드를 이용하자. (0) | 2012.08.21 |
안드로이드 쓰레드 첫번째 예제 handleMessage 구현하는 방법 (1) | 2012.08.21 |
안드로이드 Context Menu를 만들어보자. (0) | 2012.08.16 |
안드로이드 Listener의 이해, 버튼을 누르면 Text가 바뀐다 (0) | 2012.08.15 |
안드로이드 스마트폰 진동을 내맘대로 다뤄보자 (0) | 2012.08.03 |
사운드폴을 이용한 음악파일 출력 (0) | 2012.08.03 |
안드로이드 비프음을 내보자. (1) | 2012.08.03 |