Cute Apple
본문 바로가기
개발/Android

[Android] Swiperefreshlayout 사용기

by 미댕댕 2022. 8. 5.

Android Jetpack 라이브러리 중에서 Swiperefreshlayout 의 사용방법을 알아보자

해당 기능을 활용하여 WebView 를 refresh 를 해보겠다!

 

결과물부터 확인!

 

사용기

 

0. Gradle 등록

  implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"

 

1. xml 에 추가

swipe 시 refresh 할 영역을 layout 으로 감싸줌

    <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
        android:id="@+id/refreshLayout"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@id/toolbar">

        <WebView
            android:id="@+id/webView"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

    </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>

 

2. 로딩 완료시

위의 태그만 추가한다면 refresh 되었을때도 로딩 아이콘이 사라지지 않음

=> isRefreshing 을 false 로 만들어 주어야 함

 

    private val refreshLayout: SwipeRefreshLayout by lazy {
    findViewById(R.id.refreshLayout)
    }
    private val webView: WebView by lazy {
    findViewById(R.id.webView)
    }    
    
    //OnCreate() 에 작성
    refreshLayout.setOnRefreshListener {
      webView.reload()
    }
    
   //webView 는 WebViewClient 에 의해 제어할 수 있다
   inner class WebViewClient : android.webkit.WebViewClient() {

    override fun onPageFinished(view: WebView?, url: String?) {
      super.onPageFinished(view, url)
      
      refreshLayout.isRefreshing = false
      goBackButton.isEnabled = webView.canGoBack()
      goForwardButton.isEnabled = webView.canGoForward()
    }
  }

 

 

해당 프로젝트에 대한 자세한 코드는 👇

https://github.com/sju01334/WebBrowser

 

GitHub - sju01334/WebBrowser: WebView 와 ContentLoadingProgressBar 그리고 Swiperefreshlayout 을 이용한 웹 브라우저

WebView 와 ContentLoadingProgressBar 그리고 Swiperefreshlayout 을 이용한 웹 브라우저 구현 - GitHub - sju01334/WebBrowser: WebView 와 ContentLoadingProgressBar 그리고 Swiperefreshlayout 을 이용한 웹 브라우저 구현

github.com

 

 

참고

https://developer.android.com/jetpack/androidx/releases/swiperefreshlayout?hl=ko

 

Swiperefreshlayout  |  Android 개발자  |  Android Developers

Swiperefreshlayout 스와이프하여 새로고침 UI 패턴을 구현합니다. 최근 업데이트 공개 버전 출시 후보 베타 버전 알파 버전 2020년 7월 22일 1.1.0 - - 1.2.0-alpha01 종속 항목 선언 SwipeRefreshLayout의 종속 항목

developer.android.com

 

반응형

'개발 > Android' 카테고리의 다른 글

[Android] DP 와 SP  (0) 2022.08.07
[Android] MVC & MVVM & MVP  (0) 2022.08.06
[Android ] AAC란?  (0) 2022.08.04
[Android] Databinding이란?  (0) 2022.08.02
[Android] Process 생명주기  (0) 2022.08.01

댓글