Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
List of projects using Scaloid
- Soundcorset metronome & tuner
- SSH Beam
- Scaloid player
- 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:
- 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)
FAQs about Scaloid
I can't use Scaloid because it does not provide a functionality X.
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.
Is the Scaloid mature enough for production Apps?
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.
Not strong, but it is steadily growing. Please refer to the list of projects that using Scaloid.
Why Scala rather than Xtend?
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:
Check implicit conversions section to see how Scaloid leverages it.
Advanced type system
Scaloid layout parameter is simple, intuitive, and type-safe.
Many useful features such as automatic unregistering receivers are implemented as traits which permits multiple inheritance.
Why Scala rather than JRuby?
Runtime performance (and your precious battery)
See a benchmark
FAQs about Scala on Android
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:
How big is the compiled apk?
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.
How much slower is the application?
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.
How much slower is the compilation?
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.