1 基本使用
1.1 布局
首先layout中即为一个基本的简单控件:
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
1.2 使用
1.2.1 加载本地/Web资源
webView = (WebView) findViewById(R.id.webView);
//加载本地资源
webView.loadUrl("file:///android_asset/example.html");//存放在assets文件夹内
//加载web资源
webView.loadUrl("http://baidu.com");
1.2.2 在程序内打开网页
webView = (WebView) findViewById(R.id.webView);
//WebView加载web资源
webView.loadUrl("http://baidu.com");
//覆盖WebView默认使用第三方或系统默认浏览器打开网页的行为,使网页用WebView打开
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
//返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器
view.loadUrl(url);
return true;
}
});
1.2.3 设置支持Javascript等
webView = (WebView) findViewById(R.id.webView);
WebSettings settings = webView.getSettings();
//支持javascript
settings.setJavaScriptEnabled(true);
//设置可以支持缩放
settings.setSupportZoom(true);
//设置出现缩放工具
settings.setBuiltInZoomControls(true);
//扩大比例的缩放
settings.setUseWideViewPort(true);
//自适应屏幕 settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
settings.setLoadWithOverviewMode(true);
String url = result.getParam("pictextdetail");
webView.loadData(url, "text/html", "UTF-8");
2 兼容4.+
2.1 自定义WebView
public class FoundWebView extends WebView {
ScrollInterface web;
public FoundWebView(Context context) {
super(context);
}
public FoundWebView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public FoundWebView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
super.onScrollChanged(l, t, oldl, oldt);
web.onSChanged(l, t, oldl, oldt);
}
public void setOnCustomScroolChangeListener(ScrollInterface t) {
this.web = t;
}
/**
* 定义滑动接口
*/
public interface ScrollInterface {
public void onSChanged(int l, int t, int oldl, int oldt);
}
}
<com.guesslive.caixiangji.ui.view.FoundWebView
android:id="@+id/compadibleDetail"
android:layout_width="match_parent"
android:layout_height="match_parent" />
2.2 使用
compadibleDetail.setOnCustomScroolChangeListener(new FoundWebView.ScrollInterface() {
//得到mWebview的内容高度,由于mWebview有缩放因此需要乘以他的缩放值mWebView.getScale()
//mWebview.getContentHeight()
//当前mWebView显示的高度
//mWebView.getHeight()
//mWebView竖直方向上滚动的高度,若为0说明滚动条在顶部了
//mWebView.getScrollY()
@Override
public void onSChanged(int l, int t, int oldl, int oldt) {
float webcontent = compadibleDetail.getContentHeight() * compadibleDetail.getScale();//webview的高度
float webnow = compadibleDetail.getHeight() + compadibleDetail.getScrollY();//当前webview的高度
if (webcontent - webnow == 0) {
//已经处于底端
} else {
}
//已经处于顶端
if (webnow == compadibleDetail.getHeight()) {
McoySnapPageLayout.isTop = true;
} else {
McoySnapPageLayout.isTop = false;
}
}
});