最近碰到了WebView的使用。 经过自己查看api。写了一下WebView.加上顶部的页面加载时的滚动效果。
要在WebView的上方加一个滚动条。其实就是加一个ProgressBar 设置样式即可。
附上 activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@+id/editText_http"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入http"/>
<Button
android:layout_below="@+id/editText_http"
android:id="@+id/mian_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="Onclick"
android:text="确定"/>
<ProgressBar
style="?android:attr/progressBarStyleHorizontal"
android:id="@+id/baifenbi"
android:layout_width="match_parent"
android:layout_height="5dp"
android:layout_below="@+id/mian_button" />
<WebView
android:layout_below="@+id/baifenbi"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/webView"/>
</RelativeLayout>
android真机测试的系统为Android4.3.3 不设置属性自动调用系统浏览器或者第三方浏览器。然而Android5.0系统不设置WebView属性则不调用第三方。其余为测试。
附上 MainActivity.java
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.EditText;
import android.widget.ProgressBar;
public class MainActivity extends AppCompatActivity {
private WebView mWebView;
private EditText mEditText;
private String http = "http://";
private ProgressBar mProgressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
mEditText = (EditText) findViewById(R.id.editText_http);
mProgressBar = (ProgressBar) findViewById(R.id.baifenbi);
mWebView = (WebView) findViewById(R.id.webView);
//设置webView打开网页而不是系统浏览器或者第三方浏览器
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
//返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器
view.loadUrl(url);
return true;
}
});
//如果网页中有js则标记为webView支持js
mWebView.getSettings().setJavaScriptEnabled(true);
//优先使用缓存
//mWebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
//不有限使用缓存
//mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
}
public void Onclick(View view) {
switch (view.getId()) {
case R.id.mian_button:
String URl = mEditText.getText().toString();
mWebView.loadUrl(http + URl);
//加载本地资源
//mWebView.loadUrl("file:///android_asset/example.html");
//判断页面加载过程 既滚动条
mWebView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
if (newProgress == 100) {
mProgressBar.setVisibility(View.INVISIBLE);
} else {
if (View.INVISIBLE == mProgressBar.getVisibility()) {
mProgressBar.setVisibility(View.VISIBLE);
}
mProgressBar.setProgress(newProgress);
}
super.onProgressChanged(view, newProgress);
}
});
break;
}
}
}
webView设置支持js和不支持js的效果完全不同
mWebView.getSettings().setJavaScriptEnabled(true);
最后不要忘记在AndroidManifest.xml加入权限
<uses-permission android:name="android.permission.INTERNET"/>
其实这点东西挺简单啦。代码就能看明白。就写这么多了。