рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ, рдореИрдВ рдЖрдкрдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реВрдБ рдХрд┐ рдЖрдк рдЧреНрд░рд╣рдг рдореЗрдВ рдЕрдкрдиреА рдореМрдЬреВрджрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╕реНрдХрд╛рд▓рд╛ рдХреЛ рдХреИрд╕реЗ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЪрд▓реЛ рдЪрд▓рддреЗ рд╣реИрдВ!
рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдкреЛрд╕реНрдЯ рдкрд░ рдереЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
рдпрд╣ рдПрдХрд▓реЗрдХрд┐рди рдЖрддреНрдорд╛ рд╣рдореЗрд╢рд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдкреВрдЫрддреА рд╣реИред рдЪреАрдВрдЯреА рдпрд╛ рдЕрдиреНрдп рд░рдХреНрддрд╕реНрд░рд╛рд╡реЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдкрдХреЛ рд╕реНрдХрд╛рд▓рд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╣ рд╡рд┐рдзрд┐ рдмрд╣реБрдд рд╕рд░рд▓ рдФрд░ рддреЗрдЬ рд╣реИред рдФрд░ рдЧреНрд░рд╣рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрджреНрднреБрдд рдкреНрд▓рдЧ-рдЗрди
рдЯреНрд░реАрд╢рдХрд░ рд╣рдорд╛рд░реА рдорджрдж рдХрд░реЗрдВрдЧреЗ
редрдФрд░ рдЗрд╕рд▓рд┐рдП, рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЧреЛрджреА рдирд╣реАрдВ рдкрдврд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдореИрдВ рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рдореЗрд░реЗ рд╕рд╛рде рдЙрддреНрдкрдиреНрди рд╣реБрдИ рдПрдХ рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ред
- рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░реНрдпрд╛рд╡рд░рдг (Google рд╕реЗ рдЧреНрд░рд╣рдг + рдкреНрд▓рдЧрдЗрди) рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдкрдХреЛ рдкреНрд▓рдЧрдЗрди (рд╕реНрдХрд╛рд▓рд╛ рдЖрдИрдбреАрдИ) рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рдЧреНрд░рд╣рдг рд╕рд╣рд╛рдпрддрд╛ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ-> рдирдпрд╛ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдЖрдЗрдЯрдо рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ , рд╕рд╛рдЗрдЯ рдХреЛ рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ: download.scala-ide.org/releases-28/2.0.0-beta рдФрд░ рдЕрдЧрд▓рд╛ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдЖрджрд┐ред
- рдЕрдЧрд▓рд╛, рдЙрд╕реА рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдореЗрдВ рд╣реИ, рдЯреНрд░реАрд╢рдХрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ, рдФрд░ рд╕рд╛рдЗрдЯ рдкрддреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ: treehaker.googlecode.com/svn/trunk/update_site
рд╡рд╣ рд╕рдм рд╣реИ! рд╣рдордиреЗ рд╡рд╣ рд╕рдм рдХреБрдЫ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдЬрд┐рд╕рдХреА рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИред
- рдФрд░ рдЗрд╕рд▓рд┐рдП, рдПрдХ рдирдпрд╛ рдПрдВрдбреНрд░реЙрдЗрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ
- рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдЖрдЗрдЯрдо рдореЗрдВ, рд╕реНрдХреЗрд▓ рдкреНрд░рдХреГрддрд┐ рдЙрдк-рдЖрдЗрдЯрдо рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред рдФрд░ рд▓реЛ! рд╕реНрдХрд╛рд▓рд╛ - рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛
- рдЕрдЧрд▓рд╛, рдлрд┐рд░ рд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рд╕реВрдЪреА рдореЗрдВ Add / Remove TreeShaker рдЖрдЗрдЯрдо рджреЗрдЦреЗрдВ
рдЕрдЧрд▓рд╛, рд╣рдо рдЕрдкрдиреЗ рдЬрд╛рд╡рд╛ рдХреЛрдб рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдбрд╛рд▓реЗрдВ:
import android.os.Bundle import android.view.View import android.widget.TextView import android.widget.Button import android.app.Activity import R._ class ThreeShakerTutorialActivity extends Activity { lazy val textView = findViewById(R.id.text).asInstanceOf[TextView] lazy val button = findViewById(R.id.button).asInstanceOf[Button] override def onCreate(savedInstanceState: Bundle) { super.onCreate(savedInstanceState) setContentView(R.layout.main) button.setOnClickListener((v: View) => textView.setText("Hello Scala")) } implicit def func2OnClickListener(func: (View) => Unit) = { new View.OnClickListener() { override def onClick(v: View) = func(v) } } }
LinearLayout рдореЗрдВ main.xml рд▓реЗрдЖрдЙрдЯ рдореЗрдВ, рдХреЛрдб рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЖрдИрдбреА-рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдмрдЯрди рдФрд░ рдЯреЗрдХреНрд╕реНрдЯ рджреГрд╢реНрдп рдЬреЛрдбрд╝реЗрдВ (рдорд╛рд░реНрдХрдЕрдк Google рдХреЛрдб рдкрд░ рд╡рд┐рдХреА рдореЗрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рд╣рдм-рдкрд╛рд░реНрд╕рд░ рд╕реЗ рдбрд░рддрд╛ рд╣реВрдВ)ред рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рд╣реИ!
рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рд╡рд╣рд╛рдБ рдПрдХ рд╣реИред рдЕрд░реНрдерд╛рддреН, рдХреЛрдб
button.setOnClickListener((v: View) => textView.setText("Hello Scala"))
рдПрдХ рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИред рд╣рдо рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдареАрдХ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдмреБрд░рд╛ рддрд░реАрдХрд╛ рд╣реИ:
button.setOnClickListener(func2OnClickListener((v: View) => textView.setText("Hello Scala")))
рдФрд░ рд╕рд╣реА рдПрдХ, рдпрд╣ рдХреЛрдб рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
button.setOnClickListener((v: View) => textView.setText("Hello Scala"))
рдФрд░ рд╡рд┐рдзрд┐ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрд╢реЛрдзрди рдХрд░реЗрдВ:
implicit def func2OnClickListener(func: (View) => Unit): View.OnClickListener = { new View.OnClickListener() { override def onClick(v: View) = func(v) } }
рдЗрд╕ рдорджрдж рдХреЗ рд▓рд┐рдП romik
habrayuzer рдХрд╛ рдзрдиреНрдпрд╡рд╛рджред
рд╣рд╛рд▓рд╛рдБрдХрд┐ рдореИрдВ рд╕реНрдХрд╛рд▓рд╛ рдХреЛ рдЕрдЪреНрдЫреЗ рд╕реНрддрд░ рдкрд░ рдирд╣реАрдВ рдЬрд╛рдирддрд╛, рд▓реЗрдХрд┐рди рдЕрдВрддрд░реНрдЬреНрдЮрд╛рди рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реИ! рдпрд╣ рдХрд┐рд╕реА рддрд░рд╣ рдЕрдЬреАрдм рд╣реИ рдХрд┐ рд▓реЗрдЦрдХреЛрдВ рдиреЗ рдЗрд╕ рдХреНрд╖рдг рдХреЛ рдиреЛрдЯрд┐рд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛!
рдЬреНрдЮрд╛рдиреА рд▓реЛрдЧ рд╕рдордЭрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЧрд▓рддреА рдХреНрдпреЛрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓реЗрдЦрдХ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреБрдЫ рднреВрд▓ рдЧрдПред
рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдмрд┐рд▓реНрдбрд░реНрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
- Android рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ
- Android рдкреНрд░реА рдХрдВрдкрд╛рдЗрд▓рд░
- рд╕реНрдХрд╛рд▓рд╛ рдмрд┐рд▓реНрдбрд░
- Treeshaker
- Android рдкреИрдХреЗрдЬ рдмрд┐рд▓реНрдбрд░
рдЕрдиреНрдпрдерд╛, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдФрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдХреНрд▓рд╛рд╕рдиреЙрдЯрдлрд╝рд╛рдЙрдВрдб рдХреЛ рдПрдореБрд▓реЗрдЯрд░ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдбреЗрдореЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ -
рдпрд╣рд╛рдБ