版权声明:本文为博主原创翻译文章,转载请注明出处。
###Android TV 应用开发介绍 目前,我们还没有足够的Android TV应用开发介绍。 在本系列教程中,我将介绍如何开发Android TV应用程序。 这篇文章的目的是了解Android“TV”特定的代码实现,特别是关注UI实现。
因为UI是Android手机应用和Android TV应用之间最大的区别之一。 我们需要使UI适合电视使用,例如我们应该制作一个应用程序,以便我们可以使用↑↓→←方向键导航应用程序,而不是触摸板导航。 因为用户使用遥控器,并且不能用电视机使用“触摸屏”功能。 为了实现这一要求,Android开源项目正在提供Leanback支持库(android.support.v17.leanback),以便开发人员可以轻松实现满足这些要求的UI,从而适合电视使用。 本教程主要讲述了Leanback库的用法。
这个帖子的目标是那些谁:
Google从2015年底对Eclipse不再支持,所以请用Android studio用于IDE开发Android TV应用程序(如果你还没有使用,请下载并安装Android studio)。 请注意,这里介绍的大部分代码来自AOSP android TV示例源代码leanback。 本教程基本上只是这个示例源代码的详细说明。 让我们开始。 ##开始编写一个Android TV 应用 ###1.打开Android studio ####New Project 应用名称: AndroidTVappTutoria
Android studio会自动生成源代码。
此阶段的源代码上传到github。 ###2.添加activity 首先,让我们开展活动。 右键单击“hann.androidtvapptutorial”,然后选择
New -> Activity -> Blank activity
点击 “Launcher Activity”。
我将从空白活动开始,名为“MainActivity”。该Activity继承Activity,而不是AppCompatActivity。
Android studio现在生成2个文件,Java class&layout / l。 (我们不使用res / menu / l)
*注意:我们还发现有一个 “Android TV activity”选项。 当选择它时,它将同时创建太多的文件。 这是一个非常有用的参考,但很难理解每个文件处理什么样的功能。 所以我将在这篇文章中从头开始创建这些文件,以便我们能够理解每块代码的责任。 这篇文章中的许多实现都是引用这个官方的示例程序。 接下来,我们要通过创建MainFragment来设计MainActivity的UI。 ###3.添加 fragment 右键单击包名称(在我这里是hann.androidtvapptutorial) New -> Java Class -> Name: MainFragment *除了上述过程,如果我们选择New - > Fragment - > Blank fragment,请取消选中“Create layout XML?”,不取消的话会创建太多的样例代码。 首先,修改l,如下所示,只显示mainfragment。
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android=""xmlns:app=""xmlns:tools=""android:id="@+id/main_browse_fragment"android:name=hann.androidtvapptutorial.MainFragment"android:layout_width="match_parent"android:layout_height="match_parent" tools:context=".MainActivity" tools:deviceIds="tv"tools:ignore="MergeRootFrame" />
复制代码
然后,修改MainFragment如下。
我们将这个MainFragment作为BrowseFragment的子类。
BrowseFragment类由Android SDK Leanback库提供,它为Android TV应用程序创建了标准UI,我们将在本教程中看到。
hann.helloandroidtvfromscrach;import android.os.Bundle;
import android.support.v17.leanback.app.BrowseFragment;
import android.util.Log;public class MainFragment extends BrowseFragment {private static final String TAG = SimpleName();@Overridepublic void onActivityCreated(Bundle savedInstanceState) {Log.i(TAG, "onActivityCreated");ActivityCreated(savedInstanceState);}
}
复制代码
###4.修改Android Mainifest文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.songwenju.androidtvapptutoria"xmlns:android=""><!-- TV app need to declare touchscreen not required --><uses-featureandroid:name="uchscreen"android:required="false"/><!--true: your app runs on only TVfalse: your app runs on phone and TV --><uses-featureandroid:name="android.software.leanback"android:required="true"/><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/Theme.Leanback"><activityandroid:name=".MainActivity"android:icon="@drawable/app_icon_your_company"android:label="@string/app_name"android:logo="@drawable/app_icon_your_company"><intent-filter><action android:name="android.intent.action.MAIN"/><category android:name="android.intent.category.LAUNCHER"/><category android:name="android.intent.category.LEANBACK_LAUNCHER"/></intent-filter></activity></application></manifest>
复制代码
有以下几点注意事项: 1)这里要设置touchscreen为false,即TV app 不需要触摸。
<uses-featureandroid:name="uchscreen"android:required="false"/>
复制代码
2)设置依赖leanback库相关。
<uses-featureandroid:name="android.software.leanback"android:required="true"/>
复制代码
仅仅在TV上运行设置为true,在TV和phone上运行设置为false。 application的主题
<applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/Theme.Leanback">
复制代码
显示Activity icon 在普通桌面和Leanback桌面。在 intent-filter中声明。
<category android:name="android.intent.category.LAUNCHER"/><category android:name="android.intent.category.LEANBAC
复制代码
同时添加icon和logo在activity的tag上,
<activityandroid:name=".MainActivity"android:icon="@drawable/app_icon_your_company"android:label="@string/app_name"android:logo="@drawable/app_icon_your_company">...复制代码
到此运行一下应用,运行结果如图:
可以看到BrowseFragment由HeadersFragment&RowsFragment组成。 在这里,可以在右侧看到HeaderFragment(header)部分,在左侧看到RowsFragment(contents)部分。 我们将在下面设计这个Header&Row组合。
在此之前,让我们来实现这个应用程序的主要颜色和标题的UI。
###5.在MainFragment.java上添加setupUIElements() 在MainFragment.java中添加setupUIElements()方法,以设置应用程序信息。
@Overridepublic void onActivityCreated(Bundle savedInstanceState) {LogUtil.i(this,ActivityCreated.");ActivityCreated(savedInstanceState);setupUIElements();}private void setupUIElements() {// setBadgeDrawable(getActivity()
// .getResources()
// .getDrawable(R.drawable.app_icon_your_company));//展示在标题栏上的图片(图片会隐藏标题)setTitle("Hello Android TV!"); //设置title//HEADERS_ENABLED 显示左侧导航栏,HEADERS_DISABLED 不显示 HEADERS_HIDDEN 隐藏,到边缘按左键还能显示setHeadersState(HEADERS_HIDDEN);setHeadersTransitionOnBackEnabled(true);// 设置快速导航(或 headers) 背景色setBrandColor(getResources().lor.fastlane_background));// 设置搜索的颜色setSearchAffordanceColor(getResources().lor.search_opaque));}
复制代码
我们已经设置了
颜色信息是从l引用的,我们还没有提供。 右键单击res / values并选择
新建 - >values资源文件 文件名l - >“OK”
<?xml version="1.0" encoding="utf-8"?>
<resources><color name="fastlane_background">#0096e6</color><color name="search_opaque">#ffaa3f</color>
</resources>
复制代码
运行之后可以看到颜色发生了变化。
下一篇博客,将构建BrowseFragment - Android TV应用程序手册教程二,将介绍BrowseFragment,HeadersFragment,RowsFragment,Adapter和Presenter的概念,在我们的应用程序中可展示一些可选对象。 关注微信公众号,定期为你推荐移动开发相关文章。
转载于:
本文发布于:2024-01-30 17:06:34,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170660559821544.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |