안드로이드 앱개발 32

안드로이드 - Content Provider (콘텐트 프로바이더)

1. URI 안드로이드의 보안 정책상 응용 프로그램이 만든 데이터는 기본적으로 혼자만 액세스 가능하다. 자신이 만든 데이터를 외부로 공개할 때는 Content Provider를 제공해야한다. 콘텐트 프로바이더는 응용 프로그램을 구성하는 컴포넌트 중 하나로서 데이터를 제공하는 역할을 한다. URI(Uniform Resource Identifier)는 웹상의 주소를 나타내는 URL보다 더 상위의 개념이다. 국제 표준에 URI를 작성하는 방식은 다음과 같이 명시되어 있다. content://authority/path/id content://는 이 문자열이 URI임을 나타내는 접두이며 무조건 붙여야 한다. authority는 정보 제공자의 명칭이되 중복되면 안 되므로 패키지명을 사용할 것을 권장한다. path는..

안드로이드 - 압축 파일 사용하기

압축 파일 관리 기능은 자바에 의해 언어 차원에서 제공되므로 안드로이드도 별도의 추가 라이브러리 없이 압축 파일을 만들거나 해제할 수 있다. ZipFile 클래스는 파일 기반의 zip 압축 파일을 다루며 압축 파일 내의 임의 파일을 랜덤으로 액세스한다. 다음 두가지 생성자가 있으며 File 객체로부터 생성할 수도 있고 압축 파일의 경로를 주어 열 수도 있다. ZipFile(File file [, int mode]) ZipFile(String name) File 객체로 생성할 때 mode에 OPEN_DELETE를 지정하면 사용 후 자동으로 삭제되므로 임시적으로 압축 파일을 만들어 할용할 수 있다. Enumeration readzip.xml ReadZip.java package com.example.ch25..

안드로이드 - 내비게이션 탭(Navigation Tab)

TabActivity가 deprecated됨에 따라 이제 탭을 위해서는 다음의 방법을 써야한다. 참고 내용 : http://limts28.tistory.com/458 액션탭을 사용하려면 다음 메소드로 네비게이션탭으로 변경해야한다. void setNavigationMode(int mode) int getNavigationMode() 모드 설명 NAVIGATION_MODE_STANDARD 로고 아이콘과 액션 항목이 배치된다. NAVIGATION_MODE_TABS 액션바에 여러 개의 탭을 배치하려 페이지를 전환한다. NAVIGATION_MODE_LIST 드롭다운 리스트로 페이지를 전환한다. 액션바의 다음 메소드로 탭을 추가 삭제한다. ActionBar.Tab newTab() void addTab(ActionB..

[펌자료] 안드로이드 - 액티비티의 상태를 저장 및 복원하는 콜백 메소드 - onSaveInstanceState, onRestoreInstanceState

액티비티는 자신의 상태를 저장하거나 복원하는 것이 가능합니다. 이번 포스트에서는 액티비티의 상태를 저장 및 복원하는 콜백 메소드인 onSaveInstanceState와 onRestoreInstanceState에 대해 알아 봅니다. 액티비티의 상태를 저장함의 의미 액티비티의 상태를 저장한다는 것은 액티비티의 모습과 자료 등을 기기의 저장 장치에 저장함을 의미합니다. 여기에서 상태의 뜻이 resumed, paused, stopped 등과 같은 값들 중 하나를 갖는 변수가 아님에 유의하세요. 액티비티의 상태를 복원함의 의미 종료되지는 않았지만 사용되지 않는 액티비티들은 메모리 부족하면 안드로이드가 강제로 종료 시킵니다. 나중에 사용자가 그것들을 다시 실행할 수 있고, 그것들은 원래의 모습으로 다시 복원됩니다...

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

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

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

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

안드로이드 - 백(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..

안드로이드 - FragmentManager를 이용한 프래그먼트 추가, 삭제, 교체, 숨김

프래그먼트를 실행중에 편집하기 위해서는 프래그먼트 관리자를 사용해야한다. FragmentManager Activity.getFragmentManager() FragmentManager Fragment.getFragmentManager() 그리고 프래그먼트를 관리하려면 먼저 대상 프래그먼트를 검색해야 한다. Fragment findFragmentById(int id) Fragment findFragmentByTag(String tag) 프래그먼트는 다음 3가지 방식으로 지칭한다. 1. id: 프래그먼트를 배치할 때 지정한 android:id 속성의 정수값을 이용한다. 2. 부모의 id : 실행 중에 생성한 프래그먼트는 고유한 id가 없다. 그래서 부모의 id를 통해 프래그먼트를 찾는다. (단 첫 번째 차일..

안드로이드 - 외부 메모리에 앱 설치하기

안드로이드 메니페스트 파일에 설치 가능한 위치를 지정하는 installLocation 속성을 추가했다. 속성 설명 internalOnly 내부 메모리에만 설치 할 수 있고 외부 메모리에는 설치 할 수 없다. preferExternal 가급적이면 외부 메모리에 설치한다. 외부 메모리가 부족하거나 없으면 내부 메모리에 설치한다. auto 내부 메모리가 부족하면 외부 메모리에 설치한다. 다음 예제를 통해 preferExternal 옵션을 줘서 실제로 외부 메모리에 설치가 되었는지 확인해보자 MainActivity.java package com.example.ch18_external; import android.app.Activity; import android.os.Bundle; import android.v..

반응형