leanback android,Android TV之谷歌android leanback框架详解

2023-11-05

google leanback 库简介

“Leanback” 就是靠着看的意思。是指以放松的姿势倒在沙发上.谷歌推出 android.support.v17.leanback 软件包提供的 API 支持在电视设备上构建用户界面。它为电视应用提供了一些重要的小部件。这个库只支持到api 17以上的版本,也就是andorid 4.2,而一些效果也只是在api-21以上支持。

Demo 介绍

这是两个关于比较官方的Demo地址。有需要的可以下载

以下是Demo的部分截图

d33200aaa39bdf4057b9b48f96c0399e.png

612c3a7dccfab67eea5a9f6100a928d6.png

接下来就来说说代码结构

MVP的构建模式

Leanback 提供了model-view-presenter mvp的方式来构建应用。

model 是由应用开发者来提供,leanback对于model的实现没有加额外的限制,任何对象都是可以的。

view 还是由原来的android.view包下的类来实现。

Presenter 是基于现在的Adapter的该概念,并扩充为更具的灵活性和组合性。特别的是,绑定数据到view上的操作已经将adapter中分离出去,这部分逻辑由presenter去承担。

不信可以看看它的代码结构

70b3a02e0fe14c94ae9ac269fa73f82c.png

至于MVP的好处这里就不用说了。

视图结构

首先用android Tv的例子来介绍。运行程序时,整体内容被对齐在一个网格布局里。左侧的每一个标题header,都有右侧对应的一个内容行row,他们是一一对应的。header+content row由一个类 ListRow来表示。页面的整体其实是ListRow的集合

ade783c0ff142079d78fd00fa43d3522.png

整体是一个大的ArrayObjectAdapter 由一系列的ListRow来填充。view的呈现方式由ListRowPresenter来定义。

一个ListRow 由HeaderItem 和一个小的ArrayObjectAdapter组成,这个一行中的ArrayObjectAdapter中放置我们定义的view,呈现方式由CardPresenter来定义。

典型的代码如下:

List list = MovieList.setupMovies();

mRowsAdapter = new ArrayObjectAdapter(new ListRowPresenter());

CardPresenter cardPresenter = new CardPresenter();

for (int i = 0; i < NUM_ROWS; i++) {

if (i != 0) {

Collections.shuffle(list);

}

ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(cardPresenter);

for (int j = 0; j < NUM_COLS; j++) {

list

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

leanback android,Android TV之谷歌android leanback框架详解 的相关文章

随机推荐

  • Android Studio: 模拟器启动失败解决(Emulator: Process finished with exit code 139)

    Android Studio 版本 3 4 2 CPU AMD Ryzen 7 3700x 8 core processor 16 OS ubuntu 18 04 错误log 下午6 05 Emulator statvfs home duq
  • 常见的排序算法——插入排序

    3 插入排序 1 基本思想 插入排序是将n个待排元素的序列看成两个表 分别为有序表和无序表 起初 有序表中只有一个元素 即下标为0的元素 无序表中含有 n 1个元素 即下标从1到n 1的元素 排序过程就是每次将无序表中的第一个元素拿出 然后
  • Visualgo -- 数据结构和算法动态可视化网站

    网址为 https visualgo net zh 这个网站涉及的算法十分全面 不仅支持多种算法可视化动态演示 还支持搜索 是学习算法的好帮手 推荐给大家
  • STL(四) std::string /std::wstring 查找、删除、替换(find erase replace)

    std string std wstring 类 在C 中是一个非常重要的存在 不管程序规模大小 很难避免不用到 功能很强大 但是总感觉距离 好用 还差了那么一点点 首先 需要明白一点 std string是STL中的一员 所以 有关stl
  • 盘点慢查询原因及优化方法

    目录 一 前言 二 准备 type重点看 三 慢查询原因和解决 1 sql未加索引 2 索引失效 3 limit深分页问题 1 limit深分页为什么会慢 2 深分页优化 4 in元素过多 5 join 或者子查询过多 6 order by
  • YARN与MapReduce1的区别

    YARN与MapReduce1的区别 1 组成对比 MapReduce1中 两类守护进程控制着作业执行过程 一个JobTracker和一个或多个TaskTracker JobTracker通过调度TaskTracker上运行的任务来协调所有
  • 【Linux】浅谈eloop机制

    目录 1 eloop 机制 2 eloop结构体 2 1 eloop data结构体 2 2 Socket事件结构体 2 3 Timeout事件结构体 2 4 Signal事件结构体 3 eloop init 4 eloop run 4 1
  • CGAL-5.6的安装与编译(Win10+vs2022+CGAL-5.6+Boost1.82.0)

    文章目录 前言 一 安装Boost 1 下载 2 环境变量 二 安装CGAL和GMP and MPFR libraries 1 下载 2 解压 3 环境变量 其他 参考 前言 CGAL是Computational Geometry Algo
  • 2023年副业赚钱最快的方法,最后一个时代红利,你一定要抓住!

    你有没有发现 生活中大部分的烦恼 归根结底只有一个原因 没钱 守着几千块的死工资 升职加薪难上加难 平时要为了省十几块钱不舍得打车 跟老公三天两头吵架 原因不过就是家里没钱给孩子报学费高昂的兴趣班 平时想买瓶香水都要费心思让老公送 出个远门
  • Java定时任务调度工具详解之Timer篇(初级)

    一 Timer简介 定时任务的基本概念 Timer的函数 综合运用和缺陷 基于给定的时间点 给定的时间间隔或者给定的执行次数自动执行的任务 Timer 和Quartz Timer 出身 由jdk提供 调用方式简单粗暴 能力 Timer能完成
  • 计算机内存只认4,为什么电脑的8GB内存只有7.45GB可用?

    今天偶遇到这样一个问题 本来8GB内存的笔记本系统却只有7 45GB可用 具体什么现象请看下图 丢失了0 55GB内存 为此我还特意百度了一下 得到这样的结果 电脑少的内存被核心显卡占用 核心显卡和系统共享内存是不错 但是我的这款i7 77
  • dac0832产生梯形波程序C语言,DAc0832产生三角波,正旋波,梯形波

    DAc0832产生三角波 正旋波 梯形波 换电路接成同相电压输出形式 其输出电压Vout IR 1 R2 R1 8 1 利用dac0832产生三角波 程序介绍 单片机通过DAC0832转换在LM358的7脚输 出三角波 实际应用如 函数波形
  • 2021年你一定要了解的概念——元宇宙

    2021年是元宇宙元年 随着VR AR 3D和脑机接口技术的不断进步 元宇宙的广阔市场被逐渐打开 除了最接近元宇宙形态的沙盒游戏外 你还了解多少元宇宙的知识 Part 1 什么是元宇宙 元宇宙的概念一提出来 所有人都在说元宇宙 那么元宇宙到
  • 使用SimHash进行海量文本去重

    阅读目录 1 SimHash与传统hash函数的区别 2 SimHash算法思想 3 SimHash流程实现 4 SimHash签名距离计算 5 SimHash存储和索引 6 SimHash存储和索引 7 参考内容 本文介绍的SimHash
  • 错误:app Transport Security has blocked a cleartext HTTP......

    在Xcode7中 苹果将 http 协议改成了 https 协议 使用 TLS1 2 SSL加密请求数据 因此在模拟器上运行程序时 要是程序还是使用的 http 协议就会报下图中的错误 解决办法 打开info plist 添加键值 App
  • jdbc的学习

    操作数据库的基本步骤 1 引入依赖 注册驱动 2 获取连接对象 如何获取数据库的连接 3 获取发送sql语句的对象 发送sql语句 4 处理结果集 5 释放资源 1 0 原始版本 public static void main String
  • 六、Java框架之SpringBoot

    黑马课程 文章目录 1 SpringBoot入门 1 1 SpringBoot入门案例 步骤1 创建SpringBoot项目 高版本springboot常见错误 步骤2 创建BookController 步骤3 启动服务器并运行程序 pom
  • Matlab画星座图

    1 clear all msg randi 0 7 1 80 八进制 80个符号 figure 1 stem msg msg1 pskmod msg 8 psk调制 scatterplot msg1 画星座图 hold on rectang
  • MySQL分组TOPN终极详解

    MySQL分组TOPN终极详解 终极终极详细解释 因为比较详细 适合小白看 大佬请出门左拐 代码比较简单 但是我一开始纠结了好久 脑壳疼 首先gruop by limit 肯定是不可以的 下面演示一下 1 建表 CREATE TABLE s
  • leanback android,Android TV之谷歌android leanback框架详解

    google leanback 库简介 Leanback 就是靠着看的意思 是指以放松的姿势倒在沙发上 谷歌推出 android support v17 leanback 软件包提供的 API 支持在电视设备上构建用户界面 它为电视应用提供