最近的项目中看产品文档的时候,发现设计文档中”资讯”栏目设计的图文并茂,有声有色,感叹之余,发觉如此的布局写起来太烦太累了…想到了平时使用浏览器看新闻的体验,感觉让服务端把资讯做成网页,客户端使用WebView这个组件来直接访问页面的方式挺不错.

  WebView非常简单,Android已经封装的非常完善,写个小例子覆盖其间常用的几个方法;

  新建一个安卓项目,建议使用2.3以上SDK(因为之前版本的SDK测试一直不太好使而且没确定原因);

  首先创建个布局文件:

XML/HTML代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout  
  3.     xmlns:android="http://schemas.android.com/apk/res/android"  
  4.     android:orientation="vertical"  
  5.     android:layout_width="fill_parent"  
  6.     android:layout_height="fill_parent"  
  7. >  
  8.     <WebView  
  9.         android:id="@+id/wv1"  
  10.         android:layout_width="fill_parent"  
  11.         android:layout_height="fill_parent"  
  12.         android:layout_weight="1" />  
  13.     <WebView  
  14.         android:id="@+id/wv2"  
  15.         android:layout_width="fill_parent"  
  16.         android:layout_height="fill_parent"  
  17.         android:layout_weight="1" />  
  18. </LinearLayout>  

  然后代码中调用并设置

Java代码
  1. import android.app.Activity ;  
  2. import android.os.Bundle ;  
  3. import android.util.Log ;  
  4. import android.view.KeyEvent ;  
  5. import android.webkit.WebSettings.LayoutAlgorithm ;  
  6. import android.webkit.WebView ;  
  7. import android.webkit.WebViewClient ;  
  8.    
  9. public class WebViewDemoActivity extends Activity {  
  10.    
  11.     private WebView m_wv1 ;  
  12.    
  13.     private WebView m_wv2 ;  
  14.    
  15.     @Override  
  16.     public void onCreate(Bundle savedInstanceState) {  
  17.         super.onCreate(savedInstanceState) ;  
  18.         setContentView(R.layout.main) ;  
  19.         initView();  
  20.     }  
  21.    
  22.     public void initView() {  
  23.         m_wv1 = (WebView)findViewById(R.id.wv1) ;  
  24.         m_wv1.getSettings().setJavaScriptEnabled(true) ;  
  25.         m_wv1.loadUrl("http://www.xuanyusong.com") ;  
  26.         //获取WebSettings对象,设置缩放  
  27.         m_wv1.getSettings().setUseWideViewPort(true) ;  
  28.         m_wv1.getSettings().setLoadWithOverviewMode(true) ;  
  29.         m_wv1.setWebViewClient(new WebViewClient() {  
  30.    
  31.             @Override  
  32.             public boolean shouldOverrideUrlLoading(WebView view, String url) {  
  33.                 Log.d("访问网址:",url) ;  
  34.                 m_wv2.loadUrl(url) ;  
  35.                 return true ;  
  36.             }  
  37.         }) ;  
  38.         m_wv2 = (WebView)findViewById(R.id.wv2) ;  
  39.         //获取WebSettings对象,设置单列  
  40.         m_wv2.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN) ;  
  41.         m_wv2.getSettings().setJavaScriptEnabled(true) ;  
  42.         m_wv2.setWebViewClient(new WebViewClient() {  
  43.    
  44.             @Override  
  45.             public boolean shouldOverrideUrlLoading(WebView view, String url) {  
  46.                 Log.d("访问网址:",url) ;  
  47.                 m_wv2.loadUrl(url) ;  
  48.                 return true ;  
  49.             }  
  50.         }) ;  
  51.     }  
  52.    
  53.     @Override  
  54.     public boolean onKeyDown(int keyCode, KeyEvent event) {  
  55.         if((keyCode==KeyEvent.KEYCODE_BACK)&&m_wv2.canGoBack()) {  
  56.             //如果可以回退  
  57.             m_wv2.goBack() ;  
  58.             return true ;  
  59.         }  
  60.         return super.onKeyDown(keyCode,event) ;  
  61.     }  
  62. }  

  最后别忘了在AndroidManifest.xml文件中添加网络访问权限:

XML/HTML代码
  1. <uses-permission android:name="android.permission.INTERNET" />  

Android应用开发教程之十六:WebView的简单使用

Android应用开发教程之十六:WebView的简单使用

  第一个窗口中点击链接会在第二个窗口中打开,点击回退的话如果下面的WebView可以回退就会执行后退操作,如果不能则退出Activity.布局文件和代码都可以创建WebView对象,在此使用布局直接创建,代码创建的话构造方法有四个:

Java代码
  1. WebView(Context context)  
  2. WebView(Context context, AttributeSet attrs)  
  3. WebView(Context context, AttributeSet attrs, int defStyle)  
  4. WebView(Context context, AttributeSet attrs, int defStyle, boolean privateBrowsing)  

  其中loadUrl方法可以让WebView载入指定的页面;

  如果访问的页面有Javascript元素,使用 setJavaScriptEnabled(true) 可设置是否支持;

  getSettings()方法可以获得当前WebView对象的WebSettings属性,通过这个属性可以给WebView获取或设置样式,比如例中设置的缩放和单列样式,双击上面WebView网页空白处可以放大该WebView;

  通过setWebViewClient(WebViewClient webviewclient)方法可以设置WebView响应点击的超链接,参数WebViewClient重写其中的shouldOverrideUrlLoading方法,实现你想做的事情就可以了,在这里面是可以拿到点击链接的url的;例中WebView1的点击会在WebView2中打开;

  覆盖onKeyDown方法是为了实现下面WebView的回退功能,否则的话会直接退出当前Activity;

  还有需要注意的是,在显示有图片和网格的的页面时,WebView的表现并不是很尽如人意的,这个问题大部分情况都是在服务器的页面上动手脚,参照wap网站页面的做法最好了.

  简单举例最常用的几个方法,想要深入学习和使用的话API还有很多方法。

本文发布:Android开发网
本文地址:http://www.jizhuomi.com/android/course/594.html
2016年7月11日
发布:鸡啄米 分类:Android开发教程 浏览: 评论:0