android 瀏覽器開發執行個體

來源:互聯網
上載者:User

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;   }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.