美文网首页Android开发
WebView详细使用一(带进度的WebView)

WebView详细使用一(带进度的WebView)

作者: Sky_Blue | 来源:发表于2018-10-08 11:34 被阅读80次
    一、总体概述
    1. 带进度的WebView(一)
    2. 腾讯X5内核的集成(二)
    3. WebView初始化和Activity的封装(三)
    4. WebView和原生的交互接口定义和数据封装(四)
      分四部来编写。
    二、带进度WebView的分析
    1. 顶部是进度条(ProgressBar),下面是WebView
    2. 用LinearLayout将ProgressBar、WebView添加进去即可
    3. 自定义进度条的样式
    三、自定义组合控件,带进度的WebView
    /**
     * ================================================================
     * <p>
     * 作者:刘付文 
     * <p>
     * <p>
     * 描述:带进度条的WebView和一些初始化操作
     * ================================================================
     */
    public class ProgressWebView extends LinearLayout {
        private ProgressBar progressbar;
        private WebView mWebView;
    
        public ProgressWebView(Context context) {
            this(context, null);
        }
    
        public ProgressWebView(Context context, AttributeSet attrs) {
            super(context, attrs);
            addViews(context);
        }
    
        /**
         * 1. 添加进度条
         * 2. WebView
         */
        private void addViews(Context context) {
            removeAllViews();
            setOrientation(VERTICAL);
            // 1.添加进度条
            progressbar = new ProgressBar(context, null, android.R.attr.progressBarStyleHorizontal);
            progressbar.setLayoutParams(new ViewGroup.LayoutParams(LayoutParams.MATCH_PARENT, dip2px(2)));
            Drawable drawable = context.getResources().getDrawable(R.drawable.progress_bar_states);
            progressbar.setProgressDrawable(drawable);
            addView(progressbar);
            // 2.添加WebView,context.getApplicationContext()可以防止内存泄漏
            mWebView = new WebView(context.getApplicationContext());
            mWebView.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
            addView(mWebView);
        }
    
        /**
         * dip----to---px
         */
        public int dip2px(int dip) {
            float density = getResources().getDisplayMetrics().density;
            return (int) (dip * density + 0.5);
        }
    
        public WebView getWebView() {
            return mWebView;
        }
    
        public ProgressBar getProgressbar() {
            return progressbar;
        }
    }
    
    四、自定义进度条的样式(progress_bar_states)
    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <!--背景颜色-->
        <item android:id="@android:id/background">
            <shape>
                <corners android:radius="1dp" />
    
                <gradient
                    android:angle="270"
                    android:centerColor="#FFFFFF"
                    android:endColor="#FFFFFF"
                    android:startColor="#FFFFFF" />
            </shape>
        </item>
        <!--进度颜色-->
        <item android:id="@android:id/progress">
            <clip>
                <shape>
                    <corners android:radius="1dp" />
    
                    <gradient
                        android:centerColor="@color/colorPrimaryDark"
                        android:endColor="@color/colorPrimaryDark"
                        android:startColor="@color/colorPrimaryDark" />
                </shape>
            </clip>
        </item>
    </layer-list>
    

    每个APP的进度颜色都不一样,自己去改就好。
    一个简单带进度条的WebView搞定。

    相关文章

      网友评论

        本文标题:WebView详细使用一(带进度的WebView)

        本文链接:https://www.haomeiwen.com/subject/ybpdaftx.html