如何修改webview的进度条或如何在顶级webview上创建自定义进度?
答案 0 :(得分: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块发送的消息将在以下处理程序的 handleMessage 方法中处理: -
Handler myHandle = new Handler(){
@Override
public void handleMessage(Message msg) {
myProgress++;
myProgressBar.setProgress(myProgress);
}
}
希望这有帮助!
答案 1 :(得分:0)
那是自定义进度条。如果您需要使用 Webview ,那么我认为这可以帮助您。
WebView有几个自定义点,您可以在其中添加自己的行为。他们是:
创建和设置 WebChromeClient 子类。这个类叫做 例如,当某些可能影响浏览器UI的事件发生时 进度更新和JavaScript警报在此处发送。
创建和设置 WebViewClient 子类。它将在何时被调用 发生的事情会影响内容的呈现,例如错误 或提交提交。你也可以在这里拦截网址加载(通过 的 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");