Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在加载下一页之前,保持当前页的呈现_Android_Webview - Fatal编程技术网

Android 在加载下一页之前,保持当前页的呈现

Android 在加载下一页之前,保持当前页的呈现,android,webview,Android,Webview,我有一个基于WebView.loadUrl(“”)的简单应用程序 当用户单击URL时,默认行为是立即显示空白页面,等待页面加载,然后显示此页面 我设法用一个飞溅的屏幕代替空白的页面。但是,是否可以保留当前页面的渲染,并仅在下一页完全加载时渲染下一页?我觉得这是一个老套的解决方案。我提供它作为一个临时修复,直到有人发布了“真正”的方式来做到这一点 main活动class: public class MainActivity extends Activity { WebView webVie

我有一个基于WebView.loadUrl(“”)的简单应用程序

当用户单击URL时,默认行为是立即显示空白页面,等待页面加载,然后显示此页面


我设法用一个飞溅的屏幕代替空白的页面。但是,是否可以保留当前页面的渲染,并仅在下一页完全加载时渲染下一页?

我觉得这是一个老套的解决方案。我提供它作为一个临时修复,直到有人发布了“真正”的方式来做到这一点

main活动
class:

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>


作为SeNoNoT,您可能需要考虑添加一个加载对话框(SPILN)。考虑到Android的默认行为是显示空白页面,我认为链接/按钮要么不起作用,要么应用程序运行缓慢,如果它仍然挂在上一页上。值得思考。目前,除了启动屏幕之外,我还有一个进度条,这不是很有用。我不确定是否有“真正”的方法来实现这一点,但我只是运行了一个带有两个
WebView
s的测试应用程序,当页面加载完成时,它们的可视性会被切换。它相当好用。如果你愿意,我可以发布代码。如果没有更好的选择,我可以接受这个答案。接受这个答案作为唯一可用的解决方案。