2014-07-25 79 views
2

我有一個基於WebView.loadUrl(「http://www.example.com」)的簡單應用程序。保持當前頁面呈現,直到下一頁加載

當用戶點擊一個URL時,默認行爲是立即顯示一個空白頁面,等待頁面加載,然後顯示此頁面。

我設法顯示一個閃屏代替空白頁。但是,是否可以保持當前頁面呈現,而只在滿載時渲染下一頁?

+0

一點題外話,你可能要考慮增加一個加載對話框(微調)如果你得到這個工作。鑑於Android中的默認行爲是顯示空白頁面,我認爲鏈接/按鈕或者不起作用,或者如果應用程序仍然掛在前一頁上,則該應用程序很慢。只是思考的食物。 –

+0

現在我除了啓動畫面還有一個進度條,這不是很有用。 – mossaab

+0

我不確定是否有「真正」的方法來做到這一點,但我只是運行了一個測試應用程序,其中包含兩個WebView,當頁面加載完成時,它們的可見性被切換。它工作得很好。如果你喜歡,我可以發佈代碼。 –

回答

1

這是,我覺得,一個hacky的解決方案。我提供它作爲一個臨時修復,直到有人發佈「真實」的方式來做到這一點。

MainActivity類:

public class MainActivity extends Activity 
{ 
    WebView webView1, webView2; 
    EditText editText; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     editText = (EditText) findViewById(R.id.edit_url); 
     webView1 = (WebView) findViewById(R.id.webView_1); 
     webView2 = (WebView) findViewById(R.id.webView_2); 

     webView1.setWebViewClient(client); 
     webView2.setWebViewClient(client); 

     webView1.loadUrl(editText.getText().toString()); 
    } 

    private WebViewClient client = new WebViewClient() 
    { 
     public void onPageFinished(WebView webView, String url) 
     { 
      if (webView == webView1) 
       webView2.setVisibility(View.GONE); 
      else 
       webView1.setVisibility(View.GONE); 

      webView.setVisibility(View.VISIBLE); 
      Toast.makeText(MainActivity.this, "WebView " + (webView == webView1 ? "One" : "Two") + " is showing", 0).show(); 
     } 
    }; 

    private void loadUrl(String url) 
    { 
     if (webView1.getVisibility() == View.GONE) 
      webView1.loadUrl(url); 
     else 
      webView2.loadUrl(url); 
    } 

    public void onClick(View v) 
    { 
     loadUrl(editText.getText().toString()); 
    } 
} 

main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <android.webkit.WebView android:id="@+id/webView_1" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" /> 

    <android.webkit.WebView android:id="@+id/webView_2" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:visibility="gone" /> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 

     <EditText android:id="@+id/edit_url" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="4" 
      android:layout_gravity="center_vertical" 
      android:text="http://www.example.com" /> 

     <Button android:id="@+id/button_load" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:onClick="onClick" 
      android:text="Load" /> 

    </LinearLayout> 

</LinearLayout> 
+1

接受此答案作爲唯一可用的解決方案。 – mossaab

相關問題