왜 이글을 쓰게 되었냐면
오늘 마켓에 올라온 에브리타운을 설치했는데
아래 처럼 토스트가 뜨길래 쓰게 되었다.
한때 네이트에서 열심히 하던 게임
이 게임을 보기전엔 있다고만 말만 들었지 본적이 없었다.
커스텀 토스트에 대해 알고 흥미있을 당시에는 만들어 봤더니
뭐가 문제인지 오류가 났었고, 그래서 그냥 포기
아무튼 깔끔하게 정리된 예제가 없어서
대충 필요한걸 정리하였다.
이미지 바꾸기
내용 바꾸기
배경색 바꾸기
배경이미지 바꾸기
토스트 중복실행 방지
package com.example.customtoast;
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btnTest = (Button) findViewById(R.id.button1);
btnTest.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
/*
//커스텀 토스트에 사용될 레이아웃과 레이아웃 속 보여줄 레이아웃 id
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.custom,
(ViewGroup) findViewById(R.id.gggg));
//배경색 지정
layout.setBackgroundColor(Color.argb(150, 0, 255, 42));
//이미지 지정
ImageView image = (ImageView) layout.findViewById(R.id.imageView1);
image.setImageResource(R.drawable.t1);
//텍스트 지정
TextView text = (TextView) layout.findViewById(R.id.textView111);
text.setText("1번을 눌렀지");
//토스트정의
Toast toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 0);//토스트 위치
toast.setDuration(Toast.LENGTH_SHORT);//토스트 보여지는 시간
toast.setView(layout);//위에 설정한 레이아웃을 보여준다.
toast.show();//토스트 보여주기
*/
//중복방지용 토스트 실행
ToastAll(getApplicationContext(), R.string.bt1);
}
});
Button btnTest2 = (Button) findViewById(R.id.button2);
btnTest2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
/*
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.custom,
(ViewGroup) findViewById(R.id.gggg));
//layout.setBackgroundColor(Color.argb(255, 240, 255, 0));//a: 투명도 rgb: 색상
layout.setBackgroundResource(R.drawable.ic_launcher);//배경색 대신 배경이미지 배경색과 동시에 안된다. 이미지 맞추는건 나인패치를 하면 될듯
ImageView image = (ImageView) layout.findViewById(R.id.imageView1);
image.setImageResource(R.drawable.t2);
TextView text = (TextView) layout.findViewById(R.id.textView111);
text.setText("이건 2번이야");
Toast toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_SHORT);
toast.setView(layout);
toast.show();*/
//중복방지용 토스트 실행
ToastAll(getApplicationContext(), R.string.bt2);
}
});
}
//토스트 중복방지를 위해 설정 토스트가 안보일때 false 보일때 true 기본설정은 당연히 false
boolean flag = false;
public void ToastAll(Context context, int case_toast) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.custom,
(ViewGroup) findViewById(R.id.gggg));
ImageView image = (ImageView) layout.findViewById(R.id.imageView1);
TextView text = (TextView) layout.findViewById(R.id.textView111);
Toast mToast = new Toast(context.getApplicationContext());
switch (case_toast) {
case R.string.bt1:
layout.setBackgroundColor(Color.argb(255, 240, 255, 0));
image.setImageResource(R.drawable.t3);
text.setText(R.string.bt1);
break;
case R.string.bt2:
layout.setBackgroundColor(Color.argb(255, 1, 170, 136));
image.setImageResource(R.drawable.ic_launcher);
text.setText(R.string.bt2);
break;
}
mToast.setGravity(Gravity.CENTER_VERTICAL, 0, 80);
mToast.setDuration(Toast.LENGTH_SHORT);
mToast.setView(layout);
if(flag == false){
flag = true;
mToast.show();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
flag = false;
}
}, 2000);//토스트 켜져있는 시간동안 핸들러 지연 대충 숏이 2초 조금 넘는거 같다.
} else{
Log.e("","토스트 켜져있음");
}
}
}
결과
커스텀 토스트 예제 프로젝트 파일이다.
'Android' 카테고리의 다른 글
안드로이드 롤리팝 크롬모바일 컬러 탭 지원 (0) | 2016.03.24 |
---|---|
V2s - 옵티머스 뷰2 사이드 메뉴 (0) | 2013.06.30 |
SharedPreferences if 적용이 안될때 (0) | 2013.06.30 |