반응형

이번 포스팅에서는 SwipeRefreshLayout을 활용한 예제를 알아보도록 하겠습니다. 


SwipeRefreshLayout은 Support Library v4에서부터 지원이 가능한 레이아웃입니다. 

요즘 Gmail이나 NHN등 여타 어플리케이션에서 많이 사용하고 있으므로 한번 구현해 보도록 하겠습니다.


1. 먼저 File...> Project Structure...> 에서 아래와 같이 Library Dependency를 추가합니다.



2. build.gradle 파일을 열어 Dependency에 아래 그림과 같이 추가해 줍니다.



3. 이제 설정 부분은 됐습니다. 이제 뷰 영역인 Resouce XML 파일을 구현하겠습니다. 

XML 파일에 SwipeRefreshLayout이 들어갈 부분에 아래 그림과 같이 구현해 줍니다.





4. 이제 Activity 영역을 구현하겠습니다. 

먼저 클래스 선언부에 아래와 같이 SwipeRefreshLayout.OnRefreshListner Interface를 implement 해 줍니다.

Implement 하게 되면 onRefresh()라는 메소드를 오버라이딩 해야 합니다.




5. OnCreate 든 OnResume 이든 Layout 초기화 하는 부분에 아래 그림과 같이 구현 해 줍니다.



6. 이제 마지막으로 SwipeRefreshLayout.OnRefreshListner Interface를 implement 했으므로

onRefresh()라는 메소드를 오버라이딩 해줍니다. 


여기서 중요한 건 아래 네모난 박스에 실제로 비지니스 로직을 구현해 줍니다. 



그리고 비지니스 로직을 다 구현했으면 loadingbar가 사라지게 하기 위해 

mSwipeRefreshLayout.setRefreshing(false) 라고 구현해 줍니다




실제로 구현하면 아래와 같이 Swipe 했을 시에 loadingbar가 나오면서 데이터를 로딩하고 데이터 로딩이 완료되면 loadingbar는 사라지게 됩니다.




반응형
반응형

이번 포스팅에서는 Android Studio에서 Library Project를 만들어서 Jar 파일로 추출하는 방법에 대해 알아보도록 하겠습니다. 

Android Library Project  Jar 파일로 추출

 

프로젝트를 하다 보면 프로젝트마다 공통적으로 사용하는 기능들이 있을 것입니다. 

이 기능들을 Jar 파일로 만들어서 본인이 사용하고 싶을 때 사용하면 참 편리하겠죠? 그 방법에 대해 알아보도록 하겠습니다.

 

1. 먼저 [New Project] 를 통해 새 Project를 만들고 build.grade 파일로 갑니다. 

   아래 그림처럼 2번 라인에 'apply plugin: 'com.android.library'라고 추가합니다. 

   즉, gradle에게 이 Project는 application이 아니라 library로 만들기 위해 구현하였다는 걸을 알려주는 겁니다. 

   library이므로 9번 라인에 applicationId를 삭제하시거나 주석처리해주시면 됩니다.

 

 

2. build.grade 파일에 이이서 아래 그림과 같이 입력을 합니다. 

   오래된 AndroidPlugin.jar 파일을 삭제하고 사용자가 지정한 폴더에 CustomLibrary.jar 파일을 생성하게 합니다.

 

 

3. build.grade 파일은 모두 작성하였습니다.

   이제 Android Studio 오른쪽에 있는 Gradle 영역을 마우스로 클릭합니다.   

 

Gradle 클릭

 

 

4. Gradle Projects가 실행을 하면 처음엔 아무것도 나타나지 않기 때문에 아래 그림처럼 새로고침 영역을 클릭합니다.

 

 

5. Android Studio가 새로고침을 완료하면 아래 그림처럼 Gradle Project들이 보일 것입니다.

   네모난 빨간 박스 순서대로 위에서 아래방향으로 클릭해 줍니다.

 

 

- 'other'에서 조금만 내리면 ' exportJar' 영역이 보이실 겁니다. 이 영역을 클릭을 합니다.

 

 

6. 'exportJar'를 클릭하게 되면 Gradle Console 창이 보이면서 Build를 진행합니다.

   Build가 이상 없이 완료되면 아래 그림처럼 'BUILD SUCCESSFUL'이라는 문구가 나타납니다.

  그럼 이제 Library Jar 파일이 완성됐습니다.

 

 

7. 이제 Jar 파일이 완성이 되었으니 실제 원하는 위치에 있는지 확인해 보겠습니다.

    짜잔~~ 제가 원하는 위치에 제가 정한 파일명으로 파일이 생성되었습니다.

    이 파일을 실제 Project의 'libs'폴더에 복사해서 붙여 넣기 해주시면 됩니다.

 

 

오늘 포스팅은 Android Library Project 파일을 만들고 Jar 파일로 생성하는 과정을 알아보았습니다.

실제로 어려운 과정이 아니니 한 번씩 해 보시길 바랍니다.

감사합니다.

반응형
반응형

이번 포스팅은 Fragment에 대하여 알아보도록 하겠습니다.


Fragment에 대하여...첫번째 이야기


소화면의 스마트 폰용으로 작성한 앱을 대화면의 태블릿에서 실행하면 공간이 너무 많이 낭비되어 썰렁해 보이며 넓은 화면의 장점을 사용할 수가 없습니다. 

그래서 태블릿같은 대화면에서는 화면을 분할하여 사용자에게 보여주면 대화면의 이점을 살릴 수가 있습니다.

그래서 화면을 분할하는데 이용되는 것이 바로 Fragment 입니다. 


1. 먼저 Fragment의 특징을 알아보도록 하겠습니다.

 - Fragment는 Activity에 배치되어 화면의 한 부분을 정의합니다.

 - Android 3.0 부터 지원됩니다.

 - 하나의 Activity는 여러개의 Fragment를 가질 수 있습니다.

 - 독립적인 모듈이고 Life Cycle을 가지지만, Activity의 Life Cycle 변화에따라 Fragment의 Life Cycle이 변경됩니다.

 - layout xml에서 view와 함께 배치할 수 있습니다.

 - 서로 다른 Activity에서 동일한 Fragment class를 이용할 수 있습니다.

 - 여러 Activity에서 재사용할 수 있습니다.



2. Fragment의 Life Cycle

 - Fragment는 Activity 내에 있는 FragmentManager에 의해 관리됩니다.

 - Fragment의 Life Cycle은 Activity의 Life Cycle이 변경됨에 따라 같이 변경됩니다.



- Fragment의 Life Cycle 과 FragmentManager의 상태와 비교하여 알아보도록 하겠습니다.


- Fragment의 Life Cycle은 Activity의 Life Cycle과 유사하지만 몇 가지 추가된 콜백이 더 있습니다.

  많은 콜백 중에 onCreate, onCreateView, onPause 콜백은 거의 필수적으로 구현해야 하며 나머지는 필요할 때만 구현하면 됩니다.

- Activity가 생성될 대 Fragment의 다음 콜백이 순서대로 호출되며 여기서 프래그먼트를 초기화 합니다.


- onAttach ~ Activity에 Fragment가 처음 부착될 때 호출됩니다.

- onCreate ~ Fragment가 생성될 때 시스템에서 됩니다. 이 단계에서는 Host Activity(Fragment를 호출하는 Activity)도 아직 초기화중인 상태이며 따라서 Activity의 컨트롤을 안전하게 참조할 수 없습니다. 

Activity가 완전히 초기화된 시점이 필요하면 onActivityCreated 콜백을 사용해야 합니다.

- onCreateView시스템은 Fragment가 자신의 사용자 인터페이스를 처음으로 그릴 시간이 되면 이것을 호출합니다. Fragment에 맞는 UI를 그리려면 메서드에서 View를 반환해야 합니다. 이 단계에서 Fragment는 자신의 Layout을 생성한 후 Root View를 리턴합니다. 이 메서드는 Fragment 레이아웃의 루트입니다. Fragment가 UI를 제공하지 않는 경우 null을 반환하면 됩니다.

- onPause시스템이 이 메서드를 호출하는 것은 사용자가 Fragment를 떠난다는 것을 나타내는 첫 번째 신호입니다(다만 항상 Fragment가 소멸 중이라는 것을 의미하지는 않습니다). 일반적으로 여기에서 현재 사용자 세션을 넘어서 지속되어야 하는 변경 사항을 저장합니다(사용자가 돌아오지 않을 수 있기 때문입니다).

반응형

+ Recent posts