zoukankan      html  css  js  c++  java
  • android webview网页控件

    一个WebView的简单例子 。
    在开发过程中应该注意几点:
    1.AndroidManifest.xml中必须使用许可"android.permission.INTERNET",否则会出Web page not available错误。
    2.如果访问的页面中有Javascript,则webview必须设置支持Javascript。
    webview.getSettings().setJavaScriptEnabled(true);

    3.如果页面中链接,如果希望点击链接继续在当前browser中响应,而不是新开Android的系统browser中响应该链接,必须覆盖 webview的WebViewClient对象。

    <?xml version="1.0" encoding="utf-8"?>
    
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:orientation="vertical"
                  android:layout_width="match_parent"
                  android:layout_height="match_parent">
    
        <WebView
                android:id="@+id/webview"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"/>
    
    </LinearLayout>
    package com.example.basicUI;
    
    import android.os.Bundle;
    import android.support.v4.app.FragmentActivity;
    import android.view.KeyEvent;
    import android.view.View;
    import android.webkit.WebSettings;
    import android.webkit.WebView;
    import android.webkit.WebViewClient;
    import android.widget.ZoomButtonsController;
    
    import java.lang.reflect.Field;
    
    /**
     * 作者:Heyiyong,2014年2月1日23:53:18
     */
    public class MainActivity extends FragmentActivity {
    
        private WebView webView;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            webView = (WebView) findViewById(R.id.webview);
            webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
            WebSettings webSettings = webView.getSettings();
            webSettings.setJavaScriptEnabled(true);
            webSettings.setBuiltInZoomControls(true);
            webView.loadUrl("http://www.baidu.com/");
            setZoomControlGone(webView);
            webView.setWebViewClient(new MyWebViewClient());
        }
    
        /**
         * 为了能够响应链接继续在本webview控件中显示,要声明此类。
         * 如果没有这个类,点击了一个链接后,系统会自动选择浏览器浏览
         */
        private class MyWebViewClient extends WebViewClient {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }
        }
    
        /**
         * 设置webview的后退,如果后退没有网页了,则关闭该activity
         */
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
                webView.goBack();
                return true;
            }
            return super.onKeyDown(keyCode, event);
        }
    
        /**
         * 隐藏放大缩小控件
         */
        public void setZoomControlGone(View view) {
            Class classType;
            Field field;
            try {
                classType = WebView.class;
                field = classType.getDeclaredField("mZoomButtonsController");
                field.setAccessible(true);
                ZoomButtonsController mZoomButtonsController = new ZoomButtonsController(
                        view);
                mZoomButtonsController.getZoomControls().setVisibility(View.GONE);
                try {
                    field.set(view, mZoomButtonsController);
                } catch (IllegalArgumentException e) {
                    e.printStackTrace();
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                }
            } catch (SecurityException e) {
                e.printStackTrace();
            } catch (NoSuchFieldException e) {
                e.printStackTrace();
            }
        }
    }
     <uses-permission android:name="android.permission.INTERNET"/>
  • 相关阅读:
    mac安装protobuf2.4.1时报错./include/gtest/internal/gtest-port.h:428:10: fatal error: 'tr1/tuple' file not found和google/protobuf/message.cc:175:16: error: implicit instantiation of undefined template
    java基础六 [异常处理](阅读Head First Java记录)
    安装和使用iOS的包管理工具CocoaPods
    Node.js的知识点框架整理
    java基础五 [数字与静态](阅读Head First Java记录)
    java基础四 [构造器和垃圾回收](阅读Head First Java记录)
    Appium学习路-安装篇
    Dell笔记本Ubuntu无线网卡驱动安装
    Ubuntu系统使用命令禁用触摸板等输入设备
    linux(ubuntu) 查看系统设备信息
  • 原文地址:https://www.cnblogs.com/wuyou/p/3537368.html
Copyright © 2011-2022 走看看