Aandroid TV 基于Leanback支持最新MD设计的TV开发框架
原文地址:http://blog.csdn.net/sk719887916 作者:skay
基于6.0最新的API 支持TV的框架
Android 6.0已完美支持TV开发,之前的5.0后RecyclerView已经很满足我们在Android TV上开发需求了,但是谷歌之后推出的新的support库包含了支持TV的API,主要有android.support.v17.leanback.widget下的一些关键类。
android.support.v17.leanback.widget
leanback.widget的设计主要是用MVP实现的
此核心接口类最重要角色就是ObjectAdapter。它类似于普通的适配器和RecyclerView适配器,但一般我们是把他们用来模块化开发的项目。具体包括 ArrayObjectAdapter和 CursorObjectAdapter,但开发人员可以自由的使用ObjectAdapter的子类来遍历任何现有的object。
一个 Presenter创建View从ObjectAdapter来将数据绑定上去。这是互补碎片ObjectAdapter对于现有的Android适配器类。要分离出一个Presenter的好处是,我们可以用它来 生成一个适配器的情况下让上层调用更方便。例如,一个用户View可以从在几个地方从获取数据源。每个展示的列表又是唯一的,而数据(Modle)只会对ObjectAdapter检索一次。
一个PresenterSelector决定Presenter是从ObjectAdapter一个指定的具体的数据对象。两种最常见的情况,1 当一个ObjectAdapter使用相同的视图类型(SinglePresenterSelector),并且当Presenter由Java类的Api(ClassPresenterSelector)时。我们可以实现任意逻辑的PresenterSelector。例如,如果一个ObjectAdapter的所有Item都具有相同的类型,但某些View是用在开发者的应用程序中的具体视图来展现的,该PresenterSelector可以选择对应的Presenter在检查每个元素的类型之前。
为了方便轻松看基本视图导航Modle的行数,其中每一个数据Modle可以在项目的水平列表中 也可以是垂直列表中。因此,轻松使用ObjectAdapters既用于限定水平的数据项,也可以是限定垂直的数据源。很简单检查定义的行的一些基本数据模型类:ListRow,它定义了与一个标题的行的抽象概念的ListRow,具体是使用使用ObjectAdapter展现项目的水平列表的数据的。对于ListRow相应的Presenter是 ListRowPresenter。提供其他类型的Row和相应RowPresenters的; 但是该应用程序可以定义的一个自定义的子Row和 RowPresenter。
谷歌的这种设计模式也验证了最新的MVP设计模式的便捷性。
具体主要的类描述如下
接口
BrowseFrameLayout.OnChildFocusListener 管理BrowseFrameLayout子焦点。
BrowseFrameLayout.OnFocusSearchListener BrowseFrameLayout选择集中视图当系统重点查找程序找不到以便集中精力。
FacetProvider 这是为了提供在物体上的可选功能(又名面),而不需要让子类或实现Java接口的对象的查询界面。
FacetProviderAdapter 通过实施可选接口RecyclerView.Adapter查询FacetProvider为内适配器给定类型。
FocusHighlight 接口突出具有焦点的项目。
FragmentAnimationProvider FragmentAnimationProvider片段的onCreateAnimator回调过程中提供用于动画。
ImeKeyMonitor 接口一个EditText子类,可以委托调用onKeyPreIme到一个注册的侦听器。
ImeKeyMonitor.ImeKeyListener 关键事件监听器接口截获编辑文本对象预IME。
OnActionClickedListener 使用该接口时,接到通知的行动被点击。
OnChildLaidOutListener 接口时,这个ViewGroup中的孩子已经奠定了接收通知。
OnChildSelectedListener 此接口已过时。使用OnChildViewHolderSelectedListener
OnItemViewClickedListener 接口点击一个项目视图支架时收到通知。
OnItemViewSelectedListener 接口当行或项目被选中接收通知。
SearchBar.SearchBarListener 接口接收的搜索查询更改的通知。
SearchEditText.OnKeyboardDismissListener 接口当键盘被驳回收到通知。
SpeechRecognitionCallback 接口,用于接收通知,语音识别应启动。
ViewHolderTask 接口上ViewHolder计划任务。
类
AbstractDetailsDescriptionPresenter 一个抽象的演示用于呈现一个项目的详细描述。
AbstractDetailsDescriptionPresenter.ViewHolder 该ViewHolder为AbstractDetailsDescriptionPresenter。
行动 动作包含文本,一个可选的图像和可选ID中的一个或两行。
ArrayObjectAdapter 一个ObjectAdapter与实现的ArrayList。
BaseCardView A卡式布局,响应某种状态的变化。
BaseCardView.LayoutParams 与BaseCardView相关的每个子布局的信息。
BrowseFrameLayout 一个ViewGroup中管理重叠视图之间焦点行为。
ClassPresenterSelector 一个ClassPresenterSelector选择演示基于项目的Java类。
ControlButtonPresenterSelector 显示一级和二级控制的PlaybackControlsRow。
CursorObjectAdapter 一个ObjectAdapter与实现光标。
DetailsOverviewLogoPresenter 主讲人是负责创建的ImageView并绑定到DetailsOverviewRow。
DetailsOverviewLogoPresenter.ViewHolder ViewHolder为DetailsOverviewRow的标志视图。
DetailsOverviewRow 概述行的细节片段。
DetailsOverviewRow.Listener 侦听DetailsOverviewRow的变化。
DetailsOverviewRowPresenter 此类已废弃。使用FullWidthDetailsOverviewRowPresenter
DetailsOverviewRowPresenter.ViewHolder 一个ViewHolder为DetailsOverviewRow。
FocusHighlightHelper 设置项目时获得焦点的突出表现。
FullWidthDetailsOverviewRowPresenter 呈现一个DetailsOverviewRow以显示项目的概述。
FullWidthDetailsOverviewRowPresenter.Listener 听众对ViewHolder事件。
FullWidthDetailsOverviewRowPresenter.ViewHolder 一个ViewHolder为DetailsOverviewRow。
FullWidthDetailsOverviewRowPresenter.ViewHolder.DetailsOverviewRowListener
FullWidthDetailsOverviewSharedElementHelper 辅助类来辅助延迟所创造查看共享的元素活动过渡 FullWidthDetailsOverviewRowPresenter。
GuidanceStylist GuidanceStylist是一个内使用GuidedStepFragment 以显示在该步骤所要求的决定(S)的上下文信息。
GuidanceStylist.Guidance 代表对上下文信息的数据类GuidedStepFragment。
GuidedAction 数据类代表中的一个动作GuidedStepFragment。
GuidedAction.Builder 构建一个GuidedAction对象。
GuidedAction.BuilderBase
TV_FrameWork
.主要包含
- UI
- 事件处理
- 视频播放
效果如下:
源码下载:https://github.com/NeglectedByBoss/TV_FrameWork
参考资料:http://developer.android.com/reference/android/support/v17/leanback/widget/package-summary.html
Aandroid TV 基于Leanback支持最新MD设计的TV开发框架的更多相关文章
- 走进MEasy的世界:基于STM32MP1的IOT参考设计
前言:在万物互联快速发展的趋势下,板卡处理器性能.内存大小.接口外设等都是人们非常关心的硬件参数,但是如何让硬件的作用实现它的功能最大化,一套完善的软件支持尤为重要. 背景:随着HTML5技术的发展, ...
- 让PDF.NET支持最新的SQLite数据库
最近项目中用到了SQLite,之前项目中用的是PDF.NET+MySQL的组合,已经写了不少代码,如果能把写好的代码直接用在SQLite上就好了,PDF.NET支持大部分主流的数据库,这个当然可以,只 ...
- atitit.基于http json api 接口设计 最佳实践 总结o7
atitit.基于http json api 接口设计 最佳实践 总结o7 1. 需求:::服务器and android 端接口通讯 2 2. 接口开发的要点 2 2.1. 普通参数 meth,p ...
- 基于cocos2d-x的游戏框架设计——李成
视频:http://v.youku.com/v_show/id_XMzc5ODUyMTI4.html?f=17330006 网易科技讯 3月31日,第四届CocoaChina开发者大会暨Cocos2d ...
- 让盘古分词支持最新的Lucene.Net 3.0.3
原文:让盘古分词支持最新的Lucene.Net 3.0.3 好多年没升级过的Lucene.Net最近居然升级了,到了3.0.3后接口发生了很大变化,原来好多分词库都不能用了,所以上次我把MMSeg给修 ...
- 基于PCIe的高速接口设计
基于PCIe的高速接口设计 由 judyzhong 于 星期四, 03/03/2016 - 13:49 发表 作者:李晓宁,姚远程,秦明伟 2016年微型机与应用第1期 摘要:PCIe总线是第三代I/ ...
- 基于SEDA的异步框架设计与实现
基于SEDA的异步框架设计与实现 二.为什么使用SEDA 目前,面对并发环境,主流互联网服务器编程模型有两种:多线程模型以及事件驱动模型.但是这两个模型都不足以解决这个问题.我们来首先看一下这两种编程 ...
- 基于DDD的微服务设计和开发实战
你是否还在为微服务应该拆多小而争论不休?到底如何才能设计出收放自如的微服务?怎样才能保证业务领域模型与代码模型的一致性?或许本文能帮你找到答案. 本文是基于 DDD 的微服务设计和开发实战篇,通过借鉴 ...
- 基于ABP落地领域驱动设计-00.目录和小结
<实现领域驱动设计> -- 基于 ABP Framework 实现领域驱动设计实用指南 翻译缘由 自 ABP vNext 1.0 开始学习和使用该框架,被其优雅的设计和实现吸引,适逢 AB ...
随机推荐
- PHP 扩展开发检测清单(扩展开发必读)
想要做出一个成功的 PHP 扩展包,不仅仅是简单的将代码放进文件夹中就可以了,除此之外,还有非常多的因素来决定你的扩展是否优秀.以下清单的内容将有助于完善你的扩展,并且在 PHP 社区中得到更多的重视 ...
- c++中成员函数的参数名与成员变量名重合的问题
有一天写类的时候突然想到了这个问题,下面就来介绍如何解决这个问题. 定义一个类: class test{ public: void setnum(); void getnum(); private: ...
- 《Java技术》第一次作业
(一)学习总结 1.在java中通过Scanner类完成控制台的输入,查阅JDK帮助文档,Scanner类实现基本数据输入的方法是什么?不能只用文字描述,一定要写代码,通过具体实例加以说明. (1)使 ...
- Android开发Java基础之Java语言基础(1)
Java中的基本数据类型 整数类型 整数类型用来存储整数数值,既没有小数部分的数值.可以是正数,也可以是负数.整数类型在Java程序中有三种表现形式,分别是十进制,八进制,十六进制. 整型数据根据它所 ...
- Cisco 的基本配置实例之五----交换机的路由功能与DHCP 功能
5.配置交换机的路由功能 说明:只有在三层交换机上才有路由功能,其他的二层接入交换机要想在不同的vlan之间传送数据需要通过trunk口到核心交换机上进行完路由交换后才可以. TEST(config) ...
- SSH(struts2+hibernate+spring)总结
1 前三个文章 是我对ssh的具体实现 虽然没有真的写一个ssh的例子出来 但是 意思应该传达到了 主要还是注解注入的ssh太模块化了 感觉写出来意义不大 个人水平有限 说不清 2 我一开是写的是st ...
- spark学习笔记01
spark学习笔记01 1.课程目标 1.熟悉spark相关概念 2.搭建一个spark集群 3.编写简单spark应用程序 2.spark概述 spark是什么 是基于内存的分布式计算引擎,计算速度 ...
- Docker 第一篇 认识Docker 的作用好处
Docker 第一篇 认识Docker 的作用好处 (1)什么是Docker (2)Docker 优势劣势 Docker是去年开始关注并学习的,因为项目用到了AspnetCore 了解了之后总感觉会用 ...
- Python中strip()、lstrip()、rstrip()用法详解
Python中有三个去除头尾字符.空白符的函数,它们依次为: strip: 用来去除头尾字符.空白符(包括\n.\r.\t.' ',即:换行.回车.制表符.空格)lstrip:用来去除开头字符.空白符 ...
- 在vs2013上的编译tesseract-ocr
在vs2013上的编译tesseract-ocr OCR(Optical Character Recognition):光学字符识别,是指对图片文件中的文字进行分析识别,获取的过程. Tesserac ...