본문 바로가기

Daily Sample

[Day6] Android Custom ToastView 소스

TITLE : Android ToastViewToastView
Date : 04/17/2010
Writen by Dayyoung
Description :
This is Source that make Custom ToastView by XML Inflator.
사용자 정의 ToastView 구현.
Download : 


일반적인 ToastView의 형태는 다음과 같다.

Toast.makeText(getApplicationContext(), “Hello!\nNomarl Test”, Toast.LENGTH_LONG).show();

명령으로 생성및 알림화면을 뛰우면서 debug/실시간에러 표시에도 활용된다.


1. 사용자정의 를 원하는 뷰의 배경을 그림판으로 제작합니다.


2. mytoast.xml 이라는 사용자정의 XML을 구성합니다. (레이아웃안에는 본인이 희망하는 뷰집합)

레이아웃과 텍스트의 ID 및 drawble에 그림판으로 제작한 이미지를 적용합니다.


3. 실시간으로 mytoast.xml파일을 인스턴스화 화며,

인스턴스화된 레이아웃을 역시 실시간으로 생성한 ToastView에 적용한다.

LayoutInflater inflater = getLayoutInflater();

//레이아웃을 뷰처럼 인스턴스화 시켜줄 인플래이터 호출

View layout = inflater.inflate(R.layout.mytoast,(ViewGroup)findViewById(R.id.my_toast_layout_root));

//레이아웃 생성

TextView text = (TextView)layout.findViewById(R.id.text);

text.setText(“경고! \n 안드로바이러스 침투!”);

//레이아웃에 소속된 textView 호출

Toast toast = new Toast(getApplicationContext());

//Toast 생성 인자값이 this가 아닌이유는 Toast생성을 액티비티가 아닌 버튼에서 하기 때문이다.

toast.setGravity(Gravity.CENTER, 0, 0);

toast.setDuration(3);

toast.setView(layout);

//Toast에 생성된 layout 적용

toast.show();

//토스트 화면 전환




<부록 - View를 Custom하기위한 일반사항>

1. View는 Layout이고 Layout은 View 이다.

말이 좀 이상한데. . 안드로이드 라이브러리에서는 두개를 동일한 요소로 보고있습니다.

Layout은 Android XML로 사용자가 위치를 조정하는 역할을 하는건데 . .머가 같은지 모르겠지만

즉, Layout을 쓸때도 View처럼 쓸 수 있다는 거라네요. 컴퍼지트 패턴이 적용됫다고 합니다..

컴포지트 패턴(Composite Pattern) : 컴포지트 패턴을 이용하면 객체들을 트리 구조로 구성하여 부분과 전체를 나타내는 계층구조로 만들 수 있습니다. 이 패턴을 이용하면 클라이언트에서 개별 객체와 다른 객체들로 구성된 복합 객체(Composite)를 똑같은 방법으로 다룰 수 있습니다.

2. 일반적으로 View를 사용자정의 할 때에는 아답터패턴이 쓰인다.

토스트뷰에서는 아답터패턴이 쓰이지 않은 단순한 경우이지만 대부분의 사용자정의 뷰를 만들때는 아답터패턴이 쓰임.

어댑터 패턴(Adapter Pattern) : 한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환합니다. 어댑터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있습니다.

[출처] 객체지향 디자인 패턴 – head first design pattern 요약|작성자 오사마


Creative Commons License
이 저작물은 크리에이티브 커먼즈 저작자표시 3.0 Unported 라이선스에 따라 이용할 수 있습니다.