自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用jQuery Mobile實現(xiàn)手機新聞瀏覽器(第三章)

移動開發(fā) 移動應(yīng)用
在本篇教程中,將詳細講解如何將已經(jīng)實現(xiàn)的web應(yīng)用遷移到Android上去。注意的是,本文希望讀者擁有一點基礎(chǔ)的Android知識。

在本教程的前兩篇文章中,筆者分別向大家介紹了使用jQuery Mobile框架如何去設(shè)計手機新聞瀏覽器,其中實現(xiàn)了一個WEB版本的新聞瀏覽器,在本教程的***一篇中,將講解如何將已實現(xiàn)的web版本的新聞瀏覽器遷移到Android手機中去,注意的是,本文希望讀者擁有一點基礎(chǔ)的Android知識。

[[36960]]

遷移到Android應(yīng)用中去

在Android應(yīng)用中,將會使用index.html作為界面的布局,我們將編寫一個Android的Activity類將index.html整合到android應(yīng)用中去。

修改index.html

首先,將index.html中的NEWS_URI修改:

  1. var NEWS_URI = 'http://rss.news.yahoo.com/rss/'

因為我們在這里不再需要使用bridge.php了,因為我們將index.html整合到了Android應(yīng)用中去,因此不再存在跨域ajax訪問問題,接下來作如下修改:

  1. var EMPTY = ''
  2. ... 
  3. function changeLocation(varURI){ 
  4.   showProgress(); 
  5.   $.get(EMPTY,function(data){ 
  6.     window.location = varURI; 
  7.   }); 

changeLocation()方法將會在android.webkit.WebViewClient中被調(diào)用。這個方法的主要作用是當(dāng)從新聞分類頁面跳轉(zhuǎn)到新聞詳細頁面時使用。

1、首先通過showProgress()來顯示進度圖標的等待狀態(tài);

2、jQuery的get()方法中實際上是一個特定的jQuery ajax()方法,在get方法中,我們傳入一個空的字符串和一個回調(diào)的事件句柄,去設(shè)置window.location為我們要查看的具體新聞內(nèi)容頁面的地址。當(dāng)新聞內(nèi)容詳細頁加載完畢后,就會替換掉等待的圖標,顯示新聞內(nèi)容頁的詳細內(nèi)容;

3、因為在web版本中,是存在瀏覽器本身的進度條,因此changeLocation方法倒不一定需要,但在手機設(shè)備上,有一個等待的圖標是能給用戶良好的用戶體驗的。

編寫Activity類

接下來,編寫NewsActivity類,代碼如下:

  1. package com.news; 
  2.  
  3. import android.app.Activity; 
  4. import android.webkit.WebView; 
  5. import android.os.Bundle; 
  6. ... 
  7. public class NewsActivity extends Activity { 
  8.     WebView mWebView; 
  9.  
  10.   public void onCreate(Bundle savedInstanceState) { 
  11.     super.onCreate(savedInstanceState); 
  12.     setContentView(R.layout.main); 
  13.  
  14.     mWebView = (WebView) findViewById(R.id.webview); 
  15.     mWebView.setWebViewClient(new NewsClient()); 
  16.     mWebView.getSettings().setJavaScriptEnabled(true); 
  17.     mWebView.getSettings().setDomStorageEnabled(true); 
  18.     mWebView.loadUrl("android_asset/www/index.html"); 
  19.   } 
  20.   ... 

1、首先在onCreate方法中,調(diào)用了setContentView方法加載了res/layout文件夾下的R.layout.main布局文件;

2、接下來,我們通過findViewById(R.id.webview)得到了一個WebView控件的實例,并設(shè)計一個自定義的WebViewClient實例作為給WebView控件的參數(shù),這個自定義的WebViewClient我們命名為NewsClient,我們稍后會介紹。接著我們設(shè)置這個WebView容器能支持Javascript和Dom;

3、***,使用loadUrl將之前我們做的android_asset/www/index.html加載進來,在新聞詳細內(nèi)容頁中,當(dāng)用戶點后退按鈕后,會回到新聞分類頁,在Android中,我們可以捕捉其onKeyDown事件代碼,如下:

  1. public class NewsActivity extends Activity { 
  2.     WebView mWebView; 
  3.   public boolean onKeyDown(int keyCode, KeyEvent event) { 
  4.     if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) { 
  5.       mWebView.goBack(); 
  6.       return true
  7.     } 
  8.     return super.onKeyDown(keyCode, event); 
  9.   } 
  10.   ... 

接下來看下我們?nèi)绾尉帉懸粋€自定義的WebViewClient,代碼如下:

  1. public class NewsActivity extends Activity {  
  2.     WebView mWebView;  
  3.   private class NewsClient extends WebViewClient {  
  4.   
  5.     public boolean shouldOverrideUrlLoading(WebView view, String url) {  
  6.       view.loadUrl("javascript:changeLocation('" + url + "')");  
  7.       return true;  
  8.     }  
  9.   }  
  10. ...  
  11. }  

首先,我們繼承了WebViewClient這個Android內(nèi)置的瀏覽器類,并重寫了其中的shouldOverrideUrlLoading方法,在這個方法中,調(diào)用了之前寫的changeLocation方法,而如果我們不定義自己的WebViewClient,那么新聞詳細內(nèi)容頁將會在顯示在一個單獨的新打開的瀏覽器中,而我們希望新聞內(nèi)容頁只是顯示在同一個瀏覽器頁面中。#p#

AndroidManifest.xml的配置

接下來,我們來看下AndroidManifest.xml的配置:

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
  3.   package="com.news" android:versionCode="1" android:versionName="1.0"> 
  4.     <application android:icon="@drawable/icon" android:label="@string/app_name"> 
  5.       <activity android:name=".NewsActivity" android:configChanges="orientation|keyboardHidden" 
  6.         android:label="@string/app_name"> 
  7.           <intent-filter> 
  8.             <action android:name="android.intent.action.MAIN" /> 
  9.             <category android:name="android.intent.category.LAUNCHER" /> 
  10.           </intent-filter> 
  11.       </activity> 
  12.     </application> 
  13.     <uses-permission android:name="android.permission.INTERNET" /> 
  14. </manifest> 

For a general discussion on the AndroidManifest.xml file refer to the official reference. In that file, there are two particular items worthy of commenting on.

1、以上其實是一個很典型的Android配置文件,但注意的是,我們使用了configChanges屬性,這個屬性是設(shè)定了當(dāng)手機的屏幕由橫屏與豎屏切換時以及當(dāng)手機鍵推上合上時,應(yīng)用程序的顯示界面也會隨著改動,而不是被銷毀;

2、因為我們要訪問互聯(lián)網(wǎng),所以要在配置文件中配置訪問網(wǎng)絡(luò),必須添加android.permission.INTERNET權(quán)限。

strings.xml

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <resources> 
  3.   <string name="app_name">News</string> 
  4. </resources> 

在Strings.xml的資源文件中,定義了應(yīng)用程序的名稱,這個名稱將會顯示在程序的啟動欄,應(yīng)用程序的標題欄和應(yīng)用程序的管理設(shè)置中,如下面圖所示:

AndroidManifest.xml的配置

 #p#

設(shè)計應(yīng)用程序的啟動按鈕

設(shè)計應(yīng)用程序的啟動按鈕

接下來創(chuàng)建應(yīng)用程序的啟動按鈕, Android官方提供了按鈕設(shè)計指南(http://developer.android.com/guide/practices/ui_guidelines/icon_design.html),在其中可以下載各類Adobe的PSD格式按鈕文件,我們下載了其中的icon_templates-v2.0.zip并且選擇了如下兩個按鈕作為模版 ,并且通過photoshop在上面添加了News的文字,之后根據(jù)Android的指引,把這些按鈕以低,中,高三個分辨率分別設(shè)計復(fù)制一份,它們的尺寸分別為36*36,48*48和72*72pixel,分別放到res\drawable-ldpi,res\drawable-mdpi和res\drawable-hdpi文件夾中。

Android應(yīng)用的部署導(dǎo)入

到此為止,我們已經(jīng)把Android版本的程序?qū)懲炅?,接下來講解下如何將文中附件的Android代碼導(dǎo)入到Eclipse中以方便大家閱讀。代碼使用如下的Android SDK和工具開發(fā):

Android SDK revision 8.

Eclipse IDE version 3.5.

Android Development Tools (ADT), version 8.0.1.

項目能在Android 2.2,2.3上運行。首先我們在Eclipse中選擇“Importing The Project”,然后將附件中的工程項目導(dǎo)入,在導(dǎo)入后,記得在Window -> Preferences -> Android中,選擇編譯項目的Android的SDK,這里選擇Android的SDK,如下圖:

設(shè)計應(yīng)用程序的啟動按鈕

***介紹下Android項目的文件結(jié)構(gòu)如下圖:

設(shè)計應(yīng)用程序的啟動按鈕

Android新聞瀏覽器的實際運行效果圖

下面是在Android上和iphone 4上分別運行的效果圖,左邊的是iphone 4,右邊的是Android,可以看到,使用jQuery Mobile設(shè)計出來的項目的確有很好的兼容性。

設(shè)計應(yīng)用程序的啟動按鈕

設(shè)計應(yīng)用程序的啟動按鈕

設(shè)計應(yīng)用程序的啟動按鈕

總結(jié)

在本系列教程中,介紹了如何使用jQuery Mobile框架以及其他jQuery插件設(shè)計了一個基于WEB版本的新聞RSS閱讀瀏覽器.

下載附件

***還指導(dǎo)如何將其遷移到Android上,讀者可以從中學(xué)到大量關(guān)于jQuery Mobile的實用知識和技巧,請點擊這里下載本文的附件。

責(zé)任編輯:佚名 來源: IT168
相關(guān)推薦

2011-07-20 10:56:53

jQuery Mobi手機新聞瀏覽器

2011-07-20 10:27:18

jQuery Mobi手機新聞瀏覽器

2014-01-16 14:30:43

storm安裝部署

2012-02-16 09:56:29

2011-07-19 15:06:25

jQuery Mobi

2010-12-21 10:11:35

手機瀏覽器

2010-12-08 10:36:34

系統(tǒng)架構(gòu)設(shè)計師

2012-03-20 11:22:02

QQ手機瀏覽器

2020-12-04 12:22:03

鴻蒙UI組件

2023-03-02 20:59:41

特斯拉機器人

2012-03-20 13:27:31

Internet Ex

2009-03-15 10:21:18

YahooOpera瀏覽器

2012-03-20 11:35:32

傲游手機瀏覽器

2012-11-27 10:03:48

手機瀏覽器

2012-03-20 13:12:38

百度手機瀏覽器

2009-06-08 10:35:18

2012-03-20 11:25:07

360手機瀏覽器

2010-11-01 17:49:30

2009-03-05 09:44:41

Apple瀏覽器Windows Mob

2012-03-04 20:31:37

Android
點贊
收藏

51CTO技術(shù)棧公眾號