Kotlin是一种基于Java虚拟机的静态类型编程语言,由JetBrains开发并且针对JVM、Android、浏览器插件等多个平台进行了适配。而安卓TV是指在用户通过电视或机顶盒使用智能电视设备时的软件系统。那么如何用Kotlin开发安卓TV App呢?接下来我们会进行详细介绍和讲解。
1. 创建安卓TV项目
首先,需要创建一个安卓TV项目。在Android Studio的欢迎页面,选择创建一个“Blank Activity”项目,在这里我们称之为“TVApp”,然后你可以在下一步界面选中启用“Android TV”选项,如图所示:
2. 配置Dependencies
在“build.gradle”文件中添加以下依赖项:
```
implementation 'com.android.support:leanback-v17:28.0.0'
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.72'
```
这些依赖项是用于支持安卓TV应用的常用UI控件和Kotlin语言。
3. 创建界面
接着,在“res/layout”文件夹下新建一个 XML 布局文件,如下所示:
```
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/grid_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:rowHeight="200dp"
app:numColumns="5" />
```
这个布局文件用于展示TVApp的主界面。
4. 创建Adapter
一个Adapter是用于在GridLayout中呈现内容的关键部分,我们需要为它创建一个类。在“Kotlin”文件夹下创建一个新文件,命名为“MainAdapter”,然后使用以下代码:
```
import android.support.v17.leanback.widget.HorizontalGridView
import android.support.v17.leanback.widget.Presenter
import android.support.v17.leanback.widget.PresenterSelector
import android.support.v17.leanback.widget.Row
import android.support.v17.leanback.widget.RowHeaderPresenter
import android.support.v17.leanback.widget.RowPresenter
import android.support.v17.leanback.widget.TvRowPresenter
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
class MainAdapter: PresenterSelector(){
private val mRows = ArrayList
fun addRow(row: Row) {
mRows.add(row)
}
override fun getPresenter(row: Any?): Presenter {
return TvRowPresenter()
}
override fun getPresenter(viewType: Int): Presenter {
return TvRowPresenter()
}
override fun getPresenters(): Array
return arrayOf(TvRowPresenter())
}
override fun getSelectionPresenter(): RowPresenter {
return TvRowPresenter()
}
override fun getHeaderPresenter(): RowHeaderPresenter {
return RowHeaderPresenter()
}
}
```
其中,TvRowPresenter是一个用于维护始终具有高度一致性行的类,是默认行布局。MainAdapter继承自PresenterSelector,并为GridLayout中的每一行添加一个Presenter。
5. 将Adapter与UI绑定
我们可以在MainFragment中使用以下代码:
```
class MainFragment : android.support.v17.leanback.app.browse.BrowseFragment() {
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
val grid_view = HorizontalGridView(activity)
val mainAdapter = MainAdapter()
//add rows to adapter ...code not included
grid_view.adapter = mainAdapter
grid_view.setItemViewCacheSize(10)
val cardPresenter = CardPresenter()
adapter = ArrayObjectAdapter(cardPresenter)
var header = HeaderItem(0L, "Title")
// add gridview to rows ...
val row = ListRow(header, mainAdapter.grid_view)
adapter!!.add(row)
onItemViewClickedListener = ListOnItemClickListener() // click listener for grid items
brand_color = ContextCompat.getColor(activity!!, R.color.primary)
mainFragmentRegistry.setFragmentFactory(ShimmerReceiverFragment.Factory(brand_color))
startEntranceTransition() // start animation
}
}
```
这个代码片段中,我们为GridLayout创建一个HorizontalGridView,并给它设置一个Adapter,然后将它添加到ListRow中。Adapter需要一些内容来呈现它的GridItems,这些内容可以通过Presenter类实现控制。
这些就是用Kotlin实现安卓TV App的基本步骤,然而,这在实现细节上并不够完整和完整。从这里开始,你可以在Kotlin中开发你的安卓TV App,并应用以上方法和技巧 。
总结:
本文主要介绍了如何用 Kotlin 开发安卓TV App。首先,我们需要创建一个安卓TV项目,并配置它所需要的Dependencies。接着,我们需要创建一个能够呈现内容的Adapter,而Adapter中的Presenter类和布局文件也需要我们单独创建。最后,我们将Adapter与UI绑定。在这个过程中,我们可以明显地了解到如何用Kotlin完成此类任务,并同时学习到用于安卓TV开发的一些基本技能和概念。