안드로이드 앱 42

안드로이드 - 액션바의 활용 두번째 액션 프로바이더

액션 프로바이더는 용도상으로 액션 뷰와 유사하지만 더 확장된 버젼이다. ActionProvider클래스를 상속받아 작성하며 필수 메소드 몇가지를 재정의 해야 한다. View onCreateActionView([MenuItem forItem]) 위의 메소드를 재정의하여 액션 뷰를 생성하여 리턴한다. 다음 메소드는 액션 뷰가 아닌 메뉴에 배치된 상태에서 메뉴를 선택할 때 호출된다. boolean onPerformDefaultAction() 메뉴 선택 시 이 메소드보다는 onOptionsItemSelected가 먼저 호출되는데 여기서 항목을 처리하지 않을 경우 onPerformDefaultAction 메소드가 대신 호출된다. 단 서브 메뉴가 있을 경우에는 이 메소드가 호출되지 않음. 이번 예제는 다음과 같이 ..

안드로이드 - 프래그먼트를 이용한 간단한 사전 만들기

Fragment를 이용해서 간단한 사전을 만들어 보자. 이번 예제는 다음과 같이 3개의 파일을 만들어야한다. activity_word_list_fragment.xml WordListFragment.java package com.example.wordlistfragment; import android.app.Activity; import android.app.ListFragment; import android.os.Bundle; import android.view.View; import android.widget.ArrayAdapter; import android.widget.ListView; public class WordListFragment extends ListFragment{ OnWordChang..

안드로이드 - 액션바의 활용 첫번째 SeachView

액션바에서 명령 전달보다 더 복잡한 동작을 직접 처리하려면 원하는 위젯이나 뷰그룹을 액션바에 배치하는데 이를 액션 뷰라고 한다. 메뉴 항목에 다음 두 속성을 사용하여 액션 뷰를 지정한다. 속성 설명 actionLayout 액션바에 배치할 뷰그룹의 레이아웃 리소스를 지정한다. actionViewClass 액션바에 배치할 위젯의 클래스를 지정한다. 액션 뷰 객체를 구하거나 설정할 때는 메뉴 항목의 다음 메서드를 호출한다. View getActionView() MenuItem setActionView(int resId) MenuItem setActionView(View view) onCreateOptionsMenu 메소드에서 메뉴를 전개한 후 메뉴 항목을 먼저 찾는다. 그리고 메뉴 항목의 getActionVi..

안드로이드 - 앱 로고 아이콘

액션바의 왼쪽에 앱의 로고 아이콘이 표시되어 실행 중인 앱이 무엇인지 보여준다. 다음 메소드를 사용하면 로고 아이콘을 사용하겠다는 선언을 한다. void setHomeButtonEnabled(boolean enabled) 이 선언을 한 상태에서 홈 버튼을 누르면 android.R.id.home 명령이 전달되며 여기서 원하는 작업을 한다. 1.Home으로 이동 : 메인 액티비티로 즉시 이동한다. 2. Up 내비케이션 : 한 수준 위의 상위 액티비티로 이동한다. Back 버튼을 누른 것과 유사함. 다음은 로고 아이콘을 누를 때 토스트 메시지를 띄우는 예제이다. app_icon.xml AppIcon.java package com.example.ch21_appicon; import android.app.Acti..

안드로이드 - 액션바 숨기기 및 보이기

프로그램 실행 중에 조건에 따라 액션바의 보이기 상태를 토글할 수도 있다. 이때는 ActionBar클래스의 다음 메소드를 호출한다. void show() void hide() boolean isShowing() 액션바는 ActionBar 클래스로 표현하며 액티비티의 getActionBar() 메소드로 언제든지 구할 수 있다. 다음은 버튼을 눌렀을 때 액션바를 숨기고 다시 보이게하는 예제이다. action_bar_test.xml activity_show_hide_action_bar.xml ShowHideActionBar.java package com.example.ch21_showhideactionbar; import android.app.ActionBar; import android.app.Activit..

안드로이드 - 액션바 기초

액션바에는 다음과 같은 항목이 배치된다. 1. 왼쪽에 응용 프로그램의 아이콘과 제목이 표시된다. 2. 오른쪽에는 자주 사용하는 메뉴 명령을 액션 항목으로 배치하여 신속하게 사용할 수 있다. 3. 커스텀 뷰를 배치하여 사용 빈도가 높은 기능을 처리한다. 4. 프래그먼트를 전환하는 탭 내비게이션을 지원한다. 액션바로 메뉴를 확장하려면 showAsAction 속성을 지정해야 한다. 속성 설명 never 항목을 액션바에 배치하지 않는다. 디폴트 값 always 항목을 항상 액션바에 배치한다. ifRoom 액션바에 여유 공간이 있을 때만 배치한다. withText 다른 옵션과 함께 | 연산자로 연결하여 지정한다. collapseActionView actionLayout이나 actionViewClass 속성으로 지..

안드로이드 - ListFragment 만들기

ListFragment는 리스트뷰로 가득 채워진 프래그먼트이며 목록을 보여주고 관리하는 것이 주된 임무이다. ListFragment 내부에는 단 하나의 리스트뷰 위젯만 배치되어 있으며 이 위젯에 목록이 표시된다. 구조나 프로그래밍 방법은 ListActivity와 비슷하다. getListView()메소드로 내부의 리스트뷰를 언제든지 구해 속성을 조정하거나 메소드를 호출 할 수 있다. setListAdapter 메소드로 어댑터를 지정하면 어댑터의 목록이 리스트뷰에 나타나며 리스트의 항목을 클릭하면 onListItemClick 콜백 메소드가 호출된다. 다음은 ListFragment로 리스트뷰와 같은 기능을 만드는 예제이다. 오직 ListFragmentTest.java 파일만 있으면 된다. package com..

안드로이드 - 백(Back) 버튼을 눌렀을 때 이전 프래그먼트로 복귀하기

여러 개의 액티비티로 구성된 프로그램은 실행 중인 액티비티의 목록을 스택에 저장한다. 프래그먼트도 액티비티와 마찬가지로 스택에 저장된다. 현재 상태를 스택에 저장하려면 다음 메소드를 사용한다. FragmentTransaction addToBackStack(String name) name은 스택의 상태에 대해 이름을 주는데 사용된다.(필요 없으면 null) 스택에 프래그먼트를 저장한 상태에서 사용자가 Back 버튼을 누르면 스택의 최상위에 있는 프래그먼트를 꺼내 원래 상태로 복귀한다. FragmentTransaction setTransition(int transit) FragmentTransaction setCustomAnimations(int enter, int exit [, int popEnter, i..

안드로이드 - 프래그먼트 인수 전달

프래그먼트도 메소드와 비슷하게 액티비티의 요구에 따라 조금씩 다르게 동작하기 위해 인수를 받아 들인다. 이때 프래그먼트의 인수 저장을 위해 아규먼트를 사용하며 다음 두 메소드로 아큐먼트를 설정하거나 얻는다. void setArguments(Bundle args) Bundle getArguments() 아규먼트는 프래그먼트 내부에 저장되는 Bundle 객체이며 주로 프래그먼트의 생성에 관련된 정보를 저장한다. 그래서 아규먼트는 액티비티에 프래그먼트를 부착하기 전에만 저장할 수 있다. 다음은 아규먼트를 사용하여 정수를 저장하는 예제이다. activity_fragment_argument.xml counterfragment.xml FragmentArgument.java package com.example.ch2..

안드로이드 - 프래그먼트 상태 저장하기

프래그먼트에 관한 내용은 안드로이드-프래그먼트-사용-간단-예제 를 참고하자. 이번에는 스마트폰의 상태 변경이나 화면이 가로로 될 때 자신의 데이터 저장을 해보자 이번에도 다음과 같이 3개의 파일을 만들어야 됨을 잊지 말자. counterfragment.xml 파일 기본적인 프래그먼트를 구성하는 UI 파일 save_fragment_state.xml 프래그먼트를 실제 사용하는 부분 SaveFragmentState.java package com.example.savefragmentstate; import android.app.Activity; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; imp..

반응형