使用sbt scaloid构建编写android程序

    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包.
如果使用idea的话,可以运行sbt idea,然后用idea打开,给它设置一个运行实例,在before launch部分去掉make,加上sbt android里面内容写android:package就好了,然后就可以使用idea在运行和调试这个程序了.


你可能感兴趣的:(android,scala,scaloid)