Android中WebView的知识详解,属性大全

1.android提供了webView控件专门用来浏览网页。
然后在程序中装载webView控件,设置属性,比如:颜色、字体、要访问的网址等。通过loadUrl方法设置当前webView需要访问的网址。在创建WebView时,系统有一个默认的设置,我们可以通过WebView.getSettings来得到这个设置。
 

2.下面是设置一些常用属性、状态的方法
WebSettings常用方法:
setAllowFileAccess 启用或禁止WebView访问文件数据
setBlockNetworkImage 是否显示网络图像
setBuiltInZoomControls 设置显示缩放按钮

setDisplayZoomControls 设置是否支持缩放

setCacheMode 设置缓冲的模式
setDefaultFontSize 设置默认的字体大小
setDefaultTextEncodingName 设置在解码时使用的默认编码
setFixedFontFamily 设置固定使用的字体
setJavaSciptEnabled 设置是否支持Javascript
setLayoutAlgorithm 设置布局方式
setLightTouchEnabled 设置用鼠标激活被选项
setSupportZoom 设置是否支持变焦

WebViewClient常用方法:
doUpdate VisitedHistory 更新历史记录
onFormResubmission 应用程序重新请求网页数据
onLoadResource 加载指定地址提供的资源
onPageFinished 网页加载完毕
onPageStarted 网页开始加载
onReceivedError 报告错误信息
onScaleChanged WebView发生改变
shouldOverrideUrlLoading 控制新的连接在当前WebView中打开

WebChromeClient常用方法:
onCloseWindow 关闭WebView
onCreateWindow 创建WebView
onJsAlert 处理Javascript中的Alert对话框
onJsConfirm处理Javascript中的Confirm对话框
onJsPrompt处理Javascript中的Prompt对话框
onProgressChanged 加载进度条改变
onReceivedlcon 网页图标更改
onReceivedTitle 网页Title更改
onRequestFocus WebView显示焦点
 

3. android webView相关知识
@下面的代码通过loadUrl方法设置当前webView需要访问的网址:
mWebView=(WebView) findViewById(R.id.WebView01);
mWebView.loadUrl(“http://www.sogou.com”);
@在android中专门通过WebSettings来设置WebView的一些属性、状态等。在创建WebView时,系统有一个默认的设置,我们可以通过WebView.getSettings来得到这个设置:
WebSettings webSettings=mWebView.getSettings();//取得对象
WebSettings和WebView都在同一个生命周期中存在,当WebView被销毁后,如果再使用WebSettings,则会抛出异常。
@使用WebViewClient来完成在应用程序中自定义网页浏览程序:
WebViewClient是辅助WebView处理各种通知、请求等事件的类。通过WebView的setWebViewClient方法指定WebViewClient对象。
WebView可以通过覆盖WebViewClient方法来辅助WebView浏览网页:
public Boolean shouldOverrideUrlLoading
(WebView view,String url){view .loadUrl(url);return true;}
 

 

4. android webView实例
实例中使用EditText输入网址,用Button来确认连接,用webView显示网页内容。
这里使用了WebViewClient来辅助WebView处理一些事件,因此我们显示的网页都是在一个WebView控件中。可以通过goBack和goForward方法设置前进和后退,先检查是否可以前进和后退:
if((keyCode==keyEvent.KEYCODE_BACK)&&mWebView.canGoBack())
{
mWebView.goBack()//返回前一个页面
return true;
}
例子中,通过自制浏览器访问一个包含javascript对话框的html页面。通过点击界面上的“警告,提醒对话框”按钮、“带选择的对话框”按钮、“要求用户输入的对话框”按钮,界面分别会弹出对话框“这是一个警告对话框”、“更多信息请到我的博客去”正常按钮/取消按钮、“输入对话框”正常按钮/取消按钮、一个跳转页面。Js html页面在代码包的根目录下(dialog.html)。
我们通过setWebChromeClient方法为WebView设置一个WebChromeClient对象,辅助WebView处理js对话框,监听按钮事件,然后通过confirm和cancel方法将我们的操作传递给js处理。

package com.yarin.android.Examples_08_06;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.graphics.Bitmap;
public class Activity01 extends Activity
{
    private final String DEBUG_TAG = "Activity01";
    private Button mButton;
    private EditText mEditText;
    private WebView mWebView;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mButton = (Button) findViewById(R.id.Button01);
        mEditText = (EditText) findViewById(R.id.EditText01);
        mWebView = (WebView) findViewById(R.id.WebView01);
//设置支持JavaScript脚本
        WebSettings webSettings = mWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);
//设置可以访问文件
        webSettings.setAllowFileAccess(true);
//设置支持缩放
        webSettings.setBuiltInZoomControls(true);
//设置WebViewClient
        mWebView.setWebViewClient(new WebViewClient()
        {
            public boolean shouldOverrideUrlLoading(WebView view, String url)
            {
                view.loadUrl(url);
                return true;
            }
            @Override
            public void onPageFinished(WebView view, String url)
            {
                super.onPageFinished(view, url);
            }
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon)
            {
                super.onPageStarted(view, url, favicon);
            }
        });

package com.yarin.android.Examples_08_06;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.graphics.Bitmap;
……
public class Activity01 extends Activity
{
    private final String DEBUG_TAG = "Activity01";
    private Button mButton;
    private EditText mEditText;
    private WebView mWebView;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mButton = (Button) findViewById(R.id.Button01);
        mEditText = (EditText) findViewById(R.id.EditText01);
        mWebView = (WebView) findViewById(R.id.WebView01);
//设置支持JavaScript脚本
        WebSettings webSettings = mWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);
//设置可以访问文件
        webSettings.setAllowFileAccess(true);
//设置支持缩放
        webSettings.setBuiltInZoomControls(true);
//设置WebViewClient
        mWebView.setWebViewClient(new WebViewClient()
        {
            public boolean shouldOverrideUrlLoading(WebView view, String url)
            {
                view.loadUrl(url);
                return true;
            }
            @Override
            public void onPageFinished(WebView view, String url)
            {
                super.onPageFinished(view, url);
            }
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon)
            {
                super.onPageStarted(view, url, favicon);
            }
        });
        package com.yarin.android.Examples_08_06;
        import android.app.Activity;
        import android.app.AlertDialog;
        import android.app.AlertDialog.Builder;
        import android.content.DialogInterface;
        import android.graphics.Bitmap;
        public class Activity01 extends Activity
        {
            private final String DEBUG_TAG = "Activity01";
            private Button mButton;
            private EditText mEditText;
            private WebView mWebView;
            /** Called when the activity is first created. */
            @Override
            public void onCreate(Bundle savedInstanceState)
            {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
                mButton = (Button) findViewById(R.id.Button01);
                mEditText = (EditText) findViewById(R.id.EditText01);
                mWebView = (WebView) findViewById(R.id.WebView01);
//设置支持JavaScript脚本
                WebSettings webSettings = mWebView.getSettings();
                webSettings.setJavaScriptEnabled(true);
//设置可以访问文件
                webSettings.setAllowFileAccess(true);
//设置支持缩放
                webSettings.setBuiltInZoomControls(true);
//设置WebViewClient
                mWebView.setWebViewClient(new WebViewClient()
                {
                    public boolean shouldOverrideUrlLoading(WebView view, String url)
                    {
                        view.loadUrl(url);
                        return true;
                    }
                    @Override
                    public void onPageFinished(WebView view, String url)
                    {
                        super.onPageFinished(view, url);
                    }
                    @Override
                    public void onPageStarted(WebView view, String url, Bitmap favicon)
                    {
                        super.onPageStarted(view, url, favicon);
                    }
                });



                例子:
                webview自适应setUseWideViewPortsetLayoutAlgorithmwebSettingsandroid webview
                [html] view plaincopyprint?
                WebSettings webSettings = view.getSettings();
                webSettings.setJavaScriptEnabled(true);

// User settings          

                webSettings.setJavaScriptEnabled(true);
                webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
                webSettings.setUseWideViewPort(true);//关键点  

                webSettings.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);

                webSettings.setDisplayZoomControls(false);
                webSettings.setJavaScriptEnabled(true); // 设置支持javascript脚本  
                webSettings.setAllowFileAccess(true); // 允许访问文件  
                webSettings.setBuiltInZoomControls(true); // 设置显示缩放按钮  
                webSettings.setSupportZoom(true); // 支持缩放  

                webSettings.setLoadWithOverviewMode(true);

                DisplayMetrics metrics = new DisplayMetrics();
                getWindowManager().getDefaultDisplay().getMetrics(metrics);
                int mDensity = metrics.densityDpi;
                Log.d("maomao", "densityDpi = " + mDensity);
                if (mDensity == 240) {
                    webSettings.setDefaultZoom(ZoomDensity.FAR);
                } else if (mDensity == 160) {
                    webSettings.setDefaultZoom(ZoomDensity.MEDIUM);
                } else if(mDensity == 120) {
                    webSettings.setDefaultZoom(ZoomDensity.CLOSE);
                }else if(mDensity == DisplayMetrics.DENSITY_XHIGH){
                    webSettings.setDefaultZoom(ZoomDensity.FAR);
                }else if (mDensity == DisplayMetrics.DENSITY_TV){
                    webSettings.setDefaultZoom(ZoomDensity.FAR);
                }else{
                    webSettings.setDefaultZoom(ZoomDensity.MEDIUM);
                }

/**
 * 用WebView显示图片,可使用这个参数 设置网页布局类型: 1、LayoutAlgorithm.NARROW_COLUMNS :  
 * 适应内容大小 2、LayoutAlgorithm.SINGLE_COLUMN:适应屏幕,内容将自动缩放  
 */
                webSettings.setLayoutAlgorithm(LayoutAlgorithm.NARROW_COLUMNS);

                其中关键是以下设置属性
                webSettings.setLayoutAlgorithm(LayoutAlgorithm.NARROW_COLUMNS);
                webSettings.setUseWideViewPort(true);

                这样的话如果你的PC网页里面没有设置 meta标签 viewport的缩放设置也没有关系。

                常用的 viewport meta 如下:

                1    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />

                    1、width : 控制viewport的大小,可以指定一个值,如600, 或者特殊的值,如device-width为设备的宽度(单位为缩放为100%的CSS的像素)

                2、height : 和width相对应,指定高度

                3、initial-scale : 初始缩放比例,页面第一次加载时的缩放比例

                4、maximum-scale : 允许用户缩放到的最大比例,范围从0到10.0

                5、minimum-scale : 允许用户缩放到的最小比例,范围从0到10.0

                6、user-scalable : 用户是否可以手动缩放,值可以是:①yes、 true允许用户缩放;②no、false不允许用户缩放


  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值