ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • WebView 로딩시 프로그래스바 표시
    안드로이드/학습&강좌 2011. 8. 31. 09:44

     WebView 로딩시 전체 로딩이 끝나기 전까지 프로그래스로 진행 상황또는 진행중인 상태를 알려 줄 수 있다.

    마냥 흰 화면만 나오고 대기하기엔 사용자가 상태를 알 수 없으므로 표시해주면 좋다.

    WebViiew 내의 클라이언트를 Setting 하여 클라이언트내의 메소드를 오버라이딩 해서 구현한다.

    클라이언트의 종류는 두가지가 있다.



    두 클래스간 오버라이드 할 수 있는 함수는 많다. 각각의 의미는

    http://developer.android.com/reference/android/webkit/WebChromeClient.html

    이곳을 참고 하기 바란다.

    일단 ChromClient를 이용해서 구현해보도로 하겠다.

    ChromClient 내의 onProgressChanged 함수를 살펴보자.

    public void onProgressChanged (WebView view, int newProgress)

    Since: API Level 1

    Tell the host application the current progress of loading a page.

    Parameters
    view The WebView that initiated the callback.
    newProgress Current page loading progress, represented by an integer between 0 and 100.



    이 함수를 이용하게 되면 100이 되었을 경우 로딩이 완료 되었다는 걸 확인 할 수 있다.

    고로 0 ~ 100사이의 값을 이용해서

    진행 상황을 Progress Bar 형태로 표현을 해도 된다.

    ========>

    설명은 여기까지 하고 구현한 코드를 살펴 보자면


    package pack.epong.com;
    import java.net.URLEncoder;
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.webkit.WebChromeClient;
    import android.webkit.WebView;
    import android.widget.ImageButton;
    import android.widget.ProgressBar;
    import android.widget.TextView;
    public class SampleWebActivity extends Activity implements OnClickListener{
        /** Called when the activity is first created. */
    public static final String BLOG_URL = "http://m.naver.com/";
     
     private WebView m_webview;
     private ProgressBar m_progress;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
           
    //        String word = getIntent().getStringExtra("Word");
      
      TextView textview = (TextView) findViewById(R.id.Search_Txt_Word);
      textview.setText("EpoNg's Blog");
      
      m_progress = (ProgressBar) findViewById(R.id.webview_progress);
      
      String url = BLOG_URL;
      
      m_webview = (WebView) findViewById(R.id.webview);
      m_webview.getSettings().setJavaScriptEnabled(true);
      m_webview.setWebChromeClient(new WebChromeClient(){
       public void onProgressChanged(WebView view, int newProgress) {
          
          setVisbilityProgress(true);
          if(newProgress >= 100){
           setVisbilityProgress(false);
          }
             }
      });
      
      m_webview.loadUrl(url);
      
      ((ImageButton) findViewById(R.id.Search_Btn_Prev)).setOnClickListener(this);
      
     }
     
     public void setVisbilityProgress(boolean visible)
     {
      if(visible)
       m_progress.setVisibility(View.VISIBLE);
      else
       m_progress.setVisibility(View.GONE);
     }
     @Override
     public void onClick(View v) {
      // TODO Auto-generated method stub
      switch(v.getId()){
      case R.id.Search_Btn_Prev:
       finish();
       break;
      }
     }
    }


    이렇게 된다. 소스는 간단하니 다른 첨부 설명은 하지 않도록 하겠다.                                                                       



    실행 화면


    댓글

COPYRIGHT 2010 EpoNg. ALL RIGHTS RESERVED.