【Android】带进度条的WebView

简介:

一、截图

 

 

二、自定义控件

/**
 * 带进度条的WebView
 * 
@author  农民伯伯
 * 
@see   http://www.cnblogs.com/over140/archive/2013/03/07/2947721.html
 * 
 
*/
@SuppressWarnings("deprecation")
public  class ProgressWebView  extends WebView {

     private ProgressBar progressbar;

     public ProgressWebView(Context context, AttributeSet attrs) {
         super(context, attrs);
        progressbar =  new ProgressBar(context,  null, android.R.attr.progressBarStyleHorizontal);
        progressbar.setLayoutParams( new LayoutParams(LayoutParams.FILL_PARENT, 3, 0, 0));
        addView(progressbar);
         //         setWebViewClient(new WebViewClient(){});
        setWebChromeClient( new WebChromeClient());
    }

     public  class WebChromeClient  extends android.webkit.WebChromeClient {
        @Override
         public  void onProgressChanged(WebView view,  int newProgress) {
             if (newProgress == 100) {
                progressbar.setVisibility(GONE);
            }  else {
                 if (progressbar.getVisibility() == GONE)
                    progressbar.setVisibility(VISIBLE);
                progressbar.setProgress(newProgress);
            }
             super.onProgressChanged(view, newProgress);
        }

    }

    @Override
     protected  void onScrollChanged( int l,  int t,  int oldl,  int oldt) {
        LayoutParams lp = (LayoutParams) progressbar.getLayoutParams();
        lp.x = l;
        lp.y = t;
        progressbar.setLayoutParams(lp);
         super.onScrollChanged(l, t, oldl, oldt);
    }
}

三、加载网页的公共Activity

/**
 * 加载网页的Activity
 * 
 * 
@author  农民伯伯
 * 
@see   http://www.cnblogs.com/over140/archive/2013/03/07/2947721.html
 * 
 
*/
public  class WebActivity  extends BaseActivity {

     private ProgressWebView webview;
     private String url;
     private String name;

    @Override
     protected  void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
        setContentView(R.layout.commom_web);

         //  ~~~ 获取参数
        url = getIntent().getStringExtra("url");
        name = getIntent().getStringExtra("name");

         //  ~~~ 绑定控件
        webview = (ProgressWebView) findViewById(R.id.webview);

         //  ~~~ 设置数据
        titleText.setText(name);
        webview.getSettings().setJavaScriptEnabled( true);
        webview.setDownloadListener( new DownloadListener() {
            @Override
             public  void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype,  long contentLength) {
                 if (url !=  null && url.startsWith("http://"))
                    startActivity( new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
            }
        });

        webview.loadUrl(url);
    }
}

 commom_web.xml 

<? xml version="1.0" encoding="utf-8" ?>
< LinearLayout  xmlns:android ="http://schemas.android.com/apk/res/android"
    android:layout_width
="fill_parent"
    android:layout_height
="fill_parent"
    android:orientation
="vertical"   >

     < include  layout ="@layout/include_title"   />

     < com.nmbb.ui.widget.ProgressWebView
        
android:id ="@+id/webview"
        android:layout_width
="fill_parent"
        android:layout_height
="fill_parent"   />

</ LinearLayout >

 本文转自博客园农民伯伯的博客,原文链接:【Android】带进度条的WebView,如需转载请自行联系原博主。


 

目录
相关文章
|
7月前
|
XML Java Android开发
Android实现自定义进度条(源码+解析)
Android实现自定义进度条(源码+解析)
130 1
|
2月前
|
程序员 开发工具 Android开发
Android|WebView 禁止长按,限制非白名单域名的跳转层级
如何限制 WebView 仅域名白名单网址能随意跳转,并禁用长按选择文字。
34 2
|
6月前
|
安全 JavaScript 前端开发
kotlin开发安卓app,JetPack Compose框架,给webview新增一个按钮,点击刷新网页
在Kotlin中开发Android应用,使用Jetpack Compose框架时,可以通过添加一个按钮到TopAppBar来实现WebView页面的刷新功能。按钮位于右上角,点击后调用`webViewState?.reload()`来刷新网页内容。以下是代码摘要:
|
6月前
|
JavaScript 前端开发 Android开发
kotlin安卓在Jetpack Compose 框架下使用webview , 网页中的JavaScript代码如何与native交互
在Jetpack Compose中使用Kotlin创建Webview组件,设置JavaScript交互:`@Composable`函数`ComposableWebView`加载网页并启用JavaScript。通过`addJavascriptInterface`添加`WebAppInterface`类,允许JavaScript调用Android方法如播放音频。当页面加载完成时,执行`onWebViewReady`回调。
|
6月前
|
Java API Android开发
19. 【Android教程】进度条 ProgressBar
19. 【Android教程】进度条 ProgressBar
160 4
|
6月前
|
Web App开发 移动开发 前端开发
52. 【Android教程】网页视图:WebView
52. 【Android教程】网页视图:WebView
96 1
|
5月前
|
Web App开发 JavaScript 前端开发
Android端使用WebView注入一段js代码实现js调用android
Android端使用WebView注入一段js代码实现js调用android
126 0
|
7月前
|
XML API Android开发
Android 自定义View 之 圆环进度条
Android 自定义View 之 圆环进度条
115 0
|
6月前
|
安全 网络安全 API
kotlin安卓开发JetPack Compose 如何使用webview 打开网页时给webview注入cookie
在Jetpack Compose中使用WebView需借助AndroidView。要注入Cookie,首先在`build.gradle`添加WebView依赖,如`androidx.webkit:webkit:1.4.0`。接着创建自定义`ComposableWebView`,通过`CookieManager`设置接受第三方Cookie并注入Cookie字符串。最后在Compose界面使用这个自定义组件加载URL。注意Android 9及以上版本可能需要在网络安全配置中允许第三方Cookie。
|
7月前
|
XML Java Android开发
Android控件之基础控件——进度条类的view——TextView、Checkbox复选控件、RadioButton单选控件、ToggleButton开关、SeekBar拖动条、menu、弹窗
Android控件之基础控件——进度条类的view——TextView、Checkbox复选控件、RadioButton单选控件、ToggleButton开关、SeekBar拖动条、menu、弹窗
706 1