一、总体概述
- 带进度的WebView(一)
- 腾讯X5内核的集成(二)
- WebView初始化和Activity的封装(三)
- WebView和原生的交互接口定义和数据封装(四)
分四部来编写。
二、带进度WebView的分析
- 顶部是进度条(ProgressBar),下面是WebView
- 用LinearLayout将ProgressBar、WebView添加进去即可
- 自定义进度条的样式
三、自定义组合控件,带进度的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搞定。
网友评论