源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Android中的WebView详细介绍

  • 时间:2022-10-05 00:09 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Android中的WebView详细介绍
Android中WebView的详细解释: [b]1. 概念: [/b] WebView(网络视图)能加载显示网页,可以将其视为一个浏览器。它使用了WebKit渲染引擎加载显示网页。 [b]2. 使用方法: [/b] [b](1).实例化WebView组件: [/b] A.在Activity中实例化WebView组件。eg:
[u]复制代码[/u] 代码如下:
   WebView webView = new WebView(this);
B.调用WebView的loadUrl()方法,设置WevView要显示的网页.eg:
[u]复制代码[/u] 代码如下:
互联网用:webView.loadUrl("http://www.google.com"); 本地文件用:webView.loadUrl("file:///android_asset/XX.html"); 本地文件存放在:assets 文件中
C.调用Activity的setContentView( )方法来显示网页视图。 D.需要在AndroidManifest.xml文件中添加权限,否则会出现Web page not available错误。
[u]复制代码[/u] 代码如下:
 <uses-permission android:name="android.permission.INTERNET" />  
[b] (2).自定义WebView组件继承WebViewClient: [/b] A.在布局文件中声明WebView。eg:
[u]复制代码[/u] 代码如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"         android:layout_width="match_parent"         android:layout_height="match_parent" >         <WebView             android:id="@+id/webView1"             android:layout_width="match_parent"             android:layout_height="match_parent" />     </LinearLayout>
B.在Activity中实例化WebView。 C.调用WebView的loadUrl()方法,设置WebView要显示的网页. D.调用setWebViewClient()方法设置WebView视图。响应链接功能。 E.需要在AndroidManifest.xml文件中添加权限,否则出现Web page not available错误。
[u]复制代码[/u] 代码如下:
  <uses-permission android:name="android.permission.INTERNET"/>  
[b] 3. 两种方法的区别: [/b] (1).第一种方法:点击链接是新开Android的系统browser中响应该链接。 (2).第二种方法:点击链接由自己处理,而不是新开Android的系统browser中响应该链接。给WebView添加一个事件监听对象(WebViewClient)并重写其中的shouldOverrideUrlLoading方法:对网页中超链接按钮的响应。当按下某个连接时WebViewClient会调用这个方法,并传递参数:按下的url。 [b]4. 总结: [/b] (1). 用WebView点链接看了很多页以后为了让WebView支持回退功能,需要覆盖覆盖Activity类的onKeyDown()方法,如果不做任何处理,点击系统回退剪键,整个浏览器会调用finish()而结束自身,而不是回退到上一页面。
[u]复制代码[/u] 代码如下:
@Override    public boolean onKeyDown(int keyCode, KeyEvent event) {        if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {        // goBack()表示返回WebView的上一页面            mWebView.goBack();            return true;        }        return super.onKeyDown(keyCode, event);    }
[b](2). 设置WebView基本信息: [/b] A.如果访问的页面中有Javascript,则webview必须设置支持Javascript。
[u]复制代码[/u] 代码如下:
webview.getSettings().setJavaScriptEnabled(true); 
[b]B.触摸焦点起作用:[/b]
[u]复制代码[/u] 代码如下:
 requestFocus();
[b]C.取消滚动条:[/b]
[u]复制代码[/u] 代码如下:
this.setScrollBarStyle(SCROLLBARS_OUTSIDE_OVERLAY);
[b]5. 整体代码如下: [/b] [b](1).MainActivity.java[/b] package com.pansoft.webviewdemo; import android.annotation.SuppressLint; import android.app.Activity; import android.os.Bundle; import android.view.KeyEvent; import android.view.Window; import android.webkit.WebSettings; import android.webkit.WebView; import com.pansoft.webviewdemo.webView.MyWebView; public class MainActivity extends Activity {     private WebView mWebView = null;     private WebSettings mSettings = null;     /** TAG */     private String TAG = getClass().getSimpleName();     /** URL */     private String FLG_URL = "http://www.baidu.com/";     private MyWebView myWebView;     @SuppressLint("SetJavaScriptEnabled")     @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         requestWindowFeature(Window.FEATURE_NO_TITLE);         // 第二种方法         init01();         // 第一种方法         // init02();     }     /**      * 加载的是webView本身的      */     private void init01() {         setContentView(R.layout.activity_main);         mWebView =(WebView)findViewById(R.id.webView1);         mSettings = mWebView.getSettings();         // WebView设置支持JavaScript         mSettings.setJavaScriptEnabled(true);         // 加载URL         mWebView.loadUrl(FLG_URL);         myWebView = new MyWebView(this, mWebView);         mWebView.setWebViewClient(myWebView);     }     /**      * 加载的是系统自带的浏览器      */     private void init02() {         mWebView = new WebView(this);         mSettings = mWebView.getSettings();         mSettings.setJavaScriptEnabled(true);         mWebView.loadUrl(FLG_URL);         setContentView(mWebView);     }     @Override     public void onBackPressed() {         super.onBackPressed();     }     @Override     public boolean onKeyDown(int keyCode, KeyEvent event) {         if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {         // goBack()表示返回WebView的上一页面             mWebView.goBack();             return true;         }         return super.onKeyDown(keyCode, event);     } } [b](2).MyWebView.java[/b] package com.pansoft.webviewdemo.webView; import android.content.Context; import android.graphics.Bitmap; import android.util.Log; import android.webkit.HttpAuthHandler; import android.webkit.WebView; import android.webkit.WebViewClient; /**  * MyWebView  *  * @author Administrator  *  */ public class MyWebView extends WebViewClient {     private Context mContext;     private WebView mWebView;     private String TAG = getClass().getSimpleName();     /**      * 构造方法      *      * @param mContext      * @param mWebView      */     public MyWebView(Context mContext, WebView mWebView) {         super();         this.mContext = mContext;         this.mWebView = mWebView;     }     /**      * 打开链接前的事件,为了避免再次按的时候加载的是系统自带的浏览器,点击链接由自己处理      */     // 这个函数我们可以做很多操作,比如我们读取到某些特殊的URL,于是就可以不打开地址,取消这个操作,进行预先定义的其他操作,这对一个程序是非常必要的。     @Override     public boolean shouldOverrideUrlLoading(WebView view, String url) {         if (url != null) {             mWebView.loadUrl(url);             Log.d(TAG, "--->shouldOverrideUrlLoading--->");         }         return true;     }     /**      * 接收到Http请求的事件      */     @Override     public void onReceivedHttpAuthRequest(WebView view,     HttpAuthHandler handler, String host, String realm) {         super.onReceivedHttpAuthRequest(view, handler, host, realm);     }     /**      * 载入页面开始的事件      */     // 这个事件就是开始载入页面调用的,通常我们可以在这设定一个loading的页面,告诉用户程序在等待网络响应。     @Override     public void onPageStarted(WebView view, String url, Bitmap favicon) {         super.onPageStarted(view, url, favicon);         Log.d(TAG, "--->onPageStarted--->");     }     /**      * 载入页面完成的事件      */     // 同样道理,我们知道一个页面载入完成,于是我们可以关闭loading条,切换程序动作。     @Override     public void onPageFinished(WebView view, String url) {         super.onPageFinished(view, url);         Log.d(TAG, "--->onPageFinished--->");     }     /**      * 当浏览器访问制定的网址发生错误时会通知我们应用程序,比如网络错误。      */     @Override     public void onReceivedError(WebView view, int errorCode,             String description, String failingUrl) {         super.onReceivedError(view, errorCode, description, failingUrl);     } } [b](3).activity_main.xml[/b] <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="match_parent"     android:layout_height="match_parent" >     <WebView         android:id="@+id/webView1"         android:layout_width="match_parent"         android:layout_height="match_parent" /> </LinearLayout> [b](4).权限:[/b]  <uses-permission android:name="android.permission.INTERNET" />
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部