티스토리 뷰

 Android Support Library 가 업데이트 되면서 v7 Support Library에 하위 호환성을 가진 ActionBarActivity 가 추가되었습니다. 이 라이브러리가 나오기 전에는 ActionBarShelock을 이용해서 3.0 미만 버전에서 ActionBar를 사용할 수 있었지만 v7 라이브러리를 사용하면 구글에서 제공해주는 라이브러리를 통해서 ActionBarShelock를 사용할 수 있습니다. v7 라이브러리 중 v7 appcompat을 사용하면 ActionBarActivity를 사용할 수 있습니다. 이것에 대해서 아래 Development 문서에 자세하게 나와 있습니다.

 v7 라이브러리 불러오는 법 : http://developer.android.com/tools/support-library/setup.html


 개발 문서에는 이클립스에서의 적용법과 Android Studio에서의 적용법 2가지가 나와있습니다. Android Studio에서의 적용법은 아주 간단하게 추가가 가능하지만 이클립스는 2개의 프로젝트를 필요로 합니다. 1 번째 프로젝트는 v7 appcompat 소스코드를 불러와서 라이브러리 형태로 만들고, 사용해야할 프로젝트를 생성하여 라이브러리를 include 하는 방식으로 사용하게 됩니다.

 저는 이클립스에서 라이브러리르 호출하는 방식으로 간단하게 액션바를 사용하는 예제를 작성합니다.


ActionBar Compat 예제 실행 및 Lib

 ActionBar Compat 예제를 불러오기 전에 안드로이드 SDK를 최신으로 업데이트하시면 됩니다. SDK Manager에서 Extras -> Android Support Library와 안드로이드 4.3 또는 4.2.2의 Sample Project를 다운로드 받으시면 됩니다.

 ActionBar Compat 예제를 먼저 불러와야 합니다. 불러오는 방법은 2가지가 있습니다. v7 라이브러리 사용법을 설명하는 개발 문서에서의 방법이 하나 있고, Sample Project를 불러와서 처리하는 방법 2가지가 있습니다. 이 글에서는 Sample Project를 불러와서 처리하는 방법을 설명하겠습니다.

 새로운 프로젝트 File -> New -> Other... 을 선택하시고, Android의 Android Sample Project를 선택합니다.


 최신으로 업데이트한 Android 4.3의 Sample Project를 선택하겠습니다.


 아래와 같이 Select Sample의 lagacy > ActionBarCompat 프로젝트를 선택합니다.


 생성된 프로젝트는 아래와 같습니다. 이 프로젝트를 불러와서 라이브러리 형태로도 사용이 가능하며, 해당 프로젝트에는 예제 코드가 들어있어 바로 실행도 가능합니다. ActionBarCompat 예제는 아래와 같이 파일이 추가되어있습니다.


 2.3.3에서 실행하면 아래와 같은 결과를 얻을 수 있고, 4.3에서 실행해도 동일한 UI의 ActionBar를 볼 수 있습니다.


라이브러리로 변경

 해당 프로젝트의 설정으로 들어갑니다. 오른쪽 마우스를 클릭하고, Properties를 선택하고, 메뉴에서 Android를 접속합니다.

 아래의 Is Library 를 선택하신다음 OK를 누르시면 라이브러리로 사용이 가능합니다.


새로운 프로젝트에 적용

 새로운 프로젝트에서 ActionBarActivity를 사용할 수 있습니다. 위에서 라이브러리로 사용하도록 설정하였으니 여기에서 그 라이브러리를 불러와서 사용하면 됩니다. 새로 만든 프로젝트에서 오른쪽 마우스의 Properties를 선택하고, Android 탭으로 이동합니다. 여기에서 Add... 버튼을 클릭합니다.


 위에서 적용한 라이브러리의 체크 하지 않으면 보이지 않으니 다시 라이브러리를 추가하시면 됩니다. ActionBarCompat를 선택하여 추가합니다.


 아래와 같이 추가되었습니다. 이제 Activity를 상속받는 Class를 ActionBarActivity로만 변경하시면 됩니다. 100% 코드 그대로 사용이 가능하기에 상속받는 메소드 명만 변경하면 됩니다.


ActionBarActivity 코드

// ActionBarActivity를 추가하면 아래와 같이 실행됩니다.
import com.example.android.actionbarcompat.ActionBarActivity;

/* 
 * Activity를 ActionBarActivity로만 변경하시면 됩니다.
 * 기존 코드 그대로 v7 라이브러리만 추가되면 모두 동일하게 사용할 수 있습니다.
 * /
public class MainActivity extends ActionBarActivity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}

}


ActionBarActivity를 적용한 예제

 2.3.3에서 ActionBarActivity를 적용한 예제입니다. 아래와 같이 실행되며, 4.3에서 실행해도 동일하게 볼 수 있습니다.


마무리

 ActionBarShelock를 적용하는 예제를 작성하려고 했으나 밀리고 밀려서.. 결국 v7 라이브러리의 ActionBar 적용법을 작성하게 되었습니다. ActionBarShelock를 적용하면 조금 많은 메소드가 변경이되어야 하지만 v7 라이브러리는 안드로이드의 기존 코드 그대로 쉽게 적용이 가능하다는 장점이 있습니다. C:\android-sdk-windows\extras\android\support\v7\appcompat\libs 의 경로에 보시면 android-support-v7-appcompat.jar 있기는 하지만 제가 실수를 한건지 동작하지 않아서 이 방법으로 글을 작성해보았습니다.



댓글