01 效果图
02 layout
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ll_root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/et_query_url"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:hint="请输入网址"
android:inputType="textUri"/>
<ImageView
android:id="@+id/iv_search"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/query"/>
</LinearLayout>
</LinearLayout>
03 activity
public class MainActivity extends Activity implements OnClickListener {
private WebView mWebView;
private LinearLayout ll_root;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
intiUI();
}
private void intiUI() {
ImageView iv_search = (ImageView) findViewById(R.id.iv_search);
iv_search.setOnClickListener(this);
ll_root = (LinearLayout) findViewById(R.id.ll_root);
// 最好不要在xml中定义 Webview ,而是在需要的时候创建,
// 并且Context使用 getApplicationgContext()
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, 0, 1);
mWebView = new WebView(getApplicationContext());
mWebView.setLayoutParams(params);
ll_root.addView(mWebView);
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
mWebView.requestFocusFromTouch();
WebSettings settings = mWebView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setJavaScriptCanOpenWindowsAutomatically(true);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && mWebView.canGoBack()) {
mWebView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.iv_search:
EditText et_query_url = (EditText) findViewById(R.id.et_query_url);
String url = et_query_url.getText().toString();
if (TextUtils.isEmpty(url)) {
Toast.makeText(this, "请输入网址", Toast.LENGTH_SHORT).show();
} else {
mWebView.loadUrl(url);
}
break;
}
}
@Override
protected void onDestroy() {
// 在 Activity 销毁的时候,可以先让 WebView 加载null内容,
// 然后移除 WebView,再销毁 WebView,最后置空。
if (mWebView != null) {
mWebView.loadDataWithBaseURL(null, "", "text/html", "utf-8", null);
mWebView.clearHistory();
ll_root.removeView(mWebView);
mWebView.destroy();
mWebView = null;
}
super.onDestroy();
}
}
04 permission
<uses-permission android:name="android.permission.INTERNET"/>