scala是一种面向对象的运行在jvm上的函数式语言,它可以很大程度缩减代码长度,它和原生java程序几乎兼容,所以也可以和java程序混写.也意味着可以用它来写android程序.
为了更好的使用scala的特性,需要自己实现很多android函数的包装,scaloid就是其中比较好的一个.scaloid 地址 https://github.com/pocorall/scaloid ,也可以自己fork对它做一些调整.下面用一个简单的例子来介绍下scaloid的使用.
创建一个android项目:
android create project -n Android_Optionmenu -p Android_Optionmenu -k org.ffmmx.example.android_optionmenu -a MainActivity
这里需要使用sbt 和 sbt android 的插件,所以在项目文件夹下面创建一个project文件夹,然后在里面创建plugins.sbt 文件,加入android 插件的依赖配置:
mkdir project touch plugins.sbt echo 'addSbtPlugin("com.hanhuy.sbt" % "android-sdk-plugin" % "1.0.8")\n\n'如果希望使用idea ide的话,可以加入sbt idea的插件
mkdir project touch project/plugins.sbt echo 'addSbtPlugin("com.hanhuy.sbt" % "android-sdk-plugin" % "1.0.8")\n\naddSbtPlugin("com.hanhuy.sbt" % "sbt-idea" % "1.6.0")\n\n' > project/plugins.sbt然后编写该项目的构建信息,创建build.sbt,加入项目的相关信息如,项目名称(name),版本(version),scala的版本,以及项目的依赖信息等
touch build.sbt echo 'name := "Android_Optionmenu"\n\nversion := "1.0"\n\nscalaVersion := "2.10.2"//可省略\n\nandroid.Plugin.androidBuild//引入android sdk 插件环境\n\nlibraryDependencies ++= Seq(\n\t"org.scaloid" % "scaloid_2.10" % "2.4-8-SNAPSHOT"\n)//加入scaloid的依赖\n\n' >> build.sbt这样程序的环境设置就完了.启动sbt update,下载相关依赖之后,就可以使用scaloid编写android程序了,如:
activity.scala
package org.ffmmx.example.android_optionmenu import org.scaloid.common._ import android.view.Menu class MainActivity extends SActivity{ override def basis: SActivity = this implicit override val ctx: SActivity = basis onCreate { setContentView(R.layout.main) } override def onCreateOptionsMenu(menu: Menu): Boolean = { getMenuInflater.inflate(R.menu.option_menu,menu) if(menu==null) false else true } }string.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">选项菜单</string> <string name="favor">我的收藏</string> <string name="night_mode">夜间模式</string> <string name="text_mode">无图模式</string> <string name="application_recommendation">应用推荐</string> <string name="feedback">意见反馈</string> <string name="check_update">检查更新</string> <string name="about">关于</string> <string name="quit">退出</string> </resources>option_menu.xml
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <group android:id="group1"> <item android:id="item1" android:title="@string/favor"></item> <item android:id="item2" android:title="@string/night_mode"></item> <item android:id="item3" android:title="@string/text_mode"></item> <item android:id="item4" android:title="@string/application_recommendation"></item> </group> <group android:id="group2"> <item android:id="item5" android:title="@string/feedback"></item> <item android:id="item6" android:title="@string/check_update"></item> <item android:id="item7" android:title="@string/about"></item> <item android:id="item8" android:title="@string/quit"></item> </group> </menu>手动打开模拟器,在sbt控制台下,运行android:run 就可以在模拟器上运行了.介绍2个常用命令android:install 安装package到模拟器或手机设备上,android:package 构建apk包.