美文网首页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