SECTION 01 _ 액션바 (ActionBar) 405 액션바만들기 참고프로젝트 ActionBarDemoA1 간단히액션바를만들고이액션바가 WVGA(800*480) 과 WXGA(1280*800) 에서어떻게보이는지확인해보도록하겠다. 액션바를만든다는표현을했지만액션바는타이
|
|
- 우빈 주
- 7 years ago
- Views:
Transcription
1 404 PART 05 _ 안드로이드활용 SECTION 01 액션바 (ActionBar) 액션바 (ActionBar) 는태블릿용버전인안드로이드 3.0( 허니컴, API 레벨 11) 부터등장하여안드로이드 4.0에서는태블릿뿐만아니라폰등의기기에도적용할수있게변경되었다. 액션바라는용어가생소하기는하지만기존타이틀바에다양한기능이추가된것이라고생각하면그리어렵게느껴지지않을것이다. 액션바를통해사용자가현재실행한애플리케이션이무엇인지그리고애플리케이션내에서사용자가보고있는화면이무엇인지를알려줄수있으며, 탐색메뉴를통해사용자가애플리케이션을쉽게탐색할수있게할수있다. 액션바의주요특징 애플리케이션이름, 아이콘그리고애플리케이션내의사용자위치를알려주기위한영역을제공 일관된탐색메뉴제공 검색, 공유등의메뉴영역을제공액션바는다음과같은모양으로구성된다. 그림 5-1 왼쪽에는액티비티의아이콘과제목이표시되며, 오른쪽에는메뉴가표시된다. 메뉴는그림에서보는것처럼아이콘만보이게할수도있고아이콘과제목이함께보이게할수도있다. 또한오른쪽끝에는더보기메뉴아이콘을표시하여추가메뉴는이아이콘을클릭했을때만보이게할수도있다. 액션바에서아이콘이표시되는메뉴들을액션아이템 (Action Item) 이라고한다. 그리고액션바하단에는실제액티비티의메인영역이표시된다.
2 SECTION 01 _ 액션바 (ActionBar) 405 액션바만들기 참고프로젝트 ActionBarDemoA1 간단히액션바를만들고이액션바가 WVGA(800*480) 과 WXGA(1280*800) 에서어떻게보이는지확인해보도록하겠다. 액션바를만든다는표현을했지만액션바는타이틀바의발전된형태이기때문에별도로만들필요가없다. 어떤추가적인작업을하지않아도타이틀바가보이는것처럼액션바도보이게된다. 그러므로기본프로젝트를한개만들어서실행하면된다. 두개의에뮬레이터를생성해서기본프로젝트를실행한결과는다음과같다. 첫번째그림은 WVGA(800*480) 해상도로우리가일반적으로사용하는폰의해상도에서실행한결과이다. 그리고두번째그림은태블릿해상도인 WXGA(1280*800) 에뮬레이터에서실행한결과다. 그림 5-2 WVGA(800 * 480) 의액션바
3 406 PART 05 _ 안드로이드활용 그림 5-3 WVGA(1200 * 800) 의액션바 WXGA(1280*800) 해상도의액션바를보면오른쪽이매우허전함을알수있다. 바로이러한이유로인해액션바에서는액션바오른쪽에메뉴를추가할수있게하고있다. 또한액션바중앙에검색뷰와같은별도의뷰를추가할수있게하고있다. 이러한내용에대해서는차츰알아보도록하겠다. 기본프로젝트에서자동으로생성된레이아웃과액티비티코드는다음과같다. /res/values/strings.xml에작성되어있으며, 이파일도프로젝트생성시기본으로생성되는파일이다. CODE 코드레이아웃 XML - /res/layout/main.xml <?xml version= 1.0 encoding= utf-8?> <LinearLayout xmlns:android= android:layout_width= fill_parent android:layout_height= fill_parent android:orientation= vertical > <TextView android:layout_width= fill_parent android:layout_height= wrap_content /> </LinearLayout>
4 SECTION 01 _ 액션바 (ActionBar) 407 기본으로생성된액티비티다. CODE 코드 Main.java package com.androidside.actionbardemoa1; import android.app.activity; import android.os.bundle; public class Main extends Activity public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); 액션바에메뉴추가하기 참고프로젝트 ActionBarDemoA2 안드로이드 3.0 이전에사용하던타이틀바에서는단지제목문자열만표시할수있었지만 ( 이미지를넣거나레이아웃을바꾸는등의수정이가능하긴했다 ), 3.0 이후부터는타이틀바가액션바로변경되었고, 이액션바에아이콘과제목그리고메뉴를탑재할수있게되었다. 그림 5-4 안드로이드 2.3
5 408 PART 05 _ 안드로이드활용 안드로이드 3.0 이후액션바는기존타이틀바와는달리매우활용도가높으며, 사용자가애플리케이션을좀더편하고직관적으로사용할수있게도움을준다. 그러므로이섹션에서는액션바에메뉴를추가하고이메뉴를어떻게다룰수있는지살펴볼것이다. 다음은앞으로우리가만들예제프로젝트를 WVGA와 WXGA에적용한결과화면이다. 그림 5-5 WVGA(800 * 480) 의액션바 그림 5-6 WXGA(1280 * 800) 의액션바
6 SECTION 01 _ 액션바 (ActionBar) 409 두화면의차이점이보이는가? 두화면의차이점을이해하는것은폰과태블릿애플리케이션을한번에개발할수있는안드로이드 4.0을제대로사용하는첫시작이될것이다. WVGA 화면에서는상단메뉴바에모든메뉴를표시할수가없어메뉴버튼을클릭했을때하단에추가메뉴를보여준다. 이방식은안드로이드 3.0 이전의방식이기도하다. 물론안드로이드 3.0 이전버전에는액션바가없었으며, 메뉴는모두하단에표시되었다. 두번째그림은태블릿크기인 WXGA에적용한메뉴를보여준다. WXGA에서는화면이크기때문에오른쪽상단에많은메뉴를보여줄수있으며, 다보여줄수없는추가적인메뉴는더보기 ( ) 메뉴버튼을통해추가적으로볼수있다. 여기서더보기메뉴에보이는메뉴들은개발자가직접정의할수있으며, 이예제에서는 Share 메뉴는더보기메뉴로만보이게설정하고있다. 또한 WXGA 화면에서는 REFRESH 문자열이아이콘과함께보이고있지만 WVGA 화면에서는 REFRESH 문자열이보이지않는다. 이는화면크기로인해안드로이드가자동으로보이지않게하고있기때문이다. 가장먼저이예제에서사용한레이아웃은기본프로젝트생성시자동으로생성된레이아웃이다.// l CODE 레이아웃 XML - /res/layout/main.xml <?xml version= 1.0 encoding= utf-8?> <LinearLayout xmlns:android= android:layout_width= fill_parent android:layout_height= fill_parent android:orientation= vertical > <TextView android:layout_width= fill_parent android:layout_height= wrap_content /> </LinearLayout> 액션바에설정된메뉴는안드로이드 3.0 이전에작성하던메뉴처럼 /res/menu/ 디렉터리아래에 xml 파일로작성하면된다.
7 410 PART 05 _ 안드로이드활용 CODE 코드메뉴 XML - /res/menu/main.xml <?xml version= 1.0 encoding= utf-8?> <menu xmlns:android= > <item android:orderincategory= 1 android:showasaction= always withtext /> <item android:orderincategory= 0 android:showasaction= always /> <item android:orderincategory= 1 android:showasaction= never /> </menu> menu_search와 menu_share 아이템에서는안드로이드에서기본으로제공하는아이콘 (@android: 로시작 ) 을사용하고있지만, menu_refresh 아이템에서는개발자가직접추가한아이콘을사용하고있다. 필자는 /res/drawable-xhdpi에아이콘을추가했다. 메뉴의첫번째아이템은 Refresh 버튼이며, 두번째는 Search 버튼, 그리고세번째는 Share 버튼이다. 각각의아이템에있는속성중에서관심있게보아야할것은바로 orderincategory와 show- AsAction이다. 먼저 orderincategory 속성은메뉴순서를지정하는것이며, showasaction은해당메뉴를어떻게보여줄지를정하는것이다. 이속성에 always가지정되면액션바에메뉴가표시되며, never는액션바에보여주지않고더보기메뉴로보여지게하는속성이다. 이속성으로인해위두개의액션바화면에서 Share 메뉴가보여지는위치가달랐던것이다. android:showasaction 현재메뉴가액션바의액션아이템으로보여질시점과방식을정의하는속성. 이속성은자바코드에서는 MenuItem 클래스의 setshowasactionflags() 메소드로지정할수있으며, 이메소드의인자로지정할수있는상수값은다음표에정리하였다.
8 SECTION 01 _ 액션바 (ActionBar) 411 자바코드사용예 ) menuitem.setshowasactionflags(menuitem.show_as_action_if_room) menuitem.setshowasactionflags(menuitem.show_as_action_if_room MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW); SUMMARY 액션뷰의액션아이템 showasaction 속성 상수 설명 ifroom 액션아이템을표시할영역이액션바에있을때만표시한다. MenuItem 클래스에정의된상수 MenuItem.SHOW_AS_ACTION_IF_ROOM withtext android:title 로정의된문자열을함께표시한다. MenuItem 클래스에정의된상수 MenuItem.SHOW_AS_ACTION_WITH_TEXT never 액션바에액션아이템을표시하지않는다. 이속성의기본값이다. MenuItem 클래스에정의된상수 MenuItem.SHOW_AS_ACTION_NEVER always 액션바에액션아이템을항상표시한다. 이속성을사용할경우액션아이템이중첩되는문제가발생할수있으므로주의해서사용해야한다. MenuItem 클래스에정의된상수 MenuItem.SHOW_AS_ACTION_ALWAYS collapseactionview 액션아이템과연관된액션뷰 (android:actionviewlayout에선언한 ) 의아이콘만보일수있게한다. 안드로이드 4.0(API 레벨 14) 에서추가됨 MenuItem 클래스에정의된상수 MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW
9 412 PART 05 _ 안드로이드활용 METHOD SUMMARY android.view.menuitem 클래스의메소드 MenuItem setshowasactionflags(int actionenum) 액션아이템을액션바에어떻게표시할지를지정한다. actionenum에는매개변수 actionenum에나열한상수를지정할수있으며, SHOW_AS_ACTION_ALWAYS, SHOW_AS_ACTION_IF_ROOM, SHOW_AS_ACTION_NEVER는함께지정할수없다. 이 3개의옵션과함께지정할수있는것은 SHOW_AS_ACTION_WITH_TEXT와 SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW이다. 매개변수 actionenum SHOW_AS_ACTION_ALWAYS, SHOW_AS_ACTION_IF_ROOM, SHOW _AS_ACTION_NEVER, SHOW_AS_ACTION_NEVER, SHOW_AS_ACTION_COLL APSE_ACTION_VIEW를지정가능 android:orderincategory 여러액션아이템이나열되는순서를정의하는속성. 메뉴 XML을작성했다면이제메뉴 XML에서 android:title="@string/menu_refresh" 처럼사용한문자열을작성해야한다. 이문자열은 /res/values/strings.xml 파일에작성하면된다. CODE 코드문자열 XML - /res/values/strings.xml <?xml version= 1.0 encoding= utf-8?> <resources> <string name= hello >Hello World, Main!</string> <string name= app_name >ActionBarDemoA2</string> <string name= menu_refresh >Refresh</string> <string name= menu_search >Search</string> <string name= menu_share >Share</string> </resources> 이제액티비티코드를살펴보도록하자.
10 SECTION 01 _ 액션바 (ActionBar) 413 CODE Main.java package com.androidside.actionbardemoa2; import android.app.activity; import android.os.bundle; import android.view.menu; import android.view.menuinflater; import android.view.menuitem; import android.widget.toast; public class Main extends Activity public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); public boolean oncreateoptionsmenu(menu menu) { MenuInflater menuinflater = getmenuinflater(); menuinflater.inflate(r.menu.main, menu); return public boolean onoptionsitemselected(menuitem item) { switch (item.getitemid()) { case android.r.id.home: Toast.makeText(this, Home, Toast.LENGTH_SHORT).show(); break; case R.id.menu_refresh: Toast.makeText(this, Refresh, Toast.LENGTH_SHORT).show(); break; case R.id.menu_search: Toast.makeText(this, Search, Toast.LENGTH_SHORT).show(); break;
11 414 PART 05 _ 안드로이드활용 case R.id.menu_share: Toast.makeText(this, Share, Toast.LENGTH_SHORT).show(); break; return super.onoptionsitemselected(item); 코드가다소길기는하지만특별히새로운코드는보이지않는다. 액션바에적용되는메뉴가기존 에사용하던옵션메뉴이기때문이다. 그러므로옵션메뉴를사용하는것처럼코드를작성하면된다. getactionbar().sethomebuttonenabled(true); 이코드는현재액티비티의액션바를얻고 (getactionbar()) 상단왼쪽에있는아이콘을클릭했을때애플리케이션홈으로이동할수있게해주는코드다. 그렇기때문에이코드가적용되면 onop tionsitemselected() 메소드에서왼쪽상단아이콘의클릭을감지할수있다. 클릭했을때넘어오는아이디는 android.r.id.home 이다. 일반적으로홈으로이동하게하며원한다면다른처리를추가할수도있다. 그림 5-7 메뉴에대해서는이미 제 4 부안드로이드기초 메뉴 에서살펴보았지만, 더자세히알고싶다면 다음링크를참고하기바란다. URL
12 SECTION 01 _ 액션바 (ActionBar) 415 액션바옵션살펴보기 액션바를보이거나숨기기 참고프로젝트 ActionBarDemoB1 액션바는현재화면위치와관련된메뉴를보여줄수있어매우유용하지만, 경우에따라서는액션 바로인해더많은정보를보여줄수없는경우도있다. 그러므로이런경우에는액션바를숨겨서화 면을좀더넓게사용해야할필요가있다. 그림 5-8 액션바를숨긴화면 액션바를숨긴후에도원한다면다시보이게할수있다. 숨길때는 ActionBar 클래스의 hide() 라는메소드를호출하면되며, 보이게할때는 show() 메소드를호출하면된다. 현재액티비티의 ActionBar 객체는 getactionbar() 메소드를통해얻을수있다. 그러므로액션바를숨기거나보여주는코드는다음과같다. ActionBar actionbar = getactionbar(); actionbar.hide(); actionbar.show();
13 416 PART 05 _ 안드로이드활용 액션바에제목, 부제목설정하기 참고프로젝트 ActionBarDemoB2 액션바의왼쪽에는아이콘과현재액티비티의제목이보여진다. 그런데이제목만으로는해당화면을 충분히설명할수없는경우가있다. 이런경우에는다음처럼제목아래에부제목을추가할수있다. 그림 5-9 ActionBarDemoB2는제목이고, 이제목아래에있는 Subtitle of Action Bar는부제목이다. 이렇게하기위해서는 oncreate() 메소드에서 ActionBar 클래스의 setsubtitle() 메소드를호출하면된다. getactionbar().setsubtitle( Subtitle of Action Bar ); 기본적으로제목은 /res/values/strings.xml에선언되어있는 app_name이표시되지만, 원한다면직접제목을변경할수있다. 제목변경을하고싶을때사용하는메소드는 settitle() 이다. getactionbar().settitle( Action Bar ); 위코드를부제목를설정하는코드와함께호출하면다음과같은화면이출력된다. 그림 5-10 추가적으로제목과부제목이표시되는영역을보이지않게설정할수도있다. getactionbar().setdisplayshowtitleenabled(false); 다음은제목과부제목이사라지고아이콘만보이는모습이다. 그림 5-11
14 SECTION 01 _ 액션바 (ActionBar) 417 액션바의화면출력옵션설정하기 참고프로젝트 ActionBarDemoB3 액션바왼쪽에는아이콘과제목, 부제목을표시할수있다. 또한아이콘왼쪽에 < 표시를하여사용 자가아이콘을클릭해서이전화면으로이동할수있다는것을알려줄수도있다. 그림 5-12 이섹션에서는액션바왼쪽에아이콘, 제목등을표시할지말지를결정하는옵션들에대해서살펴보 도록하겠다. 가장먼저이를지정하는상수가 ActionBar 클래스에정의되어있다. 다음은이를정 리한것이다. CONSTANTS ActionBar 클래스에지정된액션바의화면출력옵션 상수 DISPLAY_USE_LOGO 설명홈아이콘대신에로고를사용할지를지정한다. 로고를사용하고싶다면로고이미지를 AndroidManifest.xml의 <application> 이나 <activity> 에 android:logo="@drawable/ androidside" 처럼작성해야한다. 관련메소드 setdisplayuselogoenabled(boolean uselogo) DISPLAY_SHOW_HOME 홈아이콘표시여부를지정한다. 관련메소드 setdisplayshowhomeenabled(boolean showhome) DISPLAY_HOME_AS_UP 홈아이콘왼쪽에 < 표시를하여사용자에게아이콘을클릭여부를알려줄지를지정 한다. 관련메소드 setdisplayhomeasupenabled(boolean showhomeasup) DISPLAY_SHOW_TITLE 제목, 부제목을표시여부를지정한다. 관련메소드 setdisplayshowtitleenabled(boolean showtitle)
15 418 PART 05 _ 안드로이드활용 상수 설명 DISPLAY_SHOW_CUSTOM 사용자정의뷰표시여부를지정한다. 관련메소드 setcustomview(...) setdisplayshowcustomenabled(boolean showcustom) DISPLAY_ 로시작하는상수들은액션바의화면옵션을지정하는것이며, 이를활성화시키거나비활성화시켜액션바의모양을우리가원하는대로변경할수있다. 이상수들의활성화여부는아래에서살펴볼 setdisplayoptions() 메소드로지정할수있으며, 이메소드를사용하지않고개별적으로지정할수도있다. 이메소드들을 관련메소드 라는항목으로위에정리해뒀으니함께살펴보기바란다. DISPLAY_ 로시작하는상수는액션바의일정영역을가리키고있는데이를그림으로정리해보면다음과같다. 그리고 DISPLAY_SHOW_TITLE을비활성화시키면액션바에는제목이보지이않게된다. 그림 5-13 DISPLAY_ 로시작하는상수를가지고활성화여부를지정하는메소드는다음과같다. 두개의메소 드가준비되어있는데인자가한개인메소드는지정된옵션만활성화하며인자가두개인메소드는 여러개의옵션을지정하여활성화할수있다. 다음표에자세히설명하였으니꼭읽어보기바란다. METHOD SUMMARY android.app.actionbar 클래스의 setdisplayoptions 메소드 final Cursor setdisplayoptions(int options) 화면출력옵션을설정한다. options에지정된옵션만활성화한다. 예를들어, setdisplayoptions (Ac tionbar.display_show_home) 를호출하면 DISPLAY_SHOW_HOME만활성화되며, setdisplay Options(ActionBar.DISPLAY_USE_LOGO ActionBar.DISPLAY_SHOW_HOME) 를호출하면 DISPLAY _USE_LOGO와 DISPLAY_SHOW_HOME가활성화된다.
16 SECTION 01 _ 액션바 (ActionBar) 419 매개변수 options ActionBar 클래스에지정된 DISPLAY_ 로시작하는상수들의조합 void setdisplayoptions(int options, int mask) 화면출력옵션을비트마스크를사용하여설정한다. 예를들어, setdisplayoptions(0, ActionBar.DIS PLAY_SHOW_HOME) 를호출하면 DISPLAY_SHOW_HOME만비활성화가되며, setdisplayoptions (ActionBar.DISPLAY_SHOW_HOME, ActionBar.DISPLAY_SHOW_HOME DISPLAY_USE_LOGO) 를호출하면 mask에선언된두개의옵션중에서 options에선언된 DISPLAY_SHOW_HOME은활성화되고그렇지않은 DISPLAY_USE_LOGO는비활성화된다. 매개변수 options ActionBar 클래스에지정된 DISPLAY_ 로시작하는상수들의조합 mask 화면출력옵션의비트마스크 TIP & TECH 액션바에아이콘대신에로고를지정할때액션바에서아이콘대신에로고를표시하기위해서는 setdisplayoptions() 메소드를어떻게호출해야할까? 아마도다음코드처럼작성하면될거라고생각할것이다. setdisplayoptions(actionbar.display_use_logo) 언뜻보기에이코드는로고를사용해라라고지정하는것이맞다고생각할것이다. 하지만막상코드를이렇게작성하고실행해보면화면에아무것도나오지않는다. 그래서이를해결하기위해 AndroidManifest.xml에 logo가제대로지정되었는지, 이미지는문제가없는지확인해볼것이다. 하지만이부분도문제가없다는것을이내깨닫고한숨을연거푸내쉬는개발자를본적이있다. 무엇이문제일까? 이문제를해결하기위해서는 setdisplayoptions() 메소드는지정된옵션만활성화시키는것이고, 아이콘이나로고를표시하는홈영역은 DISPLAY_SHOW_HOME로지정한다는것을유념해야한다. 결국, 로고를사용하고싶다면 DISPLAY_USE_LOGO만을활성화시킬것이아니라 DISPLAY_SHOW_HOME도함께활성화시켜야하는것이다. 다음코드가바로우리가원하는코드다. setdisplayoptions(actionbar.display_show_home ActionBar.DISPLAY_USE_LOGO); 그림 5-14 액션바에로고를표시한화면 지금까지살펴본내용을기반으로간단한예제를작성해보겠다. 대표적인화면출력옵션을변경할수있도록버튼을추가하고이버튼을통해액션바의왼쪽영역을변경해보겠다.
17 420 PART 05 _ 안드로이드활용 그림 5-15 버튼 4 개를추가해야하므로레이아웃은다음처럼구성하도록한다. CODE 레이아웃 XML - /res/layout/main.xml <?xml version= 1.0 encoding= utf-8?> <LinearLayout xmlns:android= android:layout_width= fill_parent android:layout_height= fill_parent android:orientation= vertical > <Button android:layout_width= fill_parent android:layout_height= wrap_content android:text= DISPLAY_HOME_AS_UP DISPLAY_SHOW_HOME /> <Button android:layout_width= fill_parent android:layout_height= wrap_content android:text= DISPLAY_SHOW_HOME /> <Button android:layout_width= fill_parent
18 SECTION 01 _ 액션바 (ActionBar) 421 android:layout_height= wrap_content android:text= DISPLAY_USE_LOGO DISPLAY_SHOW_HOME /> <Button android:layout_width= fill_parent android:layout_height= wrap_content android:text= DISPLAY_SHOW_TITLE /> </LinearLayout> 레이아웃을작성했으니이제실제코드를작성해야한다. 먼저버튼을클릭했을때반응할수있도록 oncreate() 메소드에리스너를설정한다. 그리고 onclick() 메소드에서사용자가클릭한버튼의종 류에따라화면출력을적당히변경하도록한다. CODE Main.java package com.androidside.actionbardemob3; import android.app.actionbar; import android.app.activity; import android.os.bundle; import android.view.view; public class Main extends Activity implements View.OnClickListener public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); findviewbyid(r.id.display_home_as_up).setonclicklistener(this); findviewbyid(r.id.display_show_home).setonclicklistener(this); findviewbyid(r.id.display_use_logo).setonclicklistener(this); public void onclick(view v) { switch (v.getid()) { case R.id.DISPLAY_HOME_AS_UP : getactionbar().setdisplayoptions( ActionBar.DISPLAY_HOME_AS_UP ActionBar.DISPLAY_SHOW_HOME); break; case R.id.DISPLAY_SHOW_HOME : getactionbar().setdisplayoptions(actionbar.display_show_home);
19 422 PART 05 _ 안드로이드활용 break; case R.id.DISPLAY_USE_LOGO : getactionbar().setdisplayoptions( ActionBar.DISPLAY_USE_LOGO ActionBar.DISPLAY_SHOW_HOME); break; case R.id.DISPLAY_SHOW_TITLE : getactionbar().setdisplayoptions(actionbar.display_show_title); break; 여기서주의깊게보아야할것은 onclick() 메소드에있는 setdisplayoptions() 메소드다. 이코드에서사용한메소드는한개의인자만받는메소드이며, 이메소드는지정된옵션만을활성화시키고나머지화면옵션은모두비활성화시킨다. 그러므로 setdisplayoptions(actionbar. DISPLAY_HOME_AS_UP) 처럼코드를작성하면화면에아무것도보이지않는다. 왜냐하면 DIS PLAY_HOME_AS_UP 옵션은홈아이콘이있을경우에만적용되는옵션이기때문이다. 그래서두개의옵션이모두적용될수있도록 ActionBar.DISPLAY_HOME_AS_UP ActionBar.DIS PLAY_SHOW_HOME처럼지정해야한다. 마지막으로 AndroidManifest.xml에로고이미지를추가한다. 로고를사용하지않는다면몰라도이예제에서는로고출력을하고있으므로 android:logo에이미지를지정해야한다. android:logo 는 <application> 이나 <activity> 에지정할수있다. 이예제에서는 안드로이드사이드 로고를지정했다. 필자는이예제에서 안드로이드사이드 로고를 /res/drawable-hdpi에추가했다. CODE AndroidManifest.xml <?xml version= 1.0 encoding= utf-8?> <manifest xmlns:android= package= com.androidside.actionbardemob3 android:versioncode= 1 android:versionname= 1.0 > <uses-sdk android:minsdkversion= 15 /> <application > <activity android:name=.main
20 SECTION 01 _ 액션바 (ActionBar) 423 > <intent-filter> <action android:name= android.intent.action.main /> <category android:name= android.intent.category.launcher /> </intent-filter> </activity> </application> </manifest> 액션뷰추가하기 액션바에사용자정의뷰추가하기 참고프로젝트 ActionBarDemoC1 액션바에는액션아이템이라불리는메뉴를추가해서사용자의편의를제공할수있다. 하지만메뉴는단지메뉴일뿐이므로버튼등의다른뷰를액션바에추가해야하는경우도있을수있다. 그래서이섹션에서는액션바에우리가원하는뷰를어떻게추가할수있는지를살펴보도록하겠다. 액션바를생성하고, 액션바에가장대표적뷰인버튼을추가하고, 버튼을클릭했을때 Toast로메시지를화면에보이게하겠다. 그림 5-16
21 424 PART 05 _ 안드로이드활용 이렇게작성하기위해서는가장먼저버튼을배치할레이아웃을작성해야하며, 그다음에액션바에사용자정의뷰를사용하겠다고선언해야한다. 그리고버튼을클릭했을때메시지를보여줄수있도록코드를작성해야한다. 절차를정리하면다음과같다. (1) 사용자정의뷰 ( 버튼레이아웃 ) 작성 - /res/layout/mybutton.xml (2) 사용자정의뷰 ( 버튼레이아웃 ) 액션바에배치 - setcustomview() 메소드 (3) 사용자정의뷰 ( 버튼레이아웃 ) 활성화 - setdisplayshowcustomenabled() 메소드 (4) Toast 메시지코드작성 - Toast 클래스가장먼저 main.xml을생성해야하는데, 이예제에서는특별히추가할것이없으므로기본생성파일을그대로사용하겠다. 그러므로우리가작성해야할레이아웃은버튼을배치할레이아웃단한개뿐이다. CODE 레이아웃 XML - /res/layout/mybutton.xml <?xml version= 1.0 encoding= utf-8?> <LinearLayout xmlns:android= android:layout_width= match_parent android:layout_height= match_parent android:orientation= horizontal > <Button android:layout_width= wrap_content android:layout_height= wrap_content android:text= BUTTON1 /> <Button android:layout_width= wrap_content android:layout_height= wrap_content android:text= BUTTON2 /> <Button android:layout_width= wrap_content android:layout_height= wrap_content android:text= BUTTON3 /> </LinearLayout>
22 SECTION 01 _ 액션바 (ActionBar) 425 버튼레이아웃을작성했으니이제액션뷰에이버튼레이아웃을설정하고활성화하면된다. CODE Main.java package com.androidside.actionbardemoc1; import android.app.actionbar; import android.app.activity; import android.os.bundle; import android.view.view; import android.widget.button; import android.widget.toast; public class Main extends Activity implements View.OnClickListener public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); View mybuttonlayout = getlayoutinflater().inflate(r.layout.mybutton, null); mybuttonlayout.findviewbyid(r.id.mybutton1).setonclicklistener(this); mybuttonlayout.findviewbyid(r.id.mybutton2).setonclicklistener(this); mybuttonlayout.findviewbyid(r.id.mybutton3).setonclicklistener(this); ActionBar actionbar = getactionbar(); actionbar.setcustomview(mybuttonlayout); public void onclick(view v) { Toast.makeText(this, Button clicked + ((Button)v).getText(), Toast.LENGTH_SHORT).show(); View mybuttonlayout = getlayoutinflater().inflate(r.layout.mybutton, null); 작성한버튼레이아웃을액티비티에서사용하기위해서는인플레이션작업이필요하다. mybuttonlayout.findviewbyid(r.id.mybutton1).setonclicklistener(this); 인플레이션한 mybutton.xml 의버튼들을찾아서클릭리스너를등록한다.
23 426 PART 05 _ 안드로이드활용 ActionBar actionbar = getactionbar(); actionbar.setcustomview(mybuttonlayout); 액션바에버튼레이아웃을설정한다. actionbar.setdisplayshowcustomenabled(true); 버튼레이아웃을활성화한다. 기본적으로액션바에뷰를추가하는것은매우단순한일이므로실제애플리케이션을작성할때중요하게생각할것은액션바에직접정의한뷰의기능을정의하는것이다. 이기능정의는대부분클릭이벤트에의해처리될것이므로 onclick() 메소드를잘정의하면된다. 액션바에사용자검색뷰추가하기 참고프로젝트 ActionBarDemoC2 이전섹션에서사용자가직접작성한뷰를액션바에추가했다. 이와다르게이미제공되는액션뷰를 추가할수도있다. 이중에서가장활용도가높은것이검색뷰다. 이검색뷰는주로액션뷰로사용하 기는하지만위젯의일종이기때문에다른곳에사용해도된다. 그림 5-17 이그림에서보이는상단오른쪽에있는검색뷰는검색입력을바로할수있게검색입력창을보일수도있고, 돋보기아이콘만먼저보이고사용자가클릭했을때검색입력창을보이게할수도있다. 이섹션에서는이러한검색뷰를액션바에추가하고이와관련된속성들을살펴보도록하겠다. 액션뷰는액션바에서는메뉴로동작하기때문에작업순서는다음과같다. (1) 메뉴파일에검색뷰선언하기 - /res/menu/main.xml (2) 액티비티에서검색뷰속성설정하기일단기본프로젝트를생성한후에수정해야할파일은딱두가지다. /res/menu 디렉터리에 main. xml을생성하고, 이파일에다음처럼검색뷰를메뉴로선언한다. 이렇게선언한메뉴는액션바에서액션뷰의형태로동작하게된다.
24 SECTION 01 _ 액션바 (ActionBar) 427 CODE 메뉴 XML - /res/menu/main.xml <?xml version= 1.0 encoding= utf-8?> <menu xmlns:android= > <item android:actionviewclass= android.widget.searchview /> </menu> 액션아이템을액션뷰로선언하는방식은두가지가있다. 위에서선언한 actionviewclass 속성에액션뷰로사용할클래스를직접지정하는방식과 actionlayout 속성에액션뷰로사용할레이아웃을지정하는방식이있다. (1) actionviewclass 속성사용 actionviewclass 속성을사용하는방식은매우단순하다. 이속성에액션뷰로사용할클래스를다음처럼패키지명을포함하여지정하기만하면된다. 물론지정하는위젯이액션뷰로사용할수있도록미리준비되어있어야한다. 이러한뷰들이많이준비되어있으면좋겠지만아쉽게도현재는검색뷰 (SearchView) 밖에없다. android:actionviewclass= android.widget.searchview (2) actionlayout 속성사용 actionlayout 속성에레이아웃위치를지정하고이레이아웃에검색뷰를지정하는방식이다. 그러므로가장먼저 /res/layout 디렉터리에 mysearch.xml를생성해서 SearchView 위젯을선언해야한다. CODE 레이아웃 XML - /res/layout/mysearch.xml <?xml version= 1.0 encoding= utf-8?> <SearchView xmlns:android= android:layout_width= wrap_content android:layout_height= match_parent /> 그리고메뉴레이아웃의 actionlayout 에방금작성한레이아웃을지정하면된다.
25 428 PART 05 _ 안드로이드활용 CODE 메뉴 XML - /res/menu/main.xml <?xml version= 1.0 encoding= utf-8?> <menu xmlns:android= > <item /> </menu> 두번째방식은별도의레이아웃을생성해야하는번거로움이있지만액션뷰로사용할레이아웃을따로관리할수있다는장점도있다. 그러나필자는별도의파일을생성하지않아도되는첫번째방식을선호한다. 액션아이템을선언했다면이제액티비티를작성해야한다. 먼저액티비티전체코드를살펴보겠다. CODE Main.java package com.androidside.actionbardemoc2; import android.app.activity; import android.os.bundle; import android.view.menu; import android.view.menuitem; import android.widget.searchview; import android.widget.searchview.onquerytextlistener; public class Main extends Activity implements OnQueryTextListener { private final boolean IS_ICON_ITEM = public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); public boolean oncreateoptionsmenu(menu menu) { getmenuinflater().inflate(r.menu.main, menu); MenuItem searchmenu = menu.finditem(r.id.menu_search); SearchView searchview = (SearchView) searchmenu.getactionview();
26 SECTION 01 _ 액션바 (ActionBar) 429 searchview.setonquerytextlistener(this); searchview.setsubmitbuttonenabled(true); searchview.setqueryhint( input query hint ); if (IS_ICON_ITEM) { searchmenu.setshowasactionflags(menuitem.show_as_action_if_room MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW); else { searchmenu.setshowasactionflags(menuitem.show_as_action_if_room); searchview.seticonifiedbydefault(false); return public boolean onquerytextchange(string newtext) { return public boolean onquerytextsubmit(string query) { return false; 작성한액티비티는검색뷰를보여주기만하므로검색어를입력하고검색버튼을클릭해도어떤반응도하지않는다. Main 클래스상단에선언되어있는 IS_ICON_ITEM 상수는검색뷰를아이콘으로표시할지, 아니면검색창으로표시할지를지정하는불린값이다. 이값을변경해서실행한화면은다음과같다. (1) IS_ICON_ITEM = true IS_ICON_ITEM 을 true 로지정한다는것은아이콘으로만표시하겠다는것이고이값에의해다음 과같은코드가실행된다. searchmenu.setshowasactionflags(menuitem.show_as_action_if_room MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW); setshowasactionflags() 메소드는액션아이템의형태및표시방식을지정하는메소드이며, 여 기서는액션뷰가이메소드에의해설정된다. 이에대한설명은이전에살펴본 액션바에메뉴추가 하기 를참고하기바란다.
27 430 PART 05 _ 안드로이드활용 IS_ICON_ITEM 이 true 일경우에는다음처럼오른쪽에검색아이콘이표시된다. 그리고검색버튼 을클릭하면검색창이보이게된다. 그림 5-18 그림 5-19 왼쪽아이콘을클릭하면검색아이콘만보이는화면으로돌아간다. (2) IS_ICON_ITEM = false; IS_ICON_ITEM 을 false 로지정한다는것은액션바에검색아이콘이아닌검색창을표시하겠다는 의미다. 그러므로이값에의해다음코드가실행된다. searchmenu.setshowasactionflags(menuitem.show_as_action_if_room); searchview.seticonifiedbydefault(false); 두개의코드중에서첫번째코드는이전에이미살펴본내용이고, 두번째코드의 seticonified- ByDefault() 메소드는아이콘표시여부를설정하는메소드다. 그러므로이메소드에 false 로지정 하여검색아이콘만표시되게하였다. 그림 5-20 getmenuinflater().inflate(r.menu.main, menu); MenuItem searchmenu = menu.finditem(r.id.menu_search); 이코드는 /res/menu/main.xml에있는메뉴아이템을자바코드에서사용하기위한코드다. 첫번째코드의 inflate() 메소드는 xml에선언된메뉴를자바코드에서사용할수있도록해주며, finditem() 메소드는 xml에선언된메뉴아이템중에서원하는메뉴아이템을찾아주는메소드다. SearchView searchview = (SearchView) searchmenu.getactionview(); getactionview() 메소드는메뉴아이템에선언된검색뷰의객체를생성해준다.
28 SECTION 01 _ 액션바 (ActionBar) 431 지금까지액션바에사용자검색뷰를추가하는방법에대해서살펴보았다. 어렵지않은내용이지만 기존개발자들에게는생소한내용이므로관련된메소드와속성들에대해서차분히살펴볼필요가 있다. TIP & TECH 액션바의 iconifiedbydefault 속성과 showasaction 속성의관계 android:iconifiedbydefault 속성은액션아이템을아이콘으로표시하는속성이며, android:showasaction 속성은액션아이템의표시여부와표시형태를지정하는속성이다. 그런데이두개의속성이서로밀접한관계를형성하고있기때문에속성을제대로이해하고사용할필요가있다. 예를들어, showasaction을지정하지않고 iconifiedbydefault만 true로지정한다면어떻께될까? 일반적으로아이콘으로표시가될것이라고생각하겠지만액션바에아이콘이표시되지않는다. 왜냐하면 showasaction의디폴트속성은액션바에어떤것도표시하지않는것이기때문이다. 그러므로이둘의연관관계를이해하고코드를작성해야한다. 물론이에대한설명은이책에서모두다뤘으므로액션바의메뉴부분과방금살펴본코드들을다시한번살펴보면될것이다. 이속성들과관련된자바메소드 setshowasactionflags() 와 seticonifiedbydefault() 에대해서도주의깊게살펴보기바란다. 내비게이션모드종류살펴보기 액션바는안드로이드 3.0 이후부터는매우유용한영역이다. 이영역을잘활용하면태블릿을포함한어떤기기에서도사용자가해당애플리케이션의기능을쉽게다루도록할수있다. 지금까지는액션바에액션아이템 ( 메뉴 ) 만을포함하고있었지만, 이섹션에서는탭이나리스트를통해사용자가애플리케이션을탐색할수있는기능인내비게이션모드에대해살펴보겠다. 액션바에서제공하는내비게이션모드에는표준모드, 탭모드, 그리고리스트모드이렇게 3가지가있다. (1) 표준모드 (NAVIGATION_MODE_STANDARD) 액션바에탭이나리스트를포함하지않은내비게이션모드를말한다. 이모드는지금까지살펴본액 션바의형태를가지며, 내비게이션모드를별도로지정하지않을경우자동으로지정되는모드다. 그림 5-21 (2) 탭모드 (NAVIGATION_MODE_TABS) 액션바에탭메뉴를추가하여사용자가애플리케이션의기능을쉽게활용할수있도록해주는내비
29 432 PART 05 _ 안드로이드활용 게이션모드다. 이모드를사용하더라도오른쪽끝에액션아이템 ( 메뉴 ) 을추가할수있는것은변 함없다. 그림 5-22 (3) 리스트모드 (NAVIGATION_MODE_LIST) 액션바에리스트메뉴를추가하여사용자가애플리케이션을쉽게탐색할수있도록해주는내비게이 션모드다. 이모드에서도당연히오른쪽에액션아이템을추가할수있다. 그림 5-23 내비게이션모드를설정하는메소드는 ActionBar 클래스에정의되어있는 setnavigationmode() 메소드다. 이메소드에원하는내비게이션모드를지정해서호출하면된다. METHOD SUMMARY android.app.actionbar 클래스의내비게이션관련메소드 void setnavigationmode(int mode) 액션바의내비게이션모드를설정한다. 매개변수 mode NAVIGATION_MODE_STANDARD, NAVIGATION_MODE_LIST, NAVIGATION_MODE_TABS 이섹션에서는표준모드를제외한탭모드와리스트모드에대해서살펴보도록하겠다. 필자가생각하기에액션바의핵심은바로이내비게이션모드이며, 이를얼마나잘활용하냐에따라애플리케이션의편의성이달라진다고생각한다.
30 SECTION 01 _ 액션바 (ActionBar) 433 탭 (Tab) 모드살펴보기 참고프로젝트 ActionBarDemoE1 이섹션에서는액션바에 3 개의탭을추가하고탭을클릭했을때 Toast 를보이게할것이다. 액션아 이템을액션바오른쪽에추가할수도있지만예제가복잡해질수있으므로탭과관련된코드만작성 할것이다. 일단태블릿과스마트폰화면에서탭이어떻게나오는지보도록하자. 그림 5-24 액션바의탭모드 - WVGA(800 * 480) 그림 5-25 액션바의탭모드 - WXGA(1280 * 800)
31 434 PART 05 _ 안드로이드활용 스마트폰화면 (WVGA) 에서는탭이액션바영역아래에표시되는것을알수있다. 이렇듯태블릿과폰화면에서표시되는영역이다르므로애플리케이션화면기획시에이러한부분들을잘확인해야할것이다. 이예제는액티비티의자바코드만수정하면되므로기본프로젝트를생성해서 Main.java를다음과같이수정하도록하자. CODE Main.java package com.androidside.actionbardemoe1; import android.app.actionbar; import android.app.actionbar.tab; import android.app.actionbar.tablistener; import android.app.activity; import android.app.fragmenttransaction; import android.os.bundle; import android.widget.toast; import com.androidside.actionbardemoe1.r; public class Main extends Activity implements TabListener public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); ActionBar actionbar = getactionbar(); actionbar.setnavigationmode(actionbar.navigation_mode_tabs); actionbar.addtab(actionbar.newtab().settext( Tab1 ).settablistener(this)); actionbar.addtab(actionbar.newtab().settext( Tab2 ).settablistener(this)); actionbar.addtab(actionbar.newtab().settext( Tab3 public void ontabreselected(tab tab, FragmentTransaction ft) { Toast.makeText(this, tab.gettext() + ontabreselected, public void ontabselected(tab tab, FragmentTransaction ft) { Toast.makeText(this, tab.gettext() + ontabselected, Toast.LENGTH_SHORT).show();
32 SECTION 01 _ 액션바 (ActionBar) public void ontabunselected(tab tab, FragmentTransaction ft) { Toast.makeText(this, tab.gettext() + ontabunselected, Toast.LENGTH_SHORT).show(); 코드의주요부분을하나씩살펴보도록하겠다. actionbar.setnavigationmode(actionbar.navigation_mode_tabs); 현재의액션바의내비게이션모드를탭모드 (NAVIGATION_MODE_TABS) 로설정하겠다는의미다. 여기서지정한탭모드와관련된상수 NAVIGATION_MODE_TABS는 ActionBar 클래스에선언되어있다. actionbar.addtab(actionbar.newtab().settext( Tab1 ).settablistener(this)); addtab() 메소드는새로생성한탭을액션바의탭으로지정하겠다는것이며, newtab() 메소드는탭을새로생성하겠다는것이다. 그리고 settablistener() 메소드는탭에리스너를등록하여클릭등의이벤트를처리하겠다는것이다. 코드에익숙하지않을경우이코드가매우복잡해보일수있지만, 대부분의개발자들은코드를이렇게작성하므로익숙해져야할것이다. 이코드를쉽게풀어작성하면다음과같다. Tab tab1 = actionbar.newtab(); tab1.settext( Tab1 ); tab1.settablistener(this); actionbar.addtab(tab1); METHOD SUMMARY android.app.actionbar 클래스의내비게이션탭생성및추가메소드 ActionBar.Tab newtab() 새로운 ActionBar.Tab 을생성하고반환한다. 생성한탭은 addtab() 메소드가호출되기전까지는 액션바에추가되지않는다. 반환 새로생성한 ActionBar.Tab
33 436 PART 05 _ 안드로이드활용 void addtab(actionbar.tab tab) 액션바에지정된 tab 을추가한다. 매개변수 tab 액션바에포함할탭 public class Main extends Activity implements TabListener { 액션바에탭을추가하는것이기때문에탭을클릭했을때이를감지해서적당한처리를하는것이필요하다. 그렇기때문에 TabListener 인터페이스의메소드를구현할필요가있다. TabListener 를 implements로선언하고, Main 클래스내부에 ontabreselected(), ontabselected(), 그리고 ontabunselected() 메소드를작성하면된다. 이메소드에대한설명은다음표를참고하기바란다. METHOD SUMMARY android.app.actionbar 클래스의내비게이션탭이벤트메소드 void ontabreselected(actionbar.tab tab, FragmentTransaction ft) 선택된탭이다시선택되었을때호출된다. 매개변수 tab 다시선택된탭 ft 프래그먼트처리담당클래스 void ontabselected(actionbar.tab tab, FragmentTransaction ft) 탭이선택된상태가되었을때호출된다. 매개변수 tab 선택된탭 ft 프래그먼트처리담당클래스 void ontabunselected(actionbar.tab tab, FragmentTransaction ft) 탭이선택된상태가해지되었을때호출된다. 매개변수 tab 선택해지된탭 ft 프래그먼트처리담당클래스 FragmentTransaction 클래스에대해서는프래그먼트부분에서살펴볼것이므로여기서는이런게있구나정도로생각하기바란다.
34 SECTION 01 _ 액션바 (ActionBar) 437 리스트 (List) 모드살펴보기 참고프로젝트 ActionBarDemoE2 이섹션에서는액션바에리스트를추가하고클릭했을때 Toast 메시지를화면에출력하도록하겠다. 다음두화면은태블릿크기와스마트폰크기에서보여지는액션바의리스트모양이다. 주의해서봐 야할부분은리스트가액션바에표시되었다는것이다. 그림 5-26 액션바의리스트모드 - WVGA(800 * 480) 그림 5-27 액션바의리스트모드 - WXGA(1280 * 800)
35 438 PART 05 _ 안드로이드활용 이렇게만들기위한절차는다음과같다. (1) 리스트에표현할문자열배열작성 - /res/values/strings.xml (2) 문자열배열로 SpinnerAdapter 생성 (3) 액션바에 SpinnerAdapter 설정가장먼저리스트에표시할문자열배열을생성해야한다. 다음처럼 strings.xml에 <string-array> 를선언하면된다. CODE 문자열 XML - /res/values/strings.xml <?xml version= 1.0 encoding= utf-8?> <resources> <string name= hello >Hello World, Main!</string> <string name= app_name >ActionBarDemoE2</string> <string-array name= action_list > <item>item 1</item> <item>item 2</item> <item>item 3</item> </string-array> </resources> 이제선언된문자열배열을액션바의리스트로표시할액티비티를작성하면된다. 일단전체코드를 보도록하자. CODE Main.java package com.androidside.actionbardemoe2; import android.app.actionbar; import android.app.activity; import android.os.bundle; import android.widget.arrayadapter; import android.widget.spinneradapter; import android.widget.toast; public class Main extends Activity implements ActionBar.OnNavigationListener {
36 SECTION 01 _ 액션바 (ActionBar) public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); SpinnerAdapter spinneradapter = ArrayAdapter.createFromResource(this, R.array.action_list, android.r.layout.simple_spinner_dropdown_item); ActionBar actionbar = getactionbar(); actionbar.setnavigationmode(actionbar.navigation_mode_list); actionbar.setlistnavigationcallbacks(spinneradapter, public boolean onnavigationitemselected(int itemposition, long itemid) { String[] actions = getresources().getstringarray(r.array.action_list); Toast.makeText(this, actions[itemposition], Toast.LENGTH_SHORT).show(); return true; 주요코드에대해서하나씩살펴보도록하겠다. SpinnerAdapter spinneradapter = ArrayAdapter.createFromResource(this, R.array.action_list, android.r.layout.simple_spinner_dropdown_item); SpinnerAdapter를 /res/values/strings.xml에선언한문자열배열인 action_list를사용해서생성한다. 이때문자열배열로 SpinnerAdapter를생성해야하므로 ArrayAdapter 클래스의 cre atefromresource() 메소드를사용했으며, 안드로이드에서기본으로제공하는레이아웃을사용하기위해 android.r.layout.simple_spinner_dropdown_item을지정했다. actionbar.setnavigationmode(actionbar.navigation_mode_list); 내비게이션모드를리스트형태로설정한다.
37 440 PART 05 _ 안드로이드활용 actionbar.setlistnavigationcallbacks(spinneradapter, this); spinneradapter를액션바에설정하고관련된이벤트를현재클래스에서처리할수있게한다. 이렇게 this를선언하기위해서는현재클래스 ( 액티비티 ) 가 ActionBar.OnNavigationListener를구현하고있어야한다. public class Main extends Activity implements ActionBar.OnNavigationListener { SpinnerAdapter 의이벤트를액션바에서처리할수있도록 ActionBar.OnNavigationListener 를 구현하고관련메소드인 onnavigationitemselected() 를작성한다. METHOD SUMMARY android.app.actionbar.onnavigationlistener 인터페이스의메소드 boolean onnavigationitemselected(int itemposition, long itemid) 내비게이션아이템을선택할때호출된다. 매개변수 itemposition 선택한아이템의위치 itemid 선택한아이템의아이디 (ID) 반환이벤트의처리여부 ( 처리하면 true, 그렇지않으면 false) TIP & TECH 액션바의리스트모드에서리스트의문자열이매우길때일반스마트폰화면에서리스트는액션바의아이콘과같은라인에표시되는반면에탭은액션바의아래에표시된다. 그런데만약리스트의내용이매우길경우에는어떻게될까? 매우길기때문에탭처럼액션바의아래에표시가될까? 실제로문자열을길게작성해서실행해보면액션바의제목이사라지고리스트가보이는것을알수있다. 또한리스트의내용이매우길때는일부분만보인다는것도알수있다. 이러한표시방식을이해하고있어야향후애플리케이션화면기획을할때시행착오를조금이나마줄일수있을것이다. 그림 5-28
[ 그림 8-1] XML 을이용한옵션메뉴설정방법 <menu> <item 항목ID" android:title=" 항목제목 "/> </menu> public boolean oncreateoptionsmenu(menu menu) { getme
8 차시메뉴와대화상자 1 학습목표 안드로이드에서메뉴를작성하고사용하는방법을배운다. 안드로이드에서대화상자를만들고사용하는방법을배운다. 2 확인해볼까? 3 메뉴 1) 학습하기 [ 그림 8-1] XML 을이용한옵션메뉴설정방법 public boolean
More information50_1953.pdf
C h a p t e r 02 194 Part Mobile Apps 01 01 02 Chapter 02 195 03 04 196 Part 02 01 02 03 04 Chapter 02 197 05 06 07 08 198 Part 03 01 02 Chapter 02 199 03 04 05 06 200 Part 07 08 09 10 Chapter 02 201 04
More information01장
CHAPTER1 Camera (MediaStore) EXIF 1 2 CHAPTER 1 SDK (intent) Camera Camera Camera Android Manifest xml Camera Camera
More information03장
CHAPTER3 ( ) Gallery 67 68 CHAPTER 3 Intent ACTION_PICK URI android provier MediaStore Images Media EXTERNAL_CONTENT_URI URI SD MediaStore Intent choosepictureintent = new Intent(Intent.ACTION_PICK, ë
More information안드로이드기본 11 차시어댑터뷰 1 학습목표 어댑터뷰가무엇인지알수있다. 리스트뷰와스피너를사용하여데이터를출력할수있다. 2 확인해볼까? 3 어댑터뷰 1) 학습하기 어댑터뷰 - 1 -
11 차시어댑터뷰 1 학습목표 어댑터뷰가무엇인지알수있다. 리스트뷰와스피너를사용하여데이터를출력할수있다. 2 확인해볼까? 3 어댑터뷰 1) 학습하기 어댑터뷰 - 1 - ArrayAdapter ArrayAdapter adapter = new ArrayAdapter(this, android.r.layout.simple_list_item_1,
More information학습목표 메뉴를추가하는방법을이해하고실습할수있다. 프로그램의기본설정 (settings) 을정의하는방법을알고실습할수있다. 대화상자를여는방법을알고실습할수있다. 로그메시지로디버깅하는방법을이해한다. 디버거로디버깅하는방법을이해한다.
헬로, 안드로이드 4 주차 사용자인터페이스디자인하기 (2) 강대기동서대학교컴퓨터정보공학부 학습목표 메뉴를추가하는방법을이해하고실습할수있다. 프로그램의기본설정 (settings) 을정의하는방법을알고실습할수있다. 대화상자를여는방법을알고실습할수있다. 로그메시지로디버깅하는방법을이해한다. 디버거로디버깅하는방법을이해한다. 차례 메뉴추가하기 Settings 추가하기 새게임시작하기
More information( )부록
A ppendix 1 2010 5 21 SDK 2.2. 2.1 SDK. DevGuide SDK. 2.2 Frozen Yoghurt Froyo. Donut, Cupcake, Eclair 1. Froyo (Ginger Bread) 2010. Froyo Eclair 0.1.. 2.2. UI,... 2.2. PC 850 CPU Froyo......... 2. 2.1.
More information[ 그림 7-1] 프로젝트 res 폴더 이미지뷰 [ 예제 7-1] 이미지뷰 1 <LinearLayout 2 ~~~~ 중간생략 ~~~~ 3 android:orientation="vertical" > 4 <ImageView
7 차시이미지처리 1 학습목표 이미지뷰를사용하는방법을배운다. 비트맵을사용하는방법을배운다. 2 확인해볼까? 3 이미지뷰와이미지버튼 1) 학습하기 [ 그림 7-1] 프로젝트 res 폴더 이미지뷰 [ 예제 7-1] 이미지뷰 1 4
More information리니어레이아웃 - 2 -
4 차시레이아웃 1 학습목표 레이아웃의개념을이해한다. 중복리니어레이아웃의개념이해한다. 2 확인해볼까? 3 레이아웃개념익히기 1) 학습하기 [ 그림 4-1] ViewGroup 클래스계층도 리니어레이아웃 - 2 - [ 예제 4-1]orientation 속성-horizontal 1
More information9 차시고급위젯다루기 1 학습목표 날짜 / 시간과관련된위젯을배운다. 웹뷰를사용하여간단한웹브라우저기능을구현한다. 매니패스트파일의설정법을배운다. 2 확인해볼까? 3 날짜 / 시간위젯 1) 활동하기 활동개요
9 차시고급위젯다루기 1 학습목표 날짜 / 시간과관련된위젯을배운다. 웹뷰를사용하여간단한웹브라우저기능을구현한다. 매니패스트파일의설정법을배운다. 2 확인해볼까? 3 날짜 / 시간위젯 1) 활동하기 활동개요 [ 그림 9-1] 시간예약앱 활동과정 - 2 - [ 그림 9-2] 안드로이드 SDK Manager [ 예제 9-1]main.xml 1
More information2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.
10 차시파일처리 1 학습목표 내장메모리의파일을처리하는방법을배운다. SD 카드의파일을처리하는방법을배운다. 2 확인해볼까? 3 내장메모리파일처리 1) 학습하기 [ 그림 10-1] 내장메모리를사용한파일처리 2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1
More information어댑터뷰
04 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adatper View) 란? u 어댑터뷰의항목하나는단순한문자열이나이미지뿐만아니라, 임의의뷰가될수 있음 이미지뷰 u 커스텀어댑터뷰설정절차 1 2 항목을위한 XML 레이아웃정의 어댑터정의 3 어댑터를생성하고어댑터뷰객체에연결
More information1부
PART 1 2 PART 01 _ SECTION 01 API NOTE SECTION 02 3 SECTION 02 GPL Apache2 NOTE 4 PART 01 _ SECTION 03 (Proyo) 2 2 2 1 2 2 : 2 2 Dalvik JIT(Just In Time) CPU 2~5 2~3 : (Adobe Flash) (Air) : SD : : : SECTION
More information2 Application Name: Day10_yhg <LinearLayout android:layout_weight="3" > /> an
1 Application Name: Day10_yhg 예제 10-9 activity_main.xml
More information슬라이드 1
사용자인터페이스 (II) 시작하면서 2 목차 리스트뷰 : 어댑터, 어댑터뷰, 대화창 메뉴 리스트뷰 - 어댑터 Adapter 4 배열, XML 파일, 데이터베이스에서다양한종류의값을읽어오는공통의인터페이스 선택위젯에게데이터를제공, 각데이터항목들을위젯내부에표시하는위젯클래스로의변홖수행 사용자인터페이스인뷰와데이터소스를연결 Data Source: Array, XML, Database
More informationDaum 카페
인쇄하기 인쇄 [22 장 ] 프래그먼트 (1/8) (20140815 완료 ) 책에담지못한장들 슈퍼성근 조회 326 2014/08/10 22:38:46 주의 : 소스내용중 "0nClick", "0nStart" 함수명첫글자가숫자 0 인것은오타가아닙니다. 다움게시판은 o n C l i c k 라는글을입력할수없기때문에어쩔수없이 영문소문자 o 를숫자 0 으로대체하였습니다.
More informationPowerPoint Presentation
객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean
More information학습목표 선언하여디자인을하는방법을이해하고, 실행할수있다. 시작화면을만드는방법과대체리소스를사용하는방법을이해하고실행할수있다. About 과같은상자를구현하고, 테마를적용하는법을이해하고실행할수있다.
헬로, 안드로이드 3 주차 사용자인터페이스디자인하기 (1) 강대기동서대학교컴퓨터정보공학부 학습목표 선언하여디자인을하는방법을이해하고, 실행할수있다. 시작화면을만드는방법과대체리소스를사용하는방법을이해하고실행할수있다. About 과같은상자를구현하고, 테마를적용하는법을이해하고실행할수있다. 차례 스도쿠예제소개하기 선언하여디자인하기 시작화면만들기 대체리소스사용하기 About
More information이것은리스트뷰의 setadapter 메소드에잘표현되어있습니다. setadapter 는리스트뷰에사용할데이터객체를넘겨주는메소드입니다. 일반적으로생각한다면 ArrayAdapter 객체를생성하여사용할데이터를저장할것이고데이터가저장된 ArrayAdapter 객체를 setadapt
1. 리스트뷰의구조 리스트뷰는어떤데이터그룹에대한각각의정보들을항목별로출력시키고사용자에게원하는항목을검색하거나선택할수있도록해주는컨트롤객체입니다. 그래서다른컨트롤처럼정해진형태의정보를저장하는것이아니기때문에리스트뷰가데이터를직접관리하기는힘들었을것입니다. 그래서효과적인데이터관리를위해 "ArrayAdapter" 라는클래스가추가되었고리스트뷰는이클래스를이용해서사용자가지정한데이터에접근하도록구현되어있습니다.
More informationPowerPoint Presentation
Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음
More informationJAVA PROGRAMMING 실습 08.다형성
2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스
More information오버라이딩 (Overriding)
WindowEvent WindowEvent 윈도우가열리거나 (opened) 닫힐때 (closed) 활성화되거나 (activated) 비활성화될때 (deactivated) 최소화되거나 (iconified) 복귀될때 (deiconified) 윈도우닫힘버튼을누를때 (closing) WindowEvent 수신자 abstract class WindowListener
More information01 [ 일기장 ] 애플리케이션프로젝트작성 - [MyDiary] 앱 Mobile Apps >> [MyDiary] 앱프로젝트구조설계 일기장애플리케이션인 [MyDiary] 앱은메인화면과일기장의내용을작성하는화면으로이루어져있다. 화면이 2개라는것은액티비티가 2개이고액티비티에대
Chapter 03 일기장앱개발 일기장애플리케이션프로젝트를작성할수있다. 일기장애플리케이션의화면을작성할수있다. 일기장애플리케이션의로직을작성할수있다. { 프로젝트작성하기 Step 1 - [MyDiary] 앱 [ 일기장 ] 애플리케이션프로젝트작성 >> >> Step 2 [ 일기장 ] 애플리케이션의화면설계 Step 3 [ 일기장 ] 애플리케이션의로직작성 이장에서는
More informationPowerPoint Template
JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것
More informationMicrosoft PowerPoint UI-Event.Notification(1.5h).pptx
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
More informationTipssoftAppActivity.java // 기본소스파일 main.xml // 배치와구성에관련된리소스파일 string.xml // 프로그램에서사용할문자열에관련된리소스파일 컴파일을하고나면 r.java 라는소스파일이하나추가되는데이파일은리소스파일을소스파일에서이용할수있도
1. " 소스파일 " 과 " 리소스파일 " 에대하여 소스파일은우리가흔히알고있듯이프로그래밍언어를사용해서자신이만들고자하는프로그램을구현한파일입니다. 예전에작성된프로그램들은소스파일만으로이루어진프로그램도많았습니다. 하지만, 프로그램환경이점점더복잡해지고사용자인터페이스가다양해지면서인터페이스구성을서술식으로나열해서소스파일에표현하는것은한계가왔고작업효율을떨어트리게되어해결책이필요하게되었습니다.
More information슬라이드 1
헬로, 안드로이드 3 주차 사용자인터페이스디자인하기 (1) 강대기동서대학교컴퓨터정보공학부 학습목표 선언하여디자인을하는방법을이해하고, 실행핛수있다. 시작화면을만드는방법과대체리소스를사용하는방법을이해하고실행핛수있다. About 과같은상자를구현하고, 테마를적용하는법을이해하고실행핛수있다. 차례 스도쿠예제소개하기 선언하여디자인하기 시작화면만들기 대체리소스사용하기 About
More informationPowerPoint Presentation
Package Class 3 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section
More information슬라이드 1
모바일소프트웨어프로젝트 지도 API 1 조 20070216 김성수 20070383 김혜준 20070965 이윤상 20071335 최진 1 매시업? 공개 API? 2 매시업 웹으로제공하고있는정보와서비스를융합하여새로운소프트웨어나서비스, 데이터베이스등을만드는것 < 최초의매시업 > 3 공개 API 누구나사용할수있도록공개된 API 지도, 검색등다양한서비스들에서제공 대표적인예
More informationPowerPoint Presentation
객체지향프로그래밍 인터페이스, 람다식, 패키지 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 홈네트워킹 public interface RemoteControl { public void turnon(); // 가전제품을켠다. public void turnoff(); // 가전제품을끈다. 인터페이스를구현 public class Television
More informationMobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V
Mobile Service > IAP > Android SDK IAP SDK TOAST SDK. IAP SDK. Android Studio IDE 2.3.3 Android SDK Version 2.3.3 (API Level 10). Name Reference Version License okhttp http://square.github.io/okhttp/ 1.5.4
More information2_안드로이드UI
03 Layouts 레이아웃 (Layout) u ViewGroup의파생클래스로서, 포함된 View를정렬하는기능 u 종류 LinearLayout 컨테이너에포함된뷰들을수평또는수직으로일렬배치하는레이아웃 RelativeLayout 뷰를서로간의위치관계나컨테이너와의위치관계를지정하여배치하는레이아웃 TableLayout 표형식으로차일드를배치하는레이아웃 FrameLayout
More informationPowerPoint 프레젠테이션
Basic Widgets Jo, Heeseung Contents 뷰의개요 기본위젯다루기 기본위젯활용하기 2 뷰의개요 안드로이드화면에서실제로사용되는것은모두 View 클래스에서상속 이러한클래스를모두 ' 위젯 ' ( 또는뷰 ) 이라고도부름 위젯중에서다른위젯을담을수있는것들은주로 ViewGroup 클래스의하위에존재 이렇게다른위젯을담을수있는클래스를레이아웃이라고함 위젯
More information<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>
Power Java 제 8 장클래스와객체 I 이번장에서학습할내용 클래스와객체 객체의일생직접 메소드클래스를 필드작성해 UML 봅시다. QUIZ 1. 객체는 속성과 동작을가지고있다. 2. 자동차가객체라면클래스는 설계도이다. 먼저앞장에서학습한클래스와객체의개념을복습해봅시다. 클래스의구성 클래스 (class) 는객체의설계도라할수있다. 클래스는필드와메소드로이루어진다.
More informationPowerPoint Presentation
public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +
More informationJAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각
JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.
More informationPowerPoint 프레젠테이션
실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3
More information슬라이드 1
13 장. 커스텀뷰개발 API 에서제공하는뷰를그대로이용하면서약간변형시킨뷰 여러뷰를합쳐서한번에출력하기위한뷰 기존 API 에전혀존재하지않는뷰 public class MyView extends TextView { public class MyView extends ViewGroup { public class MyView extends View { 커스텀뷰를레이아웃
More informationMicrosoft PowerPoint - 04기본위젯(Ver 1.0)
04. 기본위젯익히기 IT CookBook, 안드로이드프로그래밍 학습목표 뷰와뷰상속을이해한다. 기본위젯을다루는방법을익힌다. 안드로이드앱의기본적인프로그래밍을숙달한다. Page 3 차례 Page 4 1. 뷰의개요 뷰와뷰그룹 안드로이드화면에서실제로사용되는것은모두 View 클래스에서상속을받으며, 이러한클래스를모두 ' 위젯 '( 또는뷰 ) 이라고도부름. 위젯중에서다른위젯을담을수있는것들은주로
More informationgnu-lee-oop-kor-lec10-1-chap10
어서와 Java 는처음이지! 제 10 장이벤트처리 이벤트분류 액션이벤트 키이벤트 마우스이동이벤트 어댑터클래스 스윙컴포넌트에의하여지원되는이벤트는크게두가지의카테고리로나누어진다. 사용자가버튼을클릭하는경우 사용자가메뉴항목을선택하는경우 사용자가텍스트필드에서엔터키를누르는경우 두개의버튼을만들어서패널의배경색을변경하는프로그램을작성하여보자. 이벤트리스너는하나만생성한다. class
More informationPowerPoint 프레젠테이션
Application Framework 어플리케이션프레임워크 발표자 : 김준섭 이문서는나눔글꼴로작성되었습니다. 다운받기 목차 Application Framework. 1. 통지관리자 (Notification Manager) 2. 리소스관리자 (resource manager) 3. 레이아웃인플레이터매니저 (Layout Inflater Manager) Notification
More informationView Licenses and Services (customer)
빠른 빠른 시작: 시작: 라이선스, 라이선스, 서비스 서비스 및 주문 주문 이력 이력 보기 보기 고객 가이드 Microsoft 비즈니스 센터의 라이선스, 서비스 및 혜택 섹션을 통해 라이선스, 온라인 서비스, 구매 기록 (주문 기록)을 볼 수 있습니다. 시작하려면, 비즈니스 센터에 로그인하여 상단 메뉴에서 재고를 선택한 후 내 재고 관리를 선택하십시오. 목차
More informationMicrosoft PowerPoint App Fundamentals[Part2].pptx
To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 애플리케이션기초 Part 1 애플리케이션컴포넌트 액티비티와태스크 프로세스와쓰레드 컴포넌트생명주기 Part 2 2 태스크는명시적으로정의 / 선언하는것이아니라, 주어진목적을위해 현재수행되고있는액티비티들의스택이다. 예를들어, 어떤액티비티가특정위치상의시가지지도를보여주고자한다하자. 해당액티비티는안드로이드에이미존재하는맵뷰어액티비티를실행
More informationPowerPoint 프레젠테이션
@ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program
More informationUI VoC Process 안
Android Honeycomb UI design guide Bryan Woo (pyramos@gmail.com) Bryan Woo (pyramos@gmail.com) Table of Contents Announcement Basic Screen Portrait Screen Action Bar System Bar Main Menu Options Menu Small
More information제11장 프로세스와 쓰레드
제9장자바쓰레드 9.1 Thread 기초 (1/5) 프로그램 명령어들의연속 (a sequence of instruction) 프로세스 / Thread 실행중인프로그램 (program in execution) 프로세스생성과실행을위한함수들 자바 Thread 2 9.1 Thread 기초 (2/5) 프로세스단위작업의문제점 프로세스생성시오버헤드 컨텍스트스위치오버헤드
More informationMicrosoft PowerPoint 자바-기본문법(Ch2).pptx
자바기본문법 1. 기본사항 2. 자료형 3. 변수와상수 4. 연산자 1 주석 (Comments) 이해를돕기위한설명문 종류 // /* */ /** */ 활용예 javadoc HelloApplication.java 2 주석 (Comments) /* File name: HelloApplication.java Created by: Jung Created on: March
More informationMicrosoft PowerPoint - 4주차_Android_UI구현.ppt [호환 모드]
Android UI 구현 학습목표 교육목표 Android application 구성요소 Activity Layout UI 설계 Linear Layout 구현 Android application 구성요소 (1) () Application 구성요소 AndroidManifest.xml Android application 구성요소 (2) 구성요소 기능 Activity
More informationchap 5: Trees
5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경
More informationPowerPoint Presentation
자바프로그래밍 1 배열 손시운 ssw5176@kangwon.ac.kr 배열이필요한이유 예를들어서학생이 10 명이있고성적의평균을계산한다고가정하자. 학생 이 10 명이므로 10 개의변수가필요하다. int s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; 하지만만약학생이 100 명이라면어떻게해야하는가? int s0, s1, s2, s3, s4,
More information헬로, 안드로이드 13 주차 SQL 활용하기 (2) 강대기동서대학교컴퓨터정보공학부
헬로, 안드로이드 13 주차 SQL 활용하기 (2) 강대기동서대학교컴퓨터정보공학부 학습목표 데이터바인딩을통해데이터소스에해당하는데이터베이스와뷰에해당하는액티비티를연결한데이터베이스응용프로그램을작성할수있다. 안드로이드내의다른어플리케이션의데이터에접근하기위해제공되는 ContentProvider 를사용할수있다. 자신의어플리케이션에서다른어플리케이션으로의데이터제공을위한 ContentProvider
More informationMicrosoft Word - src.doc
IPTV 서비스탐색및콘텐츠가이드 RI 시스템운용매뉴얼 목차 1. 서버설정방법... 5 1.1. 서비스탐색서버설정... 5 1.2. 컨텐츠가이드서버설정... 6 2. 서버운용방법... 7 2.1. 서비스탐색서버운용... 7 2.1.1. 서비스가이드서버실행... 7 2.1.2. 서비스가이드정보확인... 8 2.1.3. 서비스가이드정보추가... 9 2.1.4. 서비스가이드정보삭제...
More informationgnu-lee-oop-kor-lec06-3-chap7
어서와 Java 는처음이지! 제 7 장상속 Super 키워드 상속과생성자 상속과다형성 서브클래스의객체가생성될때, 서브클래스의생성자만호출될까? 아니면수퍼클래스의생성자도호출되는가? class Base{ public Base(String msg) { System.out.println("Base() 생성자 "); ; class Derived extends Base
More information제8장 자바 GUI 프로그래밍 II
제8장 MVC Model 8.1 MVC 모델 (1/7) MVC (Model, View, Controller) 모델 스윙은 MVC 모델에기초를두고있다. MVC란 Xerox의연구소에서 Smalltalk 언어를바탕으로사용자인터페이스를개발하기위한방법 MVC는 3개의구성요소로구성 Model : 응용프로그램의자료를표현하기위한모델 View : 자료를시각적으로 (GUI 방식으로
More information슬라이드 1
핚국산업기술대학교 제 14 강 GUI (III) 이대현교수 학습안내 학습목표 CEGUI 라이브러리를이용하여, 게임메뉴 UI 를구현해본다. 학습내용 CEGUI 레이아웃의로딩및렌더링. OIS 와 CEGUI 의연결. CEGUI 위젯과이벤트의연동. UI 구현 : 하드코딩방식 C++ 코드를이용하여, 코드내에서직접위젯들을생성및설정 CEGUI::PushButton* resumebutton
More information쉽게 풀어쓴 C 프로그래밍
Power Java 제 11 장상속 이번장에서학습할내용 상속이란? 상속의사용 메소드재정의 접근지정자 상속과생성자 Object 클래스 종단클래스 상속을코드를재사용하기위한중요한기법입니다. 상속이란? 상속의개념은현실세계에도존재한다. 상속의장점 상속의장점 상속을통하여기존클래스의필드와메소드를재사용 기존클래스의일부변경도가능 상속을이용하게되면복잡한 GUI 프로그램을순식간에작성
More informationMicrosoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]
Google Map View 구현 학습목표 교육목표 Google Map View 구현 Google Map 지원 Emulator 생성 Google Map API Key 위도 / 경도구하기 위도 / 경도에따른 Google Map View 구현 Zoom Controller 구현 Google Map View (1) () Google g Map View 기능 Google
More informationMicrosoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx
To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 Eclipse (IDE) JDK Android SDK with ADT IDE: Integrated Development Environment JDK: Java Development Kit (Java SDK) ADT: Android Development Tools 2 JDK 설치 Eclipse
More information사용설명서를 읽기 전에 안드로이드(Android)용 아이디스 모바일은 네트워크 연결을 통해 안드로이드 플랫폼 기반의 모바일 기기에서 장치 (DVR, NVR, 네트워크 비디오 서버, 네트워크 카메라) 에 접속하여 원격으로 영상을 감시할 수 있는 프로그램입니다. 장치의 사
IDIS Mobile Android 사용설명서 Powered by 사용설명서를 읽기 전에 안드로이드(Android)용 아이디스 모바일은 네트워크 연결을 통해 안드로이드 플랫폼 기반의 모바일 기기에서 장치 (DVR, NVR, 네트워크 비디오 서버, 네트워크 카메라) 에 접속하여 원격으로 영상을 감시할 수 있는 프로그램입니다. 장치의 사양 및 버전에 따라 일부
More informationJAVA PROGRAMMING 실습 05. 객체의 활용
public class Person{ public String name; public int age; } public Person(){ } public Person(String s, int a){ name = s; age = a; } public String getname(){ return name; } @ 객체의선언 public static void main(string
More informationMicrosoft PowerPoint App Fundamentals[Part1](1.0h).pptx
To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 애플리케이션기초 애플리케이션컴포넌트 액티비티와태스크 Part 1 프로세스와쓰레드 컴포넌트생명주기 Part 2 2 Library Java (classes) aapk.apk (android package) identifiers Resource & Configuration aapk: android
More informationq 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2
객체지향프로그래밍 IT CookBook, 자바로배우는쉬운자료구조 q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 q 객체지향프로그래밍의이해 v 프로그래밍기법의발달 A 군의사업발전 1 단계 구조적프로그래밍방식 3 q 객체지향프로그래밍의이해 A 군의사업발전 2 단계 객체지향프로그래밍방식 4 q 객체지향프로그래밍의이해 v 객체란무엇인가
More informationMicrosoft PowerPoint UI-Layout.Menu.pptx
To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 User Interface 개요 Declaring Layout Creating Menus 2 View: user interface 의기본단위 사각형 (rectangle) 영역을차지하며, 그리기및이벤트처리의기본단위이다. Widget 을생성하기위한기본클래스이다. 예 : 버튼, 텍스트창,
More informationclass Sale void makelineitem(productspecification* spec, int qty) SalesLineItem* sl = new SalesLineItem(spec, qty); ; 2. 아래의액티비티다이어그램을보고 Java 또는 C ++,
Level 1은객관식사지선다형으로출제예정 1. 다음은 POST(Post of Sales Terminal) 시스템의한콜레보레이션다이어그램이다. POST 객체의 enteritem(upc, qty) 와 Sale 객체의 makellineitem(spec,qty) 를 Java 또는 C ++, C # 언어로구현하시오. 각메소드구현과관련하여각객체내에필요한선언이있으면선언하시오.
More information제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호
제이쿼리 () 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 CSS와마찬가지로, 문서에존재하는여러엘리먼트를접근할수있다. 엘리먼트접근방법 $( 엘리먼트 ) : 일반적인접근방법
More information사용설명서를 읽기 전에 ios용 아이디스 모바일은 네트워크 연결을 통해 ios 플랫폼 기반의 모바일 기기(iOS 버전 6.0 이상의 ipod Touch, iphone 또는 ipad)에서 장치(DVR, 네트워크 비디오 서버 및 네트워크 카메라)에 접속하여 원격으로 영상을
IDIS Mobile ios 사용설명서 Powered by 사용설명서를 읽기 전에 ios용 아이디스 모바일은 네트워크 연결을 통해 ios 플랫폼 기반의 모바일 기기(iOS 버전 6.0 이상의 ipod Touch, iphone 또는 ipad)에서 장치(DVR, 네트워크 비디오 서버 및 네트워크 카메라)에 접속하여 원격으로 영상을 감시할 수 있는 프로그램입니다.
More informationJUNIT 실습및발표
JUNIT 실습및발표 JUNIT 접속 www.junit.org DownLoad JUnit JavaDoc API Document 를참조 JUNIT 4.8.1 다운로드 설치파일 (jar 파일 ) 을다운로드 CLASSPATH 를설정 환경변수에서설정 실행할클래스에서 import JUnit 설치하기 테스트실행주석 @Test Test 를실행할 method 앞에붙임 expected
More information// 화면을터치하였을때해야할작업구현 case MotionEvent.ACTION_MOVE: // 화면을드래그하였때 // 화면을드래그하였을때해야할작업구현 case MotionEvent.ACTION_UP: // 화면에서터치가사라질때 // 화면에서터치가사라질때해야할자업구현 c
6 차시이벤트처리 1 학습목표 터치이벤트처리를배운다. XML 의 onclick 속성을사용하여이벤트를처리한다. 2 확인해볼까? 3 이벤트처리하기 1) 학습하기 터치이벤트 public boolean ontouchevent(motionevent event) { swtich(event.getaction()) { case MotionEvent.ACTION_DOWN:
More information슬라이드 1
Android App 개발기초 & Activity, Intent 세미나 2012. 03. 26 ING 팀여상권, 이용균, 최상욱, 권지해 목차 프로젝트생성과정설명 안드로이드동작, 구조설명 Activity 설명 Intent 설명 질문 1 프로젝트생성과정설명 1. Eclipse의메뉴바에서 File 선택 2. New선택후 Android Project 선택 3. Project
More information. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요
. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요소로써안드로이드시스템에서는 Activities, Services, Content Providers,
More informationMicrosoft PowerPoint - Java7.pptx
HPC & OT Lab. 1 HPC & OT Lab. 2 실습 7 주차 Jin-Ho, Jang M.S. Hanyang Univ. HPC&OT Lab. jinhoyo@nate.com HPC & OT Lab. 3 Component Structure 객체 (object) 생성개념을이해한다. 외부클래스에대한접근방법을이해한다. 접근제어자 (public & private)
More informationSpring Boot/JDBC JdbcTemplate/CRUD 예제
Spring Boot/JDBC JdbcTemplate/CRUD 예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) Spring Boot, Gradle 과오픈소스인 MariaDB 를이용해서 EMP 테이블을만들고 JdbcTemplate, SimpleJdbcTemplate 을이용하여 CRUD 기능을구현해보자. 마리아 DB 설치는다음 URL 에서확인하자.
More informationDesign Issues
11 COMPUTER PROGRAMMING INHERIATANCE CONTENTS OVERVIEW OF INHERITANCE INHERITANCE OF MEMBER VARIABLE RESERVED WORD SUPER METHOD INHERITANCE and OVERRIDING INHERITANCE and CONSTRUCTOR 2 Overview of Inheritance
More informationMicrosoft Word - ntasFrameBuilderInstallGuide2.5.doc
NTAS and FRAME BUILDER Install Guide NTAS and FRAME BUILDER Version 2.5 Copyright 2003 Ari System, Inc. All Rights reserved. NTAS and FRAME BUILDER are trademarks or registered trademarks of Ari System,
More informationMicrosoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx
To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 개발환경구조및설치순서 JDK 설치 Eclipse 설치 안드로이드 SDK 설치 ADT(Androd Development Tools) 설치 AVD(Android Virtual Device) 생성 Hello Android! 2 Eclipse (IDE) JDK Android SDK with
More informationMicrosoft PowerPoint App Fundamentals[Part1].pptx
To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 2 HangulKeyboard.apkapk 파일을다운로드 안드로이드 SDK 의 tools 경로아래에복사한후, 도스상에서다음과같이 adb 명령어수행 adb install HangulKeyboard.apk 이클립스에서에뮬레이터를구동 에뮬레이터메인화면에서다음과같이이동 메뉴버튼 설정 언어및키보드
More informationAndroid Master Key Vulnerability
Android Master Key Vulnerability Android Bug 8219321 2013/08/06 http://johnzon3.tistory.com Johnzone 内容 1. 개요... 2 1.1. 취약점요약... 2 1.2. 취약점정보... 2 2. 분석... 2 2.1. 기본개념... 2 2.2. 공격방법... 4 3. 방어대책... 7
More informationStuduino소프트웨어 설치
Studuino 프로그래밍환경 Studuino 소프트웨어설치 본자료는 Studuino 프로그래밍환경설치안내서입니다. Studuino 프로그래밍 환경의갱신에따라추가 / 수정될수있습니다. 목차 1. 소개... 1 2. Windows... 2 2.1. 프로그래밍환경설치... 2 2.1.1. 웹설치버전설치방법... 2 2.2. Studuino 프로그래밍환경실행...
More informationPowerPoint 프레젠테이션
인터페이스 배효철 th1g@nate.com 1 목차 인터페이스의역할 인터페이스선언 인터페이스구현 인터페이스사용 타입변환과다형성 인터페이스상속 디폴트메소드와인터페이스확장 2 인터페이스의역할 인터페이스란? 개발코드와객체가서로통신하는접점 개발코드는인터페이스의메소드만알고있으면 OK 인터페이스의역할 개발코드가객체에종속되지않게 -> 객체교체할수있도록하는역할 개발코드변경없이리턴값또는실행내용이다양해질수있음
More information* Factory class for query and DML clause creation * tiwe * */ public class JPAQueryFactory implements JPQLQueryFactory private f
JPA 에서 QueryDSL 사용하기위해 JPAQuery 인스턴스생성방법 http://ojc.asia, http://ojcedu.com 1. JPAQuery 를직접생성하기 JPAQuery 인스턴스생성하기 QueryDSL의 JPAQuery API를사용하려면 JPAQuery 인스턴스를생성하면된다. // entitymanager는 JPA의 EntityManage
More informationMicrosoft PowerPoint - 14주차 강의자료
Java 로만드는 Monster 잡기게임예제이해 2014. 12. 2 게임화면및게임방법 기사초기위치 : (0,0) 아이템 10 개랜덤생성 몬스터 10 놈랜덤생성 Frame 하단에기사위치와기사파워출력방향키로기사이동아이템과몬스터는고정종료버튼클릭하면종료 Project 구성 GameMain.java GUI 환경설정, Main Method 게임객체램덤위치에생성 Event
More informationPowerPoint Presentation
Package Class 1 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section
More information위젯과레이아웃위젯은 View 클래스를상속해화면디스플레이와이벤트처리를할수있도록구현된스크린구성의최소단위를말한다. android.widget 패키지에는여러유형의위젯들이포함되어있다. TextView, ImageView, Button, ImageButton 등은가장간단한위젯들이
구글안드로이드프로그래밍 GUI 설계, 위젯과레이아웃 QVGA급컬러 LCD 가대세가되어버린최근의휴대폰환경에서는 GUI 도모바일애플리케이션개발의매우중요한요소로자리잡았다. 이번달에는안드로이드플랫폼의 GUI 프레임워크를살펴보도록하자. 5 연재순서 1 회 2008. 1 애플리케이션구조분석 2 회 2008. 2 GUI 설계, 위젯과레이아웃 3 회 2008. 3 액티비티와인텐트,
More informationMicrosoft PowerPoint - 06-Chapter09-Event.ppt
AWT 이벤트처리하기 1. 이벤트처리방식 2. 이벤트클래스와리스너 3. 이벤트어댑터 4. 이벤트의종류 이벤트 (Event) 이벤트 사용자가 UI 컴포넌트에대해취하는행위로인한사건이벤트기반프로그래밍 무한루프를돌면서사용자의행위로인한이벤트를청취하여응답하는형태로작동하는프로그래밍 java.awt.event 이벤트처리 AWT 컴포넌트에서발생하는다양한이벤트를처리하기위한인터페이스와클래스제공
More informationC# Programming Guide - Types
C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든
More informationCluster management software
자바네트워크프로그래밍 (OCJP 국제공인자격취득중심 ) 충북대학교 최민 기본예제 예외클래스를정의하고사용하는예제 class NewException extends Exception { public class ExceptionTest { static void methoda() throws NewException { System.out.println("NewException
More informationSpring Data JPA Many To Many 양방향 관계 예제
Spring Data JPA Many To Many 양방향관계예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) 엔티티매핑 (Entity Mapping) M : N 연관관계 사원 (Sawon), 취미 (Hobby) 는다 : 다관계이다. 사원은여러취미를가질수있고, 하나의취미역시여러사원에할당될수있기때문이다. 보통관계형 DB 에서는다 : 다관계는 1
More informationPowerPoint 프레젠테이션
Hello Android Jo, Heeseung Contents HelloAndroid program AVD 명칭과사용법안드로이드응용프로그램작성안드로이드프로젝트구성 2 처음만드는 [Hello Android] 프로그램 3 처음만드는 [Hello Android] 프로그램 이클립스메뉴 [File]-[New]-[Project] 를선택 [New Project] 창에서
More information슬라이드 1
3 장안드로이드프로그램의 첫걸음 시작하면서 2 목차 프로젝트의생성하기 프로젝트파읷및소스코드이해 코드로문자열표시하기 문자열출력프로그램응용 프로젝트에새로운파읷 / 속성추가 프로젝트생성하기 프로젝트생성하기 4 < 실습 5-1>: Android 프로젝트의생성과에뮬레이터구동 (1)[ 그림 3-1](a) 처럼안드로이드프로젝트생성아이콘클릭 [ 그림 3-1](b) 처럼이클립스에서메뉴선택
More informationNetwork Programming
Part 5 확장된 Network Programming 기술 1. Remote Procedure Call 2. Remote Method Invocation 3. Object Request Broker 2. Java RMI
More informationPowerPoint Presentation
자바프로그래밍 1 클래스와메소드심층연구 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 접근제어 class A { private int a; int b; public int c; // 전용 // 디폴트 // 공용 public class Test { public static void main(string args[]) { A obj = new
More informationEndpoint Protector - Active Directory Deployment Guide
Version 1.0.0.1 Active Directory 배포가이드 I Endpoint Protector Active Directory Deployment Guide 목차 1. 소개...1 2. WMI 필터생성... 2 3. EPP 배포 GPO 생성... 9 4. 각각의 GPO 에해당하는 WMI 연결... 12 5.OU 에 GPO 연결... 14 6. 중요공지사항
More information쉽게 풀어쓴 C 프로그래밍
제 5 장생성자와접근제어 1. 객체지향기법을이해한다. 2. 클래스를작성할수있다. 3. 클래스에서객체를생성할수있다. 4. 생성자를이용하여객체를초기화할수 있다. 5. 접근자와설정자를사용할수있다. 이번장에서만들어볼프로그램 생성자 생성자 (constructor) 는초기화를담당하는함수 생성자가필요한이유 #include using namespace
More information12 주차 인텐트
12 주차 인텐트 학습내용 1. 서브액티비티 2. 인텐트 3. 액티비티의생명주기 서브액티비티 액티비티 액티비티개요 - 안드로이드응용프로그램을구성하는주요콤포넌트의하나이며, 각예제마다하나씩액티비티를만들었는데각예제의화면하나가바로액티비티임 액티비티 액티비티개요 - 윈도우와유사한개념이지만 하나의화면 이라고이해하는것이옳음 - 즉, 액티비티는사용자와상호작용할수있는하나의윈도우라고생각하면옳음
More informationC++ Programming
C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout
More informationVisual Basic 반복문
학습목표 반복문 For Next문, For Each Next문 Do Loop문, While End While문 구구단작성기로익히는반복문 2 5.1 반복문 5.2 구구단작성기로익히는반복문 3 반복문 주어진조건이만족하는동안또는주어진조건이만족할때까지일정구간의실행문을반복하기위해사용 For Next For Each Next Do Loop While Wend 4 For
More informationMicrosoft PowerPoint - CSharp-10-예외처리
10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.
More informationTEST BANK & SOLUTION
TEST BANK & SOLUTION 어서와자바는처음이지!" 를강의교재로채택해주셔서감사드립니다. 본문제집을만드는데나름대로노력을기울였으나제가가진지식의한계로말미암아잘못된부분이있을것으로사료됩니다. 잘못된부분을발견하시면 chunik@sch.ac.kr로연락주시면더좋은책을만드는데소중하게사용하겠습니다. 다시한번감사드립니다. 1. 자바언어에서지원되는 8 가지의기초자료형은무엇인가?
More informationPowerPoint Presentation
public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +
More information