android WebView控件显示网页

有时需要app里面显示网页,而不调用其他浏览器浏览网页,那么这时就需要WebView控件。这个控件也是很强大的,放大,缩小,前进,后退网页都可以。

1、部分方法

//支持javascript
web.getSettings().setJavaScriptEnabled(true);
// 设置可以支持缩放
web.getSettings().setSupportZoom(true);
// 设置出现缩放工具
web.getSettings().setBuiltInZoomControls(true);
//扩大比例的缩放
web.getSettings().setUseWideViewPort(true);
//自适应屏幕
web.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
web.getSettings().setLoadWithOverviewMode(true);

这里要说一下,有一些网页需要自身支持缩放,才能缩放网页的。如果不支持,是无法缩放的。

2、布局

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical" >
 6
 7     <ProgressBar
 8         android:id="@+id/progressBarLoading"
 9         style="?android:attr/progressBarStyleHorizontal"
10         android:layout_width="match_parent"
11         android:layout_height="3dp" />
12
13     <WebView
14         android:id="@+id/webView1"
15         android:layout_width="match_parent"
16         android:layout_height="match_parent" />
17
18 </LinearLayout>

3、java代码

package com.example.asynchttpclient;

import android.os.Bundle;
import android.app.Activity;
import android.view.KeyEvent;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings.ZoomDensity;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;

public class WebActivity extends Activity {
    private ProgressBar mLoadingProgress;
    private WebView webView;
    private String mstrLoginUrl = "http://baidu.com";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_web);

        webView = (WebView)findViewById(R.id.webView1);
        mLoadingProgress = (ProgressBar)findViewById(R.id.progressBarLoading);
        mLoadingProgress.setMax(100);

        webView.getSettings().setUseWideViewPort(true);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.getSettings().setSupportZoom(true); //设置可以支持缩放
        webView.getSettings().setDefaultZoom(ZoomDensity.FAR);
        webView.loadUrl(mstrLoginUrl);

        // 覆盖WebView默认使用第三方或系统默认浏览器打开网页的行为,使网页用WebView打开
        webView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                //设置加载进度条
                view.setWebChromeClient(new WebChromeClientProgress());
                return true;
            }

        });
    }

    private class WebChromeClientProgress extends WebChromeClient{
        @Override
        public void onProgressChanged(WebView view, int progress) {
            if (mLoadingProgress != null) {
                mLoadingProgress.setProgress(progress);
                if (progress == 100) mLoadingProgress.setVisibility(View.GONE);
            }
            super.onProgressChanged(view, progress);
        }
    }

    /**
     * 按键响应,在WebView中查看网页时,检查是否有可以前进的历史记录。
     */
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)
    {
        // Check if the key event was the Back button and if there‘s history
        if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack())
        {

            // 返回键退回
            webView.goBack();
            return true;
        }
        // If it wasn‘t the Back key or there‘s no web page history, bubble up
        // to the default
        // system behavior (probably exit the activity)
        return super.onKeyDown(keyCode, event);
    }
}

4、示例图片

5、连网的权限

<uses-permission android:name="android.permission.INTERNET"/>

时间: 2024-12-21 09:58:59

android WebView控件显示网页的相关文章

Android Visibility控件显示和隐藏

Android控件显示和隐藏 visibility 可见(visible) XML文件:android:visibility="visible" Java代码:view.setVisibility(View.VISIBLE); 不可见(invisible) XML文件:android:visibility="invisible" Java代码:view.setVisibility(View.INVISIBLE); 隐藏(GONE) XML文件:android:vis

Android TextView控件显示Html文本,并引用的资源文件String。

Android 的TextView是可以显示html标签样式的,方法如下 tvVersion.setText(Html.fromHtml("asdasada<font color=\"blue\">84eqw84</font>123131")); 以上代码显示的样式如下: asdasada84eqw84123131 然后我想把字符串放到资源文件中String,再进行引用时出现了问题.html效果没有显示 最后发现了问题,是因为在应用Strin

Android WebView控件知道这些就够了

刚做过的一个项目中用到了webview的一些功能,在开发过程中遇到了各种各样的问题,在此记录下来供大家参考:(下面代码是从项目中抽取出来的,供参考) 1.怎么给webview添加加载进度条? 2.怎么给webview设置cookie? 3.怎么在webview中让服务端可以直接调用APP端的方法? (补充:因为之前我在做这个项目的时候,百度 谷歌了很多,都描述的不是很详细,所以我详细的给过一遍,希望能帮助到大家) 主要就是这三个问题的解决,下面我们一个一个的解释. 1.在webview中添加加载

android WebView控件开发 可点击上传图片

下面三段代码会根据安卓不同的版本进行调用,三个都写进去就对了. webView.setWebChromeClient(new WebChromeClient() { @SuppressWarnings("unused") public void openFileChooser(ValueCallback<Uri> uploadMsg,String acceptType, String capture){valueCallback = uploadMsg; Intent in

Android之Web篇:Day02Html和Css实战WebView实现手机显示网页

Day02 Html.Css实战和WebView实现手机显示网页 1.html与css实战 1.1 程序猿小网页 先来看一下效果图 编程用图如下 实现代码如下 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style> #pic{ position: relative; float: left; } #text

Android中通过WebView控件实现与JavaScript方法相互调用的地图应用

在Android中通过WebView控件,可以实现要加载的页面与Android方法相互调用,我们要实现WebView中的addJavascriptInterface方法,这样html才能调用android方法,在这里我个人觉得有点和DWR相似. 为了让大家容易理解,我写了一个简单的Demo,具体步骤如下: 第一步:新建一个Android工程,命名为WebViewDemo(这里我在assets里定义了一个html页面). 第二步:修改main.xml布局文件,增加了一个WebView控件还有But

Android --日期控件使用并显示选择的日期

1. main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" a

ArcGIS for Android地图控件的5大常见操作

原文地址: ArcGIS for Android地图控件的5大常见操作 - ArcGIS_Mobile的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/arcgis_mobile/article/details/7801467   GIS的开发中,什么时候都少不了地图操作.ArcGIS for Android中,地图组件就是MapView,MapView是基于Android中ViewGroup的一个类(参考),也是ArcGIS Runtime SDK for

Android 标签控件

版本:1.0 日期:2014.7.24 版权:© 2014 kince 转载注明出处 在有的应用中可能需要设置一些标签来方便用去去查询某些信息,比如手机助手或者购物软件之类都会有一些标签.对于软件开发初期来说,直接使用TextView.Button实现是最为简单的一种方式.但是这种方法也有其局限性,比如不能控制换行.耦合性低等缺点.所以除了解决这些问题之外,最好能够封装一个类库出来,方便以后使用. 首先新建一个Tag类, import java.io.Serializable; public c