To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부
UI 이벤트 Event listener Touch mode Focus handling Notification Basic toast notification Customized toast notification Status bar notification 2
사용자가인터랙션하는특정 View 오브젝트의이벤트를획득하 는방법을제공한다. 대표적으로사용해온것이버튼에대한 click 처리이다. 이벤트발생시, 안드로이드는해당 callback method 를호출하며, 프로 그래머는이 callback 을 override 하여사용할수있다. 기존 View 오브젝트에대해서는 event listener 를사용한다. Customized View 오브젝트를만들고, 이오브젝트에대해서 event 처리를하려면, event handler 로사용되는몇몇 callback method들을정의하여야한다. 3
Event listener 는하나의 callback method 를포함하는 View 클래스내 의인터페이스이다. Listener 의대표적예 : OnClickListener() 해당 callback: onclick() Callback methods onclick(): View.OnClickListener 에의해콜백됨 onlongclick(): View.OnLongClickListener 에의함 onfocuschange(): View.OnFocusChangeListener 에의함 onkey(): View.OnKeyListener 에의함 ontouch(): View.OnTouchListener 에의함 oncreatecontextmenu(): View.OnCreateContextMenuListener 에의함 4
Activity UiPracticeFirstAct2 를만듦 (1/6) 5
새로운 Activity 인 UiPracticeFirstAct2 를만듦 (2/6) act2.xml 6
새로운 Activity 인 UiPracticeFirstAct2 를만듦 (3/6) act1.xml strings.xml 7
새로운 Activity 인 UiPracticeFirstAct2 를만듦 (4/6) AndroidManifest.xml 8
새로운 Activity 인 UiPracticeFirstAct2 를만듦 (5/6) UiPracticeFirst.java main.xml strings.xml 9
새로운 Activity 인 UiPracticeFirstAct2 를만듦 (6/6) 10
다양한 listener 등록 (1/2) UiPracticeFirstAct2.java 다음페이지계속 11
다양한 listener 등록 (2/2) UiPracticeFirstAct2.java 12
Listener 실행예 (1/3) 13
Listener 실행예 (2/2) 14
Listener 실행예 (3/3) 15
UI 이벤트 Event listener Touch mode Focus handling Notification Basic toast notification Customized toast notification Status bar notification 16
터치기능을지원하는디바이스에서는터치모드를지원한다. 터치모드에진입했을때 ( 사용자가화면을터치했을때 ) 는 isfocusableintouchmode() 가참인View들만이포커스된다. 사용자가방향키를누르거나, 트랙볼을스크롤하면, 언제든해당디바이스는터치모드에서빠져나간다. 터지모드에있는지의여부는 isintouchmode() 를사용하여파악할수있다. 17
어떤 View 가포커스를가질수있는지의여부는 isfocusable() 을 사용하여확인할수있다. View 가포커스를가질수있도록 / 없도록하기위해서는 setfocusable() 을사용할수있다. 포커스제어예제 : TextView 가포커스를갖도록한다. 해당 TextView 의 XML layout 에서 android:focusable 을 true 로한다. 특정 View( 이경우, TextView) 가포커스를가지도록 requestfocus() 를 호출한다. 포커스이벤트를받기위해서, 앞서소개한 onfocuschange 를사용한다. 18
포커스제어예제 : TextView 가포커스를갖도록함 (1/2) act2.xml UiPracticeFirstAct2.java 19
포커스제어예제 : TextView 가포커스를갖도록함 (2/2) 20
UI 이벤트 Event listener Touch mode Focus handling Notification Basic toast notification Customized toast notification Status bar notification 21
Toast notification 사용자에게알리고자하는짧은메시지를 ( 잠시 ) 표현한다. Foreground 에서수행되는 activity뿐아니라, background 에서수행되는 service 에서도생성될수있다. 예제 : 파일저장작업과정에서, 저장이성공했다는것을확인시켜준다. Status bar notification 시스템의상태바에아이콘을표시하며, notification window 에는확장메시지를 보여준다. 예제 : SMS 가도착했을때, 상태바에표시한다 ( 진동, 사운드, 발광등도가능 ) Dialog notification ( 앞서 Dialog 에서설명한바와같이 ) 진행상태바퀴혹은진행상태바를표시한다. 22
Toast notification Status bar notification Dialog notification 23
UI 이벤트 Event listener Touch mode Focus handling Notification Basic toast notification Customized toast notification Status bar notification 24
메시지표현에필요한공간만나타내고, 자동으로나타났다 가사라지며, 사용자인터랙션은허용하지않는다. Activity 혹은 Service 로부터 toast 가생성될수있다. 생성절차 1. maketext() 를사용하여 notification i 을생성한다. 2. setgravity() 를사용하여 toast 가나타날위치를정한다. 3. show() 를사용하여 toast 를화면에나타낸다. 25
Toast 를 activate 시킬버튼을하나만든다. 26
버튼에 toast 달기 (1/2) UiPracticeFirstAct2.java 27
버튼에 toast 달기 (2/2) 28
UI 이벤트 Event listener Touch mode Focus handling Notification Basic toast notification Customized toast notification Status bar notification 29
Toast notification 을위한 customized layout 을생성할수있다. XML 파일로 layout 을설정하고, 프로그램에서이를 inflate 한다. (inflate: 부풀리다, 채워넣다 ) 생성절차 1. Toast 모양을정의 ( 결정 ) 하는 XML layout 파일을 만든다. 2. 프로그램에서, 해당 layout 을 inflate 한다. 3. Layout 의 View object 들을채워넣는다. 4. 일반적인방법으로 toast 를나타낸다. 30
Toast 를위한 XML layout 파일을만듦 31
Customized toast 를 activate 시킬버튼을하나만듦 act2.xml strings.xml 32
Customized toast 를 inflate 시키고, toast 를구성하여나타냄 33
Customized toast 의실행화면 34
UI 이벤트 Event listener Touch mode Focus handling Notification Basic toast notification Customized toast notification Status bar notification 35
화면상단의상태바에, 아이콘을표시하고, 확장메시지를 notification i window 에추가한다. NotificationManager: 시스템내에서 Notification 을관리한다. Notification: 실제아이콘과메시지를담고있다. 생성절차 1. NotificationManager 에대한레퍼런스를얻는다. 2. Notification 을인스턴스화한다. 3. Notification 의확장메시지와인텐트를정의한다. 4. NotificationManager 에게 Notification 을전달한다. 36
Notification 을발생시킬버튼을하나만든다. act2.xml strings.xml 37
NotificationManager 에대한레퍼런스를얻고, Notification i 을인스턴스화한다. 38
Notification 을만들어, NotificationManager 에전달한다. 39
실행화면 (1/2) 40
실행화면 (2/2) 잡아서끌어당김 41
사운드 (sound) 추가하기 Notification.defaults = Notfication.DEFAULT_SOUND; 진동 (vibration) 추가하기 Notification.defaults = Notfication.DEFAULT_VIBRATE; 발광빛 (flashing light) 추가하기 Notification.defaults = Notfication.DEFAULT_LIGHTS; 42
Emulator 를새로하나더만든다. 두개의 emulator 를동시에동작시킨다. Emulator-5554 에서 Emulator-5556 로문자를보낸다. Emulator-5556 에 Notification 이생성되었는지확인하 고, 문자도확인한다. 43
44
45
46
47
48
emulator-5554 emulator-5556 49
emulator-5554 50
emulator-5556 51
52