Scala can be thought of as a better Java. To start with, you don’t need as many
semicolons. But Scala gives you the power of modern abstractions. Traits,
implicits, type-checked null, blocks–everything you really need to get some
solid coding done.

As an example of what Scala can do for your app, take this simple project: a
button which, when pressed, shows a toast:

packagecom.thoughtbot.helloscalaimport_root_.android.app.Activityimport_root_.android.os.Bundleimport_root_.android.widget.Toastimport_root_.android.view.Viewimport_root_.android.view.View.OnClickListenerimport_root_.android.widget.ButtonclassHelloActivityextendsActivity{overridedefonCreate(savedInstanceState:Bundle){super.onCreate(savedInstanceState)setContentView(R.layout.main)valbutton=findViewById(R.id.button).asInstanceOf[Button]button.setOnClickListener(newView.OnClickListener(){defonClick(v:View){Toast.makeText(this,"You have clicked the button",Toast.LENGTH_LONG).show()}})}}

This is basically the Java version without semicolons. But we can spruce it up
with a trait and an implicit:

This adds an onClick method to Views and a findView method for
Activities. Life just got a little more functional:

packagecom.thoughtbot.helloscalaimport_root_.android.app.Activityimport_root_.android.os.Bundleimport_root_.android.widget.Toastimport_root_.android.view.Viewimport_root_.android.widget.ButtonimportFindView._classHelloActivityextendsActivitywithFindView{overridedefonCreate(savedInstanceState:Bundle){super.onCreate(savedInstanceState)setContentView(R.layout.main)findView[Button](R.id.button).onClick{view:View=>Toast.makeText(this,"You have clicked the button",Toast.LENGTH_LONG).show()}}}

Take this concept as far as you need: a doInBackground method for functions, a
withState-like function for PreferenceManager, a caching wrapper for URLs–the sky is the limit here.