본문 바로가기

개발/Android 개발 주저리

[Android] SwipeRefreshLayout 를 이용한 pull to refresh 구현하기 ( Gmail 과 같은 새로고침 )

일단 시작하기 전에 SwipeRefreshLayout이 무엇일까요?

아래와 같이 리스트 최상단에서 하단으로 끌어내리면 새로고침되는, 일명 pull to refresh 입니다

실제 적용된 앱을 한번 보시죠


Gmail (지메일)




너 와 나 디데이( 커플디데이 ) 커뮤니티


보이시나요? 위처럼 리스트뷰 최상단에서 스크롤을 잡아 당기면 뷰가 초기화 되는 기능입니다.

예전 페이스북의 튕기는 것과 비슷한데 구글에서 만들어서 v4 라이브러리로 지원합니다.



SwipeRefreshLayout 구조

extends ViewGroup

java.lang.Object

             ↳ android.view.View

                      ↳ android.view.ViewGroup

                                                   ↳ android.support.v4.widget.SwipeRefreshLayout



보시는 것처럼 기본적으로 뷰입니다. 그래서 layout 에서 View 처럼 사용이 가능합니다.

예를 들어 뷰전체를( 너 와 나 디데이 처럼) 움직여서 새로고침할경우 예시입니다



위처럼 android.support.v4.widget.SwipeRefreshLayout 로 레이아웃을 감싸주면 됩니다.



이제 코드부분을 보겠습니다


해당 레이아웃을 사용할 액티비티에서 SwipeRefreshLayout.OnRefreshListener 를 implements  해서 사용하면됩니다.



그럼 onRefresh 가 Override 가되며 스크롤 액션이 발생하면 onRefresh 가 호출됩니다.



마지막으로 SwipeRefreshLayout 객체를 하나 만드셔서 초기화를 해주시면 됩니다.

현재는 디스크립트 되었지만 setColorScheme 로 로딩시 색상을 지정할 수 있습니다.