Android TV 开发入门

2,653 阅读1分钟
  做TV端开发也有段时间了,一直想着把学到的知识记录下来,就从这里开始吧

官方文档:developer.android.google.cn/training/tv…
学习一门技术最好的学习资料就是官方文档

一、运行一个Demo跑起来

首先我们创建一个项目
image.png 然后在AndroidManifest.xml中activity的标签中加入

   <category android:name="android.intent.category.LEANBACK_LAUNCHER" />

App将被识别为TV应用

接着配置好模拟器
创建模拟器时分类我们需要选择TV,这样才好与实际运行时的电视盒子匹配 image.png 然后我们打开activity_main.xml并加入如下代码

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/drawable_btn_selector"
        android:focusable="true"
        android:paddingStart="10dp"
        android:paddingTop="5dp"
        android:paddingEnd="10dp"
        android:paddingBottom="5dp"
        android:text="Hello"
        android:textColor="@color/drawable_text_selector"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="100dp"
        android:background="@drawable/drawable_btn_selector"
        android:focusable="true"
        android:paddingStart="10dp"
        android:paddingTop="5dp"
        android:paddingEnd="10dp"
        android:paddingBottom="5dp"
        android:text="World!"
        android:textColor="@color/drawable_text_selector"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</LinearLayout>
创建drawable_btn_selector.xml放入res/drawable加入如下代码
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="true">
        <shape>
            <solid android:color="@android:color/holo_orange_dark" />
        </shape>
    </item>
</selector>

创建drawable_text_selector.xml放入res/color加入如下代码

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/white" android:state_focused="true"  />
    <item android:color="@color/black" android:state_enabled="true" />
</selector>

然后运行,

image.png 即可出现上图中的画面,如果文字没有变成白色,键盘上方向键按“下”键 ,即可出现焦点选中,这时按下方向键焦点可在两个视图之间跳转

二、说明

安卓当中分为触摸模式选择模式,选择模式下只有一个视图可以获得焦点,当你使用键盘或者遥控器的“上下左右”键进行导航时,系统会搜索对应方向上的焦点并且让它获得焦点
细心的读者会发现上面我们创建的drawable_btn_selector.xml和drawable_text_selector.xml中包含了android:state_focused="true"的标记,这就是视图被赋予焦点时所具有的状态
而在activity_main.xml中,两个TextView都具有android:focusable="true"属性,这会告知系统此视图可以获得焦点