1.权限
<uses-permission android:name="android.permission.INTERNET"/>
2.布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:id="@+id/hunt"
android:layout_width="0dp"
android:padding="10dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="请输入网址"/>
<Button
android:id="@+id/seek"
android:padding="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="搜索"/>
</LinearLayout>
<ProgressBar
android:id="@+id/progress"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/Base.Widget.AppCompat.ProgressBar.Horizontal"
android:visibility="gone"/>
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/go_forward"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="前进"/>
<Button
android:id="@+id/refresh"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="刷新"/>
<Button
android:id="@+id/go_back"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="后退"/>
</LinearLayout>
</LinearLayout>
3.Mainctivity代码
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private WebView mWebView;
private EditText mHunt;
private ProgressBar mProgressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化控件
initView();
}
private void initView() {
mHunt = findViewById(R.id.hunt);
Button seek = findViewById(R.id.seek);
mWebView = findViewById(R.id.webView);
Button go_forward = findViewById(R.id.go_forward);
Button refresh = findViewById(R.id.refresh);
Button go_back = findViewById(R.id.go_back);
mProgressBar = findViewById(R.id.progress);
mProgressBar.setProgress(0);
mProgressBar.setMax(100);
seek.setOnClickListener(this);
go_forward.setOnClickListener(this);
refresh.setOnClickListener(this);
go_back.setOnClickListener(this);
//使用webView对象,进行的一些初始化设置
initWebView();
//使用webViewSettings对webVIew进行一系列初始化的设置
initSettings();
}
private void initSettings() {
//得到一个webView的设置对象,WebSettings.
WebSettings settings = mWebView.getSettings();
//使webView可以支持Javascript:
settings.setJavaScriptEnabled(true);
//使webView允许网页缩放,记住用这方法前,要有让webView支持Javascript的设定.否则会不起作用
settings.setSupportZoom(true);
// setBlockNetworkImage 是webView只加载文字,而不加载图片,为用户省流量.
//settings.setBlockNetworkImage(true);
}
private void initWebView() {
//setWebViewClient此方法的作用是,
// 当在webView进行点击时不跳转到别的浏览器
mWebView.setWebViewClient(new WebViewClient());
// requestFocus 触摸焦点起作用
// (如果不设置,则在点击网页文本输入框时,不能弹出软键盘及不响应其他的一些事件
mWebView.requestFocus();
//设置支持h5
// setWebChromeClient 该监听事件是指UI(界面)发送改变时进行各监听. onProgressChanged
mWebView.setWebChromeClient(new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
//首先通过代码让pRogressBar显示出来
mProgressBar.setVisibility(View.VISIBLE);
//其次对progressBar设置加载进度的参数
mProgressBar.setProgress(newProgress);
if(newProgress == 100){
//加载完毕消失进度条
mProgressBar.setVisibility(View.GONE);
}
}
});
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.seek:
//进入
load();
break;
case R.id.go_forward:
//前进
go_forward();
break;
case R.id.refresh:
//刷新
mWebView.reload();
break;
case R.id.go_back:
//后退
go_back();
break;
}
}
//后退
private void go_back() {
if(mWebView.canGoBack()){
mWebView.goBack();
}else{
Toast.makeText(this, "到尾了", Toast.LENGTH_SHORT).show();
}
}
//前进
private void go_forward() {
//进行一个状态的判断,看是否可以前进,canGoForward
if(mWebView.canGoForward()){
mWebView.goForward();
}else{
Toast.makeText(this, "到头了", Toast.LENGTH_SHORT).show();
}
}
//搜索
private void load() {
String trim = mHunt.getText().toString().trim();
if(TextUtils.isEmpty(trim)){
Toast.makeText(this, "不能输入空网址", Toast.LENGTH_SHORT).show();
return;
}
//加载网页
mWebView.loadUrl("http://" + trim);
}
}
效果