Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android系統教程 >> Android開發教程 >> 手機上的Scala - 使用Android、Scala和Eclipse創建移動應用程序

手機上的Scala - 使用Android、Scala和Eclipse創建移動應用程序

編輯:Android開發教程

先決條件

在本文中,我們將創建一個在 Android 設備上運行的移動應用程序。您將需 要安裝 Android SDK;本文使用 V1.5 SDK。應用程序代碼將用Scala編程語言編寫。如果您從來沒用過 Scala,那麼沒有關系,因為本文將解釋 Scala 代碼 。但是,即使您不熟悉 Scala,建議您至少熟悉 Java 語言。本文使用 Scala V2.7.5 進行開發。對於 Android 和 Scala 都提供了很好的 Eclipse 插件。本 文使用 Eclipse V3.4.2 和 Android Development Tools(ADT) V0.9.1 以及 Scala IDE 插件 V2.7.5。

設置

編寫 Android 應用程序聽起來像是一個復雜的命題。Android 應用程序在它 們自己的虛擬機中運行:Dalvik 虛擬機。但是,Android 應用程序的構建路徑 是開放的。下面表明了我們將使用的基本策略。

圖 1. Android 上 Scala 的構建路徑

其思想是,我們首先將所有 Scala 代碼編譯成 Java 類文件。這是 Scala 編譯器的工作,所以這方面沒什麼太復雜的事情。接下來,獲取 Java 類文件, 使用 Android dex 編譯器將類文件編譯成 Android 設備上的 Dalvik VM 使用 的格式。這就是所謂的 dexing,也是 Android 應用程序的常規編譯路徑。通常 ,要經歷從 .java 文件到 .class 文件再到 .dex 文件的過程。在本文,惟一 不同的是我們從 .scala 文件開始。最後,.dex 文件和其他應用程序資源被壓 縮成一個 APK 文件,該文件可安裝到 Android 設備上。

那麼,如何讓這一切發生?我們將使用 Eclipse 做大部分工作。但是,此外 還有一個較復雜的步驟:要讓代碼運行,還需要來自標准 Scala 庫中的代碼。 在典型的 Scala 安裝中,這是 /lib/scala-library.jar 中一個單獨的 JAR。 但是,這個 JAR 包括一些不受 Android 支持的代碼。有些代碼需要稍作調整, 有些代碼則必須移除。scala-library.jar 的定制構建是運行得最好的,至少目 前是這樣。我們將把這個 JAR 稱作 Android 庫 JAR。

有了這個 JAR,剩下的事情就很容易了。只需使用 Eclipse 的 ADT 插件創 建一個 Android 項目。然後將一個 Scala 特性(nature)添加到項目中。用前 面談到的 Android 庫替代標准的 Scala 庫。最後,將輸出目錄添加到類路徑中 。現在,可以開始了。主 Scala 站點對此有更詳細的描述。現在,我們有了基 本的設置,接下來看看我們將使用 Scala 創建的 Android 應用程序。

UnitsConverter

現在,我們知道如何利用 Scala 代碼,將它轉換成將在 Android 設備上運 行的二進制格式,接下來可以使用 Scala 創建一個移動應用程序。我們將創建 的應用程序是一個簡單的單位轉換應用程序。通過這個應用程序可以方便地在英 制單位與公制單位之間來回轉換。這是一個非常簡單的應用程序,但是我們將看 到,即使是最簡單的應用程序也可以從使用 Scala 中獲益。我們首先看看 UnitsConverter 的布局元素。

創建布局

您也許對編寫手機上運行的 Scala 感到興奮,但是並非所有的移動開發編程 都應該用 Scala 或 Java 語言完成。Android SDK 提供了一種很好的方式,使 用基於 XML 的布局系統將用戶界面代碼與應用程序邏輯分離。我們來看看本文 中的應用程序的主要布局文件,如清單 1 所示。

清單 1. Converter 應用程序的主要布局

<?xml  version="1.0" encoding="utf-8"?>
<RelativeLayout  xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"  android:layout_height="fill_parent"
   android:gravity="center_horizontal" android:padding="10px"
   >
   <TextView android:id="@+id/prompt_label"  android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="@string/prompt_metric"/>
   <EditText android:id="@+id/amount"  android:layout_below="@id/prompt_label"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"/>
   <TextView android:id="@+id/uom_label"
     android:layout_below="@id/amount"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="@string/uom"/>
   <Spinner android:id="@+id/uom_value"
     android:layout_below="@id/uom_label"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"/>
   <Button android:id="@+id/convert_button"
     android:layout_below="@id/uom_value"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="@string/convert_button_label"/>
   <TextView android:id="@+id/result_value"
     android:layout_below="@id/convert_button"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"/>
</RelativeLayout>

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved