Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android 浏覽器開發實例

android 浏覽器開發實例

編輯:關於Android編程

android app需要通過手機顯示網頁信息還是比較常用的,比如我最近業余開發的 搶商鋪游戲,需要對游戲規則做說明,規則會比較多,而且要經常變動,就想到用網頁來展示,更新起來方便,不像應用,一旦發布出去,就很難更改。   言歸正傳,下面介紹下我對系統webview的使用,做的一個簡單浏覽器,無圖無真像,先看看圖(博客園不能傳圖片,等圖片功能恢復了再傳):           首先是布局文件的編輯activity_browser.xml     采用RelativeLayout布局,不知道為什麼采用LinearLayout布局不行。    浏覽器標題欄有三個控件,分別為Button, TextView, Button,用來執行返回,顯示網頁titile, 刷新操作。   在標題欄下面展示webview控件   復制代碼 <RelativeLayout  xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="match_parent"     android:layout_height="match_parent"       >      <RelativeLayout      android:layout_width="fill_parent"     android:layout_height="54dp"     android:id="@+id/title" >       <!-- 導航欄左邊按鈕 -->       <Button         android:id="@+id/nav_left_btn"         android:layout_width="50dip"         android:layout_height="45dip"         android:layout_centerVertical="true"         android:layout_gravity="center_vertical"         android:layout_marginLeft="8dp"         android:layout_alignParentLeft="true"         android:gravity="center"         android:visibility="invisible" >     </Button>       <!-- 導航欄文字 -->       <TextView         android:id="@+id/nav_titile_textview"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:layout_centerHorizontal="true"         android:layout_centerVertical="true"         android:gravity=""         android:text=""         android:textColor="@color/white"         android:textSize="20sp" />       <!-- 導航欄右邊按鈕 -->         <Button         android:id="@+id/nav_right_btn"         android:layout_width="50dip"         android:layout_height="45dip"         android:layout_centerVertical="true"         android:layout_gravity="center_vertical"          android:layout_alignParentRight="true"         android:layout_marginRight="8dp"         android:gravity="center"         android:visibility="invisible" >     </Button> </RelativeLayout>      <WebView   android:layout_width="fill_parent"   android:layout_height="fill_parent"   android:layout_below="@id/title"   android:id="@+id/webView"/>   </RelativeLayout> 復制代碼     接著就是Activity的實現部分          在實現webview的時候,有2個地方要注意下   (1)如果網頁是是中文,gbk編碼,必須設置webview的默認編碼值            webView.getSettings().setDefaultTextEncodingName("gbk");       (2)如果網頁有js,必須開啟js,不然顯示會有問題。特別是針對html5適配的網頁,我采用Jquery mobile 做的一個網頁,展示就有問題。剛開始只能顯示純文本,後來開啟了js執行權限,就能正常顯示了。   1 <span style="color: #ff0000;"><strong> webView.getSettings().setJavaScriptEnabled(true);</strong></span><br><br>---<br><br>   package com.onevo.activity;   import android.app.Activity; import android.app.ProgressDialog; import android.content.Intent; import android.graphics.Bitmap; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.view.View.OnClickListener; import android.webkit.WebChromeClient; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Button; import android.widget.TextView;   import com.onevo.R;   /**  * 顯示第tabhost 的第一個Activity,本activity 主要顯示設備列表  *   * @author Administrator  *   */ public class BrowserActivity extends Activity  {     private WebView webView;     private ProgressDialog mPgrogressDialog;     private TextView tv_title;           private Button btn_left;     private Button btn_right;           private String url = "http://114.215.171.166/level.html";           public void onCreate(Bundle savedInstanceState)     {                   super.onCreate(savedInstanceState);         setContentView(R.layout.activity_browser);                 //獲取傳遞的參數         Intent it = getIntent();         String u = it.getStringExtra("url");         if(!TextUtils.isEmpty(u)){             url = u;         }                   webView = (WebView) this.findViewById(R.id.webView);         tv_title = (TextView)this.findViewById(R.id.nav_titile_textview);         btn_left = (Button) this.findViewById(R.id.nav_left_btn);         btn_right =  (Button) this.findViewById(R.id.nav_right_btn);                   btn_left.setVisibility(View.VISIBLE);         btn_right.setVisibility(View.VISIBLE);         btn_left.setText("返回");         btn_right.setText("刷新");                   //返回事件         btn_left.setOnClickListener(new OnClickListener()         {                           @Override             public void onClick(View v)             {                  finish();             }         });                   //刷新事件         btn_right.setOnClickListener(new OnClickListener()         {                @Override             public void onClick(View v)             {                   mPgrogressDialog.show();                    webView.loadUrl(url);             }         });                   // 顯示網頁加載中的小菊華花             mPgrogressDialog =  new ProgressDialog(this);             mPgrogressDialog.setTitle("");             mPgrogressDialog.setMessage("正在加載網頁...");             mPgrogressDialog.show();                       webView.getSettings().setDefaultTextEncodingName("gbk");                           //在線程裡啟動網頁加載              new Thread(new Runnable()                 {                     @Override                     public void run()                     {                          webView.loadUrl(url);                                               }                 }).start();                 webView.getSettings().setJavaScriptEnabled(true);                             webView.setWebChromeClient(new WebChromeClient(){                 @Override                 public void onReceivedTitle(WebView view, String title)                 {                     // TODO Auto-generated method stub                     super.onReceivedTitle(view, title);                     final String tmpTitle = title;                     runOnUiThread(new Runnable()                     {                         @Override                         public void run()                         {                             tv_title.setText(tmpTitle);                         }                     });                 }               });                         webView.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);                                             runOnUiThread(new Runnable()                     {                                                   @Override                         public void run()                         {                               mPgrogressDialog.dismiss();                         }                     });                                      }                   @Override                  public void onPageStarted(WebView view, String url, Bitmap favicon)                    {                       super.onPageStarted(view, url, favicon);                   }               });      } }     至此,一個簡單的內嵌浏覽器就開發完成了。        如果用WebView點鏈接看了很多頁以後,如果不做任何處理,點擊系統返回(Back)鍵,整個浏覽器會調用finish()方法而結束自身,如果希望浏覽的網頁回退而不是退出浏覽器,需要在當前Activity中處理並消費掉該Back事件。       覆蓋Activity類的onKeyDown(int keyCoder,KeyEvent event)方法。   public boolean onKeyDown(int keyCode,KeyEvent event){      if(webView.canGoBack() && keyCode == KeyEvent.KEYCODE_BACK){        webview.goBack();// goBack()表示返回webView的上一頁面        return true;      }      return false;    }
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved