준코딩

Pull to Refresh 당겨서 새로고침 본문

프로그래밍/Android(JAVA)

Pull to Refresh 당겨서 새로고침

Ljunhyeob - App Dev 2023. 4. 26. 18:46

앱을 사용하다보면 ScrollView 나 WebView 에서 당겨서 새로고침 하는 기능이 필요할 떄가 있습니다.

 

 

저는 androidX 버전 업데이트를 진행 한 상태입니다. 

 

 

1. 우선 build.gradle (Module : app) 에서  implementation 을 진행해 줍니다.

 

2.우측 상단에 Sync Now 해주시고.

 

 

3. 저는 WebView 를 당겨서 새로고침 해보겠습니다. (scrollview도 똑같이 하시면 됩니다.)

 

가장 하단에 작성한 webview 에서 새로고침 할 예정입니다.

 

 

4. <WebView> 부분을 <androidx.swiperefreshlayout.widget.SwipeRefreshLayout 으로 감싸줍니다. 

여기까지 하셨다면 xml 파일에서 해야할 건 끝낫습니다. 

 

 

 

5. 이제 Class 파일로 오셔서 

private SwipeRefreshLayout swipeRefreshLayout;

선언을 해줍니다. 

 

6. 그리고 onCreate() 안에

swipeRefreshLayout = findViewById(R.id.contentSwipeLayout);

레이아웃이랑 연결 시켜주고. 

 

7.

swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
    @Override
    public void onRefresh() {
        // 새로고침 이벤트 처리
        myBrowser.reload();
        swipeRefreshLayout.setRefreshing(false);
    }
});

코드를 작성해줍니다. 여기서 myBrowser 는 제가 작성한 webView 입니다. 각각 명시하신 webview 나 scrollview로 변경해주세요. 

 

8. 그리고 화면이 맨 위에 도달했을때 새로고침 해줘야하기때문에 Y좌표가 0일때만 실행되게 하겠습니다.

swipeRefreshLayout.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener(){
    @Override
    public void onScrollChanged(){
        if(myBrowser.getScrollY() == 0 ){
            swipeRefreshLayout.setEnabled(true);
        } else {
            swipeRefreshLayout.setEnabled(false);
        }
    }
});

 

(7번, 8번도 onCreate() 안에 작성해야합니다! ) 

 

위와 같이 작성이 끝나고 실행해보면 당겨서 새로고침이 되는걸 확인 할 수 있습니다~

Comments