2014. 1. 20. 10:41

안녕하세요.

앱을 개발하다가 페이스북같은 슬라이드 메뉴를 구현하고 싶었는데,

참고할 만한 오픈소스가 jfeintsein10이라는 소스가 굉장히 유명하더군요.


그래서 참고하고 싶었는데, 예제만 돌리는데 정말 힘들었습니다.

혹여나 저같은 분들이 있을까봐 포스팅합니다.


먼저 이 예제파일을 실행하기 위해서는 두가지를 다운 받아야합니다.


1. jfeinstein10 오픈소스

우리가 사용하려고 하는 오픈소스죠.

https://github.com/jfeinstein10/SlidingMenu


2. ActionBarSherlock

저도 자세한건 모르겠으나 위의 오픈소스가 이걸 사용하더군요.

http://actionbarsherlock.com/




다운 받은 zip들은 압축을 풀어줍니다.

이제 이클립스를 키고,

[NEW] - [other] - [Android] - [Android Project from Existing Code]를 선택

압축 풀린 Slidingmenu폴더를 선택하면

이런 식으로 나올텐데요.

두개다 추가하면 됩니다. 이때 밑에 Copyprojects into workspace는 꼭 체크해주세요.

이걸 체크해야 복사해서 추가하기때문에 원본은 그대로 있습니다.


같은 방법으로 ActionBar도 추가해보면

이런 식으로 뜹니다.

이때 다른 프로젝트들은 다 필요 없으니까 첫번째 프로젝트(actionbarsherlock)만 체크하고,

나머지는 전부 풀어줍니다.

마찬가지로 Copy projects into workspace는 체크해줍니다.


자 여기까지 하셨다면 아마 이런 결과 일겁니다.


자 이제 할 일은 서로 엮어주고 고쳐주면 됩니다.

구조는 이런식입니다.

actionbarsherlock은 라이브러리화 되서 library가 참고하고,

library 또한 라이브러리화 되서 ExamplelistActivity가 참고하는 구조입니다.


 actionbarsherlock프로젝트library프로젝트properties로 들어가 Islibrary를 체크해줍니다.

(아마 되있을겁니다.)



다음, library프로젝트 Properties에서 Add버튼을 누른 후 actionbarsherlock을 추가시킵니다.


그러면 Console창에

Found 2 versions of android-support-v4.jar in the dependency list,~~~

같은 어마무시한 경고가 뜨는데 이것은 android-support-v4.jar라는 파일이 둘 다 있어서 중복된다는 소리입니다.

library프로젝트의 libs폴더에 있는 android-support-v4.jar파일을 삭제 합니다.


다음 library프로젝트의 SlidingFragmentActivity를 찾아서, 

public class SlidingFragmentActivity extends FragmentActivity implements SlidingActivityBase {

이부분을

public class SlidingFragmentActivity extends SherlockFragmentActivity implements SlidingActivityBase {

으로 바꿉니다.


그럼 아마 모든 에러는 사라질 것이고

ExampleListActivity프로젝트를 실행하면,

이 화면을 보실 수 있을 겁니다.



 ps. Unable to resolve target 'android-16' 류의 경고가 뜬다면 Properties에서 Buildtarget을 GoogleAPIs로 바꿔보세요.


다음에는 이 코드를 이용해서 실질적으로 사용하는 예제 소스를 준비하겠습니다.



Posted by 나돌라