使用WebView的一个简单Demo

01 效果图

WebViewDemo.png

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"/>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,845评论 0 17
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,839评论 25 709
  • 曾经有一份美好的爱情放在我的面前我没有珍惜。等到失去后才后悔莫及。如果可以再对小李说。毛欣想说。这辈子无缘再牵手。...
    毛欣与小李阅读 7,732评论 0 13
  • 是什么使你变成现在的你? 可能,你会和我一样,将此归结于父母对自己的教育、上学时人生观或价值观的灌输、兄弟姐妹和朋...
    如炬阅读 3,240评论 5 2
  • 为什么我们听了那么多道理,却始终过不好这一生? 1)你可能听的是励志鸡汤,他只是激励你,却没有给你方法。 2)"学...
    迎刃阅读 13,136评论 40 263