如何修改 webview 的进度条或如何在顶部 webview 上创建自定义进度?
问问题
334 次
2 回答
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 回答
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 回答