1

ここに画像の説明を入力

webview のプログレス バーを変更する方法、またはトップ webview でカスタム プログレスを作成する方法は?

4

2 に答える 2

0

それはカスタム進行状況バー用でした。Webviewをいじる必要がある場合は、これが役立つと思います。

WebView には、独自の動作を追加できるいくつかのカスタマイズ ポイントがあります。彼らです:

  • WebChromeClientサブクラスの作成と設定。このクラスは、ブラウザーの UI に影響を与える可能性のある何かが発生したときに呼び出されます。たとえば、進行状況の更新や JavaScript アラートがここに送信されます。

  • WebViewClientサブクラスの作成と設定。エラーやフォームの送信など、コンテンツのレンダリングに影響を与えることが発生したときに呼び出されます。ここで URL の読み込みをインターセプトすることもできます ( shouldOverrideUrlLoading () 経由)。

    // To display the progress in the activity title bar, like the
    // browser app does.
    getWindow().requestFeature(Window.FEATURE_PROGRESS);
    
    webview.getSettings().setJavaScriptEnabled(true); // javascript if needed.
    
    final Activity activity = this;
    webview.setWebChromeClient(new WebChromeClient() {
       public void onProgressChanged(WebView view, int progress) {
         // The progress meter will automatically disappear when we reach 100%
         activity.setProgress(progress * 1000);
       }
     });
    
     webview.setWebViewClient(new WebViewClient() {
       public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                Toast.makeText(activity, "Page Load Error! " + description, Toast.LENGTH_SHORT).show();
       }
     });
    
     webview.loadUrl("http://www.stackoverflow.com");
    

より明確にするために、これとこれ参照してください。

于 2013-01-30T11:25:33.843 に答える
0

カスタム プログレス バーを実装するには、Runnable スレッドと、プログレス バーを更新し続けるメッセージ ハンドラーが必要です。

以下のスニペットを確認してください:-

プログレスバーを取得してから、新しいスレッドを開始します

myProgressBar=(ProgressBar)findViewById(R.id.progressbar);
new Thread(myThread).start();

新しいスレッド:-

private Runnable myThread = new Runnable(){

@Override
public void run() {
while (myProgress<100){
try{
myHandle.sendMessage(myHandle.obtainMessage());
Thread.sleep(1000);
}
catch(Throwable t){
}
}
}
}

上記の try ブロックから送信されたメッセージは、以下のHandlerのhandleMessageメソッドで処理されます。

Handler myHandle = new Handler(){

@Override
public void handleMessage(Message msg) {
myProgress++;
myProgressBar.setProgress(myProgress);
}
}

お役に立てれば!

于 2013-01-30T11:00:01.607 に答える