본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[android] actionbar 어떻게 사용하고, 왜 사용하는가?

by 돼지왕 왕돼지 2013. 7. 15.
반응형


 안드로이드 actionbar 어떻게 사용하고, 왜 사용하는가?  

[android] actionbar 어떻게 사용하고, 왜 사용하는가?


필자는 왜 그냥 간단히 View 로 구현하면 되는걸 ActionBar 로 구현하는가 했다.

그것은 ActionBar 에 대해서 잘 모르기 때문에 한 이야기..

ActionBarSherlock 이라는 libary 를 사용하면서 actionbar 에 대해 재조명하게 되었다.


actionbar 의 기능들과 사용방법에 대해 간단하게 정리해본다.



onCreateOptionsMenu


onCreateOptionsMenu 에서 menu 를 add하면 그것이 ActionBar 의 우상단에 list 형태로 붙게 된다.




MenuItem.setShowAsAction( int actionEnum )


해당 Menu Item 이 ActionBar 에 어떤 형태로 display 될지를 보여준다.

MenuItem.SHOW_AS_ACTION_ALWAYS, SHOW_AS_ACTION_IF_ROOM, SHOW_AS_ACTION_NEVER 로 구분되며 SHOW_AS_ACTION_WITH_TEXT 를 or( | ) 로 묶어서 쓸 수도 있다.




android.R.id.home 은 뭐야?


android.R.id.home 는 Application Icon 의 ID 로 클릭시, onOptionsItemSelected callback이 불린다.




ActionMode


ActionMode 는 일종의 Context Menu 의 대체판이라고 볼 수 있는데, Long Press 나 Checkbox Selection 등에 대한 특정 메뉴를 보여준다.


Activity.startActionMode( ActionMode.Callback ) 는 action mode 를 가동시킨다.

ActionMode.Callback 을 impl 하는 class 를 구현해주고, 그 안에서 item 등록 및 click 콜백 등을 처리한다.


ActionMode 는 ActionMode.finish()를 통해서 수동으로 종료시킬수도 있다.


ActionBar 가 없어도 Activity.startActionMode() 로 ActionMode 는 enable 시킬 수 있다.







ActionProvider


Action Item 들에 대한 권한을 ActionProvider 를 상속한 class 에게 넘기는데 사용한다.

재사용이 가능하다는 측면과 Control 을 분리할 수 있다는 데 장점이 있다.


onOptionsItemSelected 에서 false 를 return 하면, 지정된 Item 에 setting 된 provider 관련 callback인 onPerformDefaultAction 이 불린다.




 Collapse Item


MenuItem.setShowAsAction 에 MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW flag 를 or( | ) 로 연결하여주면, 원래 layout 으로 expand 가능한 icon 혹은 text item 이 추가된다. 초기형태는 보통 collapse 된 형태이다. 


Expand 되었을 때는 App Icon 에 < 화살표가 생겨서 클릭하면 collapse 시킬 수 있다.




 Custom Item View


ActionBar.setCustomView( View ) 와 ActionBar.setDisplayShowCustomEnabled( boolean ) 으로 customview 를 setting 할 수 있다.




ActionBar 에서 지원하는 Feature 들


ActionBar display, hide

NavigationMode Standard / List / Tabs

Tab add, select, remove

Action Item add, remove

Title display, hide

Subtitle display, hide

CustomView display, hide

Home Action Item display, hide

Logo display, hide

Progress display, hide

Interminate progress diaply, hide






ListNavigation

 

ListNavigation 의 경우 onNavigationItemSelected 가 callback 으로 호출된다.




Actionbar overlay


ActionBar.setBackgroundDrawable( int resID ) 를 통해 transparent 한 배경을 지정해주고,

Activity.requestWindowFeature( Window.FEATURE_ACTION_BAR_OVERLAY ) 를 통해 배경을 투명으로 지정해주면 overlay 로 쓸 수 있다.




SearchView


SearchView 를 이용하면, callback 등록은 물론, suggestion 등을 연결하기도 좋다.




SubMenus


SubMenu 는 List 형태로 나타나기도 하고, 두번째 SubMenu 들은 Overflow 형태라 하여 Menu 키를 눌렀을 때 나온다.






ActionBar Split


SplitActionMode 를 코드상으로, 그리고 xml 상으로 declare 할 수 있는데, 폰과 같이 narrow screen 인 경우 actionbar 가 하단에 확장 장착된다.



이 모든 것은 ActionBar 와 ActionBarSherlock sample code 를 보면 이해가 더욱 쉽다.






반응형

댓글