3

Webview の読み込み中にスプラッシュ画面を読み込みたい。以下のコードを使用していますが、10 秒後に黒い Web ビューが表示されます。助けてください。

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);
        progressBar = (ProgressBar) findViewById(R.id.progressBar1);

        WebView myWebView = (WebView) findViewById(R.id.webview);
        WebSettings webSettings = myWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        myWebView.setVerticalScrollBarEnabled(false);
        myWebView.setHorizontalScrollBarEnabled(false);
        myWebView.getSettings().setLoadWithOverviewMode(true); 
        myWebView.getSettings().setUseWideViewPort(true);
        myWebView.getSettings().setRenderPriority(RenderPriority.HIGH);

        WebView webView = (WebView) findViewById(R.id.webview);
        webView.addJavascriptInterface(new WebAppInterface(this), "Android");
        myWebView.setWebViewClient(new WebViewClient());
        myWebView.setWebViewClient(new MyWebViewClient());
        myWebView.loadUrl("http://www.XXXXXXX.com);
        setContentView(R.layout.splash);
    }



    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }


    private class MyWebViewClient extends WebViewClient {


         public void onPageFinished (WebView myWebView, String url) {
             setContentView(R.layout.activity_main);
            } 
 }

webview の読み込み中に、アプリのロゴが表示されたスプラッシュ スクリーンが表示されるようにします。これを行うにはどうすればよいですか? 私のコードは正しいですか?しばらくすると webview が表示されますが、空白のようです。

4

3 に答える 3

1

スプラッシュ スクリーンを設定した時点で、ダイアログを表示するか、別のアクティビティを起動してください。

  setContentView(R.layout.splash);

この行を、スプラッシュのように見えるコスチューム ダイアログまたは新しいアクティビティの別の完全なスプラッシュ スクリーンのいずれかの優先ソリューションに置き換えます。

新しいアクティビティを起動する場合は、アクティビティのインスタンスを MainActivity に保持し、Web ページの読み込みが完了したら、スプラッシュ スクリーン アクティビティを終了します。

あなたの場合のアクティビティと比較して、ダイアログを維持する方が簡単なので、フルスクリーンダイアログを作成することをお勧めします。

于 2013-03-06T12:31:03.320 に答える
0

setContentView()何度も電話することはお勧めしません。ImageViewメイン レイアウトに を追加します (srcスプラッシュ スクリーン イメージとして設定します)。デフォルトでは、 を使用して非表示にしimageView.setVisibility(View.INVISIBLE);ます。新しいページの読み込みを開始したら、可視性を in function に変更し、可視webView性をin functionに変更します。ロードが終了したら、toの可視性を変更し、関数内のtoの可視性を変更します。INVISIBLEimageViewVISIBLEonPageStarted()imageViewINVISIBLEwebViewVISIBLEonPageFinished()

于 2013-03-06T12:48:03.787 に答える
0

カスタム ダイアログを作成し、そこにイメージ ビューを配置し、Web ビューのonPageStartedメソッドで必要な背景イメージを設定することをお勧めします。

@Override
                public void onPageStarted(WebView view, String url,
                        Bitmap favicon) {
                    // TODO Auto-generated method stub
                    super.onPageStarted(view, url, favicon);
                    ProgressDialog();
                    }
于 2013-03-06T12:17:36.160 に答える