-
Notifications
You must be signed in to change notification settings - Fork 163
Appendix
- Soundcorset metronome & tuner
- SSH Beam
- Titan
- PonyNote
- Mocka
- Scaloid player
- Parse-scaloid
- ScaloidChat
- ScaloidCalculator
- Android MusicPlayer
- Free tether
- Douban android client
- L Camera
- ...more projects using Scaloid on github
-
Cover full Android API versions
Currently, only API level 10 is supported. Scaloid may not be compiled with below that API level, and new features introduced above that level are not fully covered. Some of the features to be covered are:- Fragment
- Action bar
-
Build an example Android app
Finish a Scala port of apidemos app and try another. -
Build a dedicated website
-
Write a complete API document
-
Write the Beginner's guide
-
Build an example of laying out multiple UI
-
Write a converter that turns an XML layout into a Scaloid code
A simple web application is demonstrated. Providing this functionality as an Eclipse or Intellij plugin would also be great. -
WYSIWYG layout builder
-
Cover full listener shortcuts
-
Cover OpenGL ES and renderscript
-
Automatically unregister SensorEventListener onStop()
-
Support Google services
Including Google Cloud Messaging (GCM)
You can always use plain-old Android API within your Scaloid project. If some feature of Scaloid is missing, buggy, or if you don't understand how to do it, don't worry, you have always a workaround.
This question is very frequent, but hard to answer, because the 'matureness' is not an objective term. Instead we divide it in several subquestions:
-
Blocker bug or API instability that prevents writing actual apps
There are no fatal bug on Scaloid. The basic API is quite stable in these days. -
Reference app that is popular
Scaloid is extensively used in Soundcorset, which is downloaded more than million times. It works nice on virtually every kind of Android devices that exists.
Xtend natively supports 1) converting Java bean style getter/setters into the assignment style 2) automatically shorten the clutters when calling one-method callback interface by converting it into closure-like style. Because these are language features, Xtend users can enjoy these features without any wrapper library. We hope that Scala also adopt these benefits soon.
However, We think that Scala is a better alternative for Android platform, because Scala is more mature than Xtend and has these advanced features:
-
Implicit conversion
Check implicit conversions section to see how Scaloid leverages it. -
Implicit parameter
Hiding some common values (e.g. context object, tag for logging, and layout context) from the parameter list is possible using Scala's implicit parameters. -
Advanced type system
Scaloid layout parameter is simple, intuitive, and type-safe. -
Traits
Many useful features such as automatic unregistering receivers are implemented as traits which permits multiple inheritance.
-
Type-safety
-
Runtime performance (and your precious battery)
See a benchmark
Because programming in Scala on Android is not a widely known practice yet, many people asks me basic questions about it. Here are some frequently asked questions:
For Scala + Android projects, using proguard is mandatory. After the library is reduced by proguard, overhead caused by the Scala standard library is about several hundred kilobytes, although it depends on how much you used the library in your code.
According to a benchmark, runtime performance of Scala is a little worse than that of Java. However, because most of the code using Scaloid is writing UI and core logic, the performance difference is nearly not noticeable. Still, the display will consume most of the battery life, not Scala.
Clean rebuild of compile-proguard-package-deploy takes some time (30~70 secs approx). However, if you set up incremental build, the build time becomes a matter of few seconds. Please refer to tips for faster development iteration.
It's not hard. There is a maven project template and a sbt project template.