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 |
댓글