안드로이드 114

안드로이드 - ShareActionProvider를 이용한 앱간 데이터 공유 처리하기

앱이 작성한 문서, 이미지, 동영상 등의 데이터를 SNS나 내부 프로그램과 공유할 때는 ShareActionProvider 클래스를 사용한다. void setShareHistoryFileName(String shareHistoryFile) 위 메소드는 공유 목록을 저장할 파일을 지정한다. 보통 DEFAULT_SHARE_HISTORY_FILE_NAME를 사용하면 된다. void setShareIntent(Intent shareIntent) 공유할 때 사용할 인텐트를 지정한다. 공유 목록에서 항목을 선택하면 해당 서비스로 이 인텐트를 전달한다. 이번 예제는 텍스트 값을 다른 앱에 공유를 해본다. 위와 같이 ShareAction.java와 share_action.xml만 구성한다 res/menu/share_a..

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

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

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

프래그먼트도 메소드와 비슷하게 액티비티의 요구에 따라 조금씩 다르게 동작하기 위해 인수를 받아 들인다. 이때 프래그먼트의 인수 저장을 위해 아규먼트를 사용하며 다음 두 메소드로 아큐먼트를 설정하거나 얻는다. 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를 통해 프래그먼트를 찾는다. (단 첫 번째 차일..

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

프래그먼트에 관한 내용은 안드로이드-프래그먼트-사용-간단-예제 를 참고하자. 이번에는 스마트폰의 상태 변경이나 화면이 가로로 될 때 자신의 데이터 저장을 해보자 이번에도 다음과 같이 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..

안드로이드 - 한 화면에 여러 개의 프래그먼트 만들기

프래그먼트에 관한 내용은 안드로이드-프래그먼트-사용-간단-예제 를 참고하자. 이번에는 한 화면에 2개의 프래그먼트를 만들어 보는 예제이다.. 프로젝트 익스플로러에서 다음과 같이 3개의 파일을 생성해야 함을 잊지 말자. counterfragment..xml 파일은 실제 프래그먼트를 구성하는 UI파일이다. activity_two_fragment1.xml 여기서 실제 프래그먼트가 2개라는 것을 명시해주는 UI이다. TwoFragment1.java package com.example.ch20_twofragment; import android.app.Activity; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutI..

안드로이드 - 프래그먼트 사용 간단 예제

프래그먼트 간략 설명은 다음 링크를 참조 하자. 커니의 안드로이드 프래그먼트 설명 프래그먼트 생명주기 설명 간단한 예제에 앞서 프로젝트 익스플로러를 보자 아래와 같이 자바파일과 xml파일을 2개로 구성함을 잊지 말자. counterfragment.xml 파일 fragment_test.xml FragmentTest.java package com.example.ch20_fragment_ex1; import android.app.Activity; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; i..

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

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

안드로이드 - 윈도우 관리자 활용하기

윈도우 관리자는 안드로이드 프레임워크를 구성하는 주요 모듈로 윈도우를 관리한다. 다음의 호출문으로 구할 수 있다. getSystemService(Context.WINDOW_SERVICE) 윈도우 관리는 대부분 시스템 내부에서 알아서 수행되므로 공개된 기능은 많지 않다. 다음 메소드는 윈도우가 실행되는 화면에 대한 정보를 구한다. Display getDefaultDisplay() Display 클래스는 장비의 화면 폭이나 높이, 방향, 갱신 주기 등의 정보를 제공한다. 다음 메소드는 ViewManager 인터페이스로부터 상속받은 것이며 윈도우에 개별 뷰를 추가하거나 삭제한다. void addView(View view, ViewGroup.LayoutParams params) void removeView(Vi..

안드로이드 - LayoutInflater를 활용한 레이아웃 겹치기

윈도우는 빈 채로 생성되며 빈 윈도우 안에 레이아웃을 채워 넣어 UI를 구성하는데 이때는 다음 메소드를 호출 한다. void setContentView(int layoutResID) void setContentView(View view, [ViewGroup.LayoutParams params]) void addContentView(View view, ViewGroup.LayoutParams params) 다음 예제는 2개의 xml파일을 겹쳐서 보여주는 예제이다. overlay1.xml overlay2.xml Overlay.java package com.example.overlay; import android.app.Activity; import android.content.Context; import a..