編輯:開發入門
Android 應用程序必須訪問位於 Internet 上的數據,而 Internet 數據可以有幾種不同的格式。本文將介紹在 android 應用程序中如何使用三種數據格式:
首先開發一個 Web 服務,將 CSV 數據轉換成 XML、JSON 和 protocol-buffers 格式。然後構建一個樣例 android 應用程序,可以從 Web 服務中以任何一種格式提取數據並將其解析並顯示給用戶。
要進行本文中的練習,您需要最新的 android SDK(參見 參考資料)和 Android 2.2 平台。SDK 還要求您安裝一個 Java™ 開發包(JDK);本文中使用了 JDK 1.6.0_17。您不需要有 Android 物理設備;所有代碼都將在 SDK 的 Android 仿真器中運行。本文並沒有教您如何進行 Android 開發,因此建議您熟悉 android 編程。當然,只憑借 Java 編程語言的知識也可以完成本文的學習。
您還需要一個 Java web 應用程序服務器來運行 android 應用程序使用的 Web 服務。此外,也可以將服務器端代碼部署到 Google App Engine。參見 下載 部分獲得完整的源代碼。
Day Trader 應用程序
您將開發一個簡單的 android 應用程序,叫做 Day Trader。Day Trader 允許用戶輸入一個或更多的股票代碼並獲取其所代表股票的最新價格信息。用戶可以指定數據使用的格式:XML、JSON 或 protocol buffers。實際的 android 應用程序通常不會提供此選擇,但是通過實現此功能,您可以了解如何讓您的應用程序處理每一種格式。圖 1 展示了 Day Trader 用戶界面:
圖 1. 運行中的 Day Trader 應用程序
文本框及其旁邊的 Add Stock 按鈕允許用戶輸入感興趣的每支股票的代碼。用戶按下 Download Stock Data 按鈕後,會從服務器請求所有這些股票的數據,在應用程序中解析並顯示在屏幕上。默認情況下,獲取的是 XML 數據。通過菜單,您可以在 XML、JSON 或 protocol buffers 數據格式間切換。
清單 1 顯示用於創建 圖 1 中所示 UI 的布局 XML:
清單 1. Day Trader 布局 XML
<?xml version="1.0" encoding="utf-8"?> <LinearLayout XMLns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content"> <EditText android:id="@+id/symbol" android:layout_width="wrap_content" android:layout_height="wrap_content" android:width="120dip"/> <Button android:id="@+id/addBtn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/addBtnLbl"/> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/symList" /> <Button android:id="@+id/dlBtn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/dlBtnLbl" /> </LinearLayout> <ListVIEw android:id="@android:id/list" android:layout_height="fill_parent" android:layout_width="fill_parent" android:layout_weight="1" /> </LinearLayout>
清單 1 中的大部分代碼都簡單明了。可以看到幾個小部件創建了 圖 1 所示的輸入和按鈕。還會看到一個 ListVIEw
,android 小部件中真正的瑞士軍刀。此 ListVIEw
將用從服務器下載的股票數據填充。清單 2 顯示了控制該視圖的 Activity
:
清單 2. Day Trader 主活動
public class Main extends ListActivity { private int mode = XML; // default @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final EditText input = (EditText) findViewById(R.id.symbol); final TextView symbolsList = (TextView) findViewById(R.id.symList); final Button addButton = (Button) findViewById(R.id.addBtn); final Button dlButton = (Button) findViewById(R.id.dlBtn); addButton.setOnClickListener(new OnClickListener(){ public void onClick(View v) { String newSymbol = input.getText().toString(); if (symbolsList.getText() == null || symbolsList.getText().length() == 0){ symbolsList.setText(newSymbol); } else { StringBuilder sb = new StringBuilder(symbolsList.getText()); sb.append(","); sb.append(newSymbol); symbolsList.setText(sb.toString()); } input.setText(""); } }); dlButton.setOnClickListener(new OnClickListener(){ public void onClick(VIEw v) { String symList = symbolsList.getText().toString(); String[] symbols = symList.split(","); symbolsList.setText(""); switch (mode){ case JSON : new StockJSonParser().execute(symbols); break; case PROTOBUF : new StockProtoBufParser().execute(symbols); break; default : new StockXMLParser().execute(symbols); break; } } }); } }
此 Activity
設置了 清單 1 中 XML 文件的布局,它將幾個事件處理程序連接起來。首先,對於 Add Stock 按鈕而言,代碼讀取文本框中的代碼並將其添加到 symList TextVIEw
中,用逗號分隔每個代碼。接下來,對於 Download 按鈕而言,處理程序從 symList TextVIEw
中讀取數據,然後 —基於 mode
變量— 使用三個不同的類之一從服務器下載數據。菜單設置 mode
變量的值;這個代碼不是很重要,因此我在 清單 2 中省略了它。在了解各種數據下載/解析類之前,我先為您展示一下服務器如何提供此數據。
為了引入這個概率 首先從需求說起 即:現有某Activity專門用於手機屬性設置 那麼應該如何做呢?根據已學知識 很快一個念頭閃過 即:Activity + Prefe
用Intent實現一個簡單的短信程序和電話撥號程序一樣,短信也是任何一款手機不可或缺的基本應用,是使用頻率最高的程序之一。現 在,我們再實現一個自己的短信程
公共交通減少了交通擁擠和由此產生的污染。同時還降低了用戶的壓力水平和需要支付的費用。現在許多 Web 站點和移動應用程序幫助全球各個城市的乘客,購物者和游客成為合乎道德
概述Android 包括一個應用程序框架、幾個應用程序庫和一個基於 Dalvik 虛擬機的運行時,所有這些都運行在 Linux® 內核之上。通過利用 Linux