2014-12-18 2 views
0

"WebView를 사용하여 메인"응용 프로그램 "을 표시하고 있으므로 내 첫 번째 안드로이드"응용 프로그램 "을 코딩하고 있습니다.특정 URL이로드 될 때 어떤 작업을 수행 할 수 있습니까?

배경을 HTML 코드에서로드하는 대신 이미지를 렌더링하는 것이 일반적으로 더 빠릅니다. 저는 앱의 배경 역할을하고 처음부터로드되는 ImageView를 가지고 있으며 WebView의 '배후'에 있습니다 (WebView 배경이 투명 함).

그러나 일단 사용자가 텍스트 필드에 enter 키를 누르고 WebView 내의 다른 웹 페이지로 보내지면 첫 번째 배경 ImageView를 제거하고 새 이미지를로드하여 이전 이미지가 표시되지 않도록하고 싶습니다. 천천히. 그래서 나는 로드 이벤트의 일종을 감지하고 그걸로 뭔가를 할 줄 알았는데. 그러나, 나는 문서를보고 있었고, 나는 아무것도 발견하지 못했다. 나는 어디서부터 시작해야할지 모른다. 이 일을 할 수있는 방법이 있습니까? 감사합니다.

내 사용 코드라면 여기에 나와 있습니다.하지만 실제로는 관련이 없다고 생각합니다. 자파르에

내가하고 결국 무엇
protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     getSupportActionBar().hide(); 

     setContentView(R.layout.activity_main); 
     mWebView = (WebView) findViewById(R.id.activity_main_webview); 
     mWebView.setBackgroundColor(0x00000000); 
     mWebView.setLayerType(WebView.LAYER_TYPE_SOFTWARE, null); 


     ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
     NetworkInfo mMobile = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 
     if((mWifi != null && mWifi.isConnected()) || (mMobile != null && mMobile.isConnected())) { 

      WebSettings webSettings = mWebView.getSettings(); 
      webSettings.setJavaScriptEnabled(true); 
      webSettings.setCacheMode(webSettings.LOAD_NO_CACHE); 
      mWebView.setWebViewClient(new WebViewClient() { 
       @Override 
       public void onPageFinished(WebView view, String url) { 
        findViewById(R.id.splash).setVisibility(View.GONE); 
        findViewById(R.id.activity_main_webview).setVisibility(View.VISIBLE); 
       } 
       public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
        mWebView.loadUrl("file:///android_asset/error.html"); 
       } 
      }); 
      mWebView.loadUrl(got_url); 
     } 
     else 
     { 
      setContentView(R.layout.activity_main); 
      mWebView = (WebView) findViewById(R.id.activity_main_webview); 
      mWebView.setWebViewClient(new WebViewClient() { 
       @Override 
       public void onPageFinished(WebView view, String url) { 
        findViewById(R.id.splash).setVisibility(View.GONE); 
        findViewById(R.id.activity_main_webview).setVisibility(View.VISIBLE); 
       } 
      }); 
      mWebView.loadUrl("file:///android_asset/error-nointernet.html"); 
     } 

    } 

, 감사 :

 public void onPageStarted(WebView view, String url) { 
      if(url.equals(certainUrl)) //url returns last requested URL. 
      { 
       findViewById(R.id.background0).setVisibility(View.GONE); 
       findViewById(R.id.background1).setVisibility(View.VISIBLE); 
      } 
     } 

답변

1

내가 가지고 당신은 웹보기가 로딩을 시작하면 배경 이미지를로드 할 것입니다. 이 상황 인 경우, 당신은

onPageStarted 

를 사용하고 여기에 이미지를 설정할 수 있습니다. 좀 더 많은 해결책을 얻을 수 있다면 link을 확인하십시오. 요구 사항이 다른 경우 답장을 보내주십시오.

원하는대로 했어도이 방법을 사용하여 다른 상황에서 도움이된다면이 메서드를 추가하고 싶습니다.

webView.setWebViewClient(new WebViewClient() { 
@Override 
public boolean shouldOverrideUrlLoading(WebView view, String url) { 
    if (url.startsWith("abcd://")) { 
     // your code 
     return true; 
    } 
    return false; 
} 
}); 
+0

안녕하십니까. 회신 해 주셔서 감사합니다. 나는 그것을 아주 가난하게 설명했다고 생각한다. 먼저 이미지가로드되고 ImageView (배경)와 WebView가로드됩니다. 이것은 괜찮지 만 WebView의 첫 번째로드 된 URL에는 사용자의 입력을 요청하는 필드가 있습니다. 사용자가 HTML을 통해 제출하고 다음 페이지로 리디렉션되면 첫 번째 배경을 없애고 새 배경을로드하고 싶습니다. 또는 첫 번째 배경을 사라지게 만들고 싶습니다. – buffermebufferthat

+0

신경 쓰지 마라, 미안하다,이게 옳은 대답이다. 아직 자바를 완전히 이해하지 못한다. onPageStarted (또는 onPageFinished)를 호출하고 마지막으로 요청 된 URL을 반환하며 거기에서 if 문을 사용했습니다. 내가 사용한 코드는 내 게시물에 있습니다. 고마워요! – buffermebufferthat

관련 문제