Android

Android Progressbar 사용하기

김한토 2024. 8. 26. 17:28
반응형

webView를 사용 중인데 앱이 시작되고 url을 로딩하는데까지 상당한 시간이 소요된다.

 

성질 급한 한국인은 이런거 절대 못참음..

하지만 프로그래스바와 함께라면...?

일단 화면에 뭐라도 돌아가니깐 기다리게 된다..

 

바로 코드로 보자

 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".view.MainActivity">

    <ProgressBar
        android:id="@+id/progressBar"
        style="?progressBarStyle"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:elevation="8dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />


    <WebView
        android:id="@+id/webView"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
    />


</androidx.constraintlayout.widget.ConstraintLayout>

여기서 중요한건 

android:elevation="8dp"

 

이다. 분명 프로그래스 바를 설정했는데 자꾸 안보여서 보니깐 웹뷰 뒤에 프로그래스 바가 있었다.. ㅡ,.ㅡ;;

 

elevation 값을 설정하니 웹뷰 위로 예쁘게 나오는 모습

style 값은 안드로이드에서 지원해주는 것 같다. 저 스타일은 무난한 동글뱅이 스타일이다. 

 

class MainActivity : AppCompatActivity() {
    private lateinit var binding: ActivityMainBinding
    private lateinit var webView: WebView
    private lateinit var progressBar: ProgressBar
    
    override fun onCreate(saveInstanceState : Bundle?) {
    
   		binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)
        webView = binding.webView
        progressBar = binding.progressBar

        initWebView()
        webView.loadUrl(Constants.LOAD_URL)
    
    	}
    	
        private fun initWebView() {
        ebView.webViewClient = object : WebViewClient() {
            override fun onPageStarted(
                view: WebView?,
                url: String?,
                favicon: Bitmap?
            ) {
                progressBar.visibility = View.VISIBLE // 로딩 시작 시 ProgressBar 보이기
            }

            override fun onPageFinished(view: WebView?, url: String?) {
                super.onPageFinished(view, url)
                progressBar.visibility = View.GONE // 로딩 완료 시 ProgressBar 숨기기
            }
    	}
    
    }

 

이렇게 코드를 짜면 초간단 progressbar가 완성된다.

 

참고로 무야호는 그냥 splashView니 무시해도 된다.

 

반응형