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 요약|작성자 오사마
이 저작물은 크리에이티브 커먼즈 저작자표시 3.0 Unported 라이선스에 따라 이용할 수 있습니다.
'Daily Sample' 카테고리의 다른 글
[Day8] Android Custom Button 소스 (0) | 2011.11.30 |
---|---|
[Day7] Android Twitter Test 소스 (사용불가x) (0) | 2011.11.30 |
[Day5] Android SQLite 기본 동작 소스 (0) | 2011.11.30 |
[Day4] SQLite DB를 사용한 사전App 소스 (0) | 2011.11.30 |
[Day3] setActivityForResult 으로 새창 열기 및 데이터 전달 소스 (0) | 2011.11.30 |