首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

QQ音乐TV版 Leanback接入实践分享(一)

甚至还内置有实现新手教程的Fragment,只需提供新手教程逻辑就可光速上线,简直不能更贴心。 这点实际上是延伸自上一点的最后一小项。...由于Leanback中提供的Fragment级组件,开发者可以获得Google级的设计资源。这一点对于需要快速推进项目或者设计资源比较匮乏的团队来说尤为宝贵。...然而由于Leanback的维护频率略微有些堪忧,因此在使用过程当中可能会发现一些和项目本身技术方案不匹配的地方( Leanback要求minSDK >= 17, etc.)...Leanback已经提供了部分实现好的子类,ArrayObjectAdapter、ListRowAdapter、CursorObjectAdapter和SparseArrayObjectAdapter...本篇只讲了较为基础的Leanback使用,后续会努力再写一篇教大家如何进行组件定制化的文章,请大家多多期待~ 5.

3.8K31

Android Sdk版本、Support包版本及常用框架最新版本汇总

及蓝牙支持 2 1.1 Petit Four(花式小蛋糕) 2009-02-09 邮件中保存附件 3 1.5 Cupcake(纸杯蛋糕) 2009-04-27 桌面小部件,录制视频,自动旋转,蓝牙配对,浏览器复制及粘贴...增加了可穿戴扩展 21 5.0 Lollipop(棒棒糖) 2014-11-12 ART,64位CPU,OpenGL ES 3.1,Material Design,Project Volta(电池管理),自定义应用程序通知优先级...这些库提供向后兼容版本的新功能、框架未包含的实用 UI 元素,以及应用可以利用的一系列实用程序。...:28.0.0 v17 leanback com.android.support:leanback-v17:28.0.0 N/A vector drawable com.android.support:...: 2.0.0 约束布局 androidx.drawerlayout:drawerlayout: 1.1.1 抽屉布局 androidx.lifecycle:lifecycle-runtime: 2.2.0

2.5K30
您找到你想要的搜索结果了吗?
是的
没有找到

AndroidTv Home界面实现原理(一)——Leanback 库的使用

Leanback 主界面实现的相关源码,了解完 Google 是如何实现之后就可以扔掉 Leanback 自己来尝试实现,毕竟 Leanback 的可定制不高。...目前重点研究第一张的实现方式吧,毕竟 Google 的 Leanback 库实现出来的效果跟第一张有一些共同点,因此可以从 Leanback 入手来学习它是如何实现的。...Tab标签栏.png 这个是 Tab 标签栏,选中不同的 Tab,内容区会显示不同的视频列表,这里的实现应该是 TabLayout + Fragment 的形式,或者 TabLayout + ViewPager...库的 Presenter 作用都有些类似于 RecyclerView.Adapter ListRow:可以理解成一个 Mode,也就是把每一行抽象封装成一个 ListRow 用法跟 RecyclerView...思考 学会初步使用 Leanback 实现一个简单的 Home 界面后,你会发现,我们只需要提供每一行的数据,以及每行自己 itemView 的布局和数据绑定方式即可。

2.6K70

从 Android 开发到读懂源码 第05期:Leanback 结构源码简析

1 Leanback 页面构建主要类 BaseGridView 继承 RecyclerView ,重写所有焦点逻辑,Leanback 页面根布局容器 HorizontalGridView 继承 BaseGridView...,提供水平布局能力 VerticalGridView 继承 BaseGridView ,提供垂直布局能力 ArrayObjectAdapter 数据适配器,继承 ObjectAdapter ,内部可包含数据和视图结构内容信息...Presenter presenter = mPresenters.get(viewType); // 我们熟悉的 ViewHolder,注意,这个是我们 presenter 自定义的...3.2 Leanback 中常用的 ListRow 的源码 ListRow 继承 Row 是 android 封装好的行数据展示的一种抽象(并不是实际 View 的展示,leanback 系统 view...在 Leanback 的横竖列表展现形式都是通过这种 Presenter 与 BaseGridView 之间的嵌套关系进行剥离。

2.1K71

AndroidFragment的分屏显示处理横竖屏显示的实现方法

+ "在线性布局,每一行(针对垂直排列)或每一列(针对水平排列)只能放一个组件。"...+ "表格布局使用<TableLayout 标记定义,在表格布局,可以添加多个<TableRow 标记," + "每个<TableRow 标记占用一行,由于<TableRow 标记也是容器...在表格布局,列可以被隐藏," + "也可以被设置为伸展的,从而填充可利用的屏幕空间,也可以设置为强制收缩,直到表格匹配屏幕大小。"..., "相对布局是指按照组件之间的相对位置来进行布局某个组件在另一个组件的左边、右边、上面或下面等。"...= (DetailFragment) getFragmentManager() .findFragmentById(R.id.detail); // 获取用于显示详细内容的Fragment if (details

3K71

得物布局构建耗时优化方案实践

我们约定当布局 XML 文件,添加了自定义属性 app:x2c 时,表示该文件需要进行 X2C 构建代码生成。...这些自定义 View 是在业务模块定义的,而在壳工程的 App 模块,由于并没有显示申明对应 View 的模块依赖,会导致编译 Java 布局文件时出现类未找到的问题,导致编译失败。...如何在壳工程实现依赖的自定义 View 呢,观察生成的 Java 代码,会发现我们只用了自定义 View 的构造函数,并不需要实现一个完整的自定义 View,只要有构造函数,就可以在编译阶段通过了。...) { X2CUtil.preload(applicationContext, R.layout.du_trend_detail_fragment_trend_details_tab...(R.style.FeedDetailsActivity), R.layout.du_trend_detail_fragment_trend_details_tab) 构建线程优先级调优 在框架开发完成后

15410

Android面试题之Kotlin Jetpack的三大核心组件

ViewModel 和 LiveData 是 Android Jetpack 组件库的两个核心组件,它们能帮助开发者更有效地管理 UI 相关的数据,并且能够在配置变更(屏幕旋转)时保存和恢复 UI...ViewModel作用 瞬态数据丢失的恢复,比如横竖屏 异步调用的内存泄漏 处理类膨胀提高维护难度和测试难度 使视图和数据能够分离 是介于视图View和数据Model之间的桥梁 LiveData的作用...用于ViewModel数据返回时通知View更新,是ViewModel和View之间的桥梁 那么如何在 Kotlin 中正确优雅地使用 ViewModel 和 LiveData 呢。...Lifecycle Jetpack 组件的 Lifecycle 是一个用于管理和观察 Android 组件( Activity、Fragment)生命周期的库。...后者永远不会被调用 使用场景 平时像上面例子中和LiveData、ViewModel一起使用的比较多 总结 通过 ViewModel 、 LiveData,可以实现数据的生命周期感知,并且在配置变更(设备旋转

4810

Android入门教程 | Fragment 基础概念

创建Fragment,使用自定义界面 片段通常用作 Activity 界面的一部分,并且会将其自己的布局融入 Activity。...(在本例,此值为 false,因为系统已将扩展布局插入 container,而传递 true 值会在最终布局创建一个多余的视图组。) 接下来,需将该片段添加到您的 Activity 。...> 的 android:name 属性指定要在布局中进行实例化的 Fragment 类。...如要在 Activity 执行片段事务(添加、移除或替换片段),则必须使用 FragmentTransaction 的 API。...例如,以下示例说明如何将一个片段替换为另一个片段,以及如何在返回栈中保留先前的状态: // Create new fragment and transaction Fragment newFragment

3.5K40

Android基于DataBinding+Koin实现MVVM模式页面快速开发框架

使用效果 在 Android 应用页面显示几乎是每个应用必不可少的功能,要让页面布局在手机上进行显示绝大多数情况都是使用 Activity/Fragment 来承载;而创建一个 Activity/Fragment...需要先加载布局,然后从布局中找到我们需要的 View 对象再去更新其数据或为其添加相应事件处理,那么如果将这些封装成通用的 Activity/Fragment 基类则将减少很多开发代码从而提高开发效率...ardf提供了事件的处理机制,可以将事件传递到 Activity / Fragment ,然后在 Activity / Fragment 中进行涉及 Context 的处理,并且 ardf提供了两种事件的默认处理...自定义事件可通过调用 postEvent方法将事件传递到 Activity / Fragment ,代码如下: class TestViewModel : BaseViewModel(){ val...的 onEvent 回调方法,在该回调中就可以自定义处理 ViewModel 传递过来的事件。

1.4K20

为任意屏幕尺寸构建 Android 界面

这些新 API 还将消除设备在横竖屏切换时需要自定义逻辑的需求,在大多数情况下只需针对不同的窗口大小类断点进行设计,应用就会适应正确的布局和各种应用状态。...导航到应用任意一个顶层布局,但仍然可以通过选择界面某个单项任务而导航到详情页面的 Fragment。...由于任务和详情都呈现在 SlidingPaneLayout 的同一个新的 Fragment ,因此我们为该 Fragment 的导航交互专门添加一个新的子导航层次结构。...--Remove the 'details' destination--> ... <!...要正确构建列表/详情结构,除了实际布局之外我们还需要解决几个问题。其中比较有趣的一点是思考应用如何在不同尺寸布局之间转换,例如对于可折叠手机,应用可能会从较大的屏幕变为较小的屏幕。

4.1K20

Android手机平板两不误,使用Fragment实现兼容手机和平板的程序

这里用到了动态加载布局的技巧,首先Activity调用 setContentView(R.layout.activity_main) ,表明当前的Activity想加载activity_main这个布局文件...如果一个Activity包含了两个Fragment,就是双页模式。...(); } getFragmentManager().beginTransaction().replace(R.id.details_layout, fragment).commit();...又在onActivityCreated方法做了一个判断,如果Activity的布局包含了details_layout这个元素,那么当前就是双页模式,否则就是单页模式。...onItemClick方法则处理了ListView的点击事件,发现如果当前是双页模式,就动态往details_layout添加Fragment,如果当前是单页模式,就直接打开新的Activity。

1.5K70

编码规范

)以及子activity的包(登录界面的包:com.xxx.xxx.activitys.login) com.xxx.xxx.fragment 存放所有fragment及子包,细节同上 com.xxx.xxx.bean...实体类 com.xxx.xxx.widget 自定义View、自定义dialog等 com.xxx.xxx.utils 公用工具方法类(日期或者不同单位间的转换,文本解析,SharedPreferences...tvName(TextView对象) 2) 类控件名和布局ID一样,:类tvName 对应 布局 R.id.tvName 3) 全局常量 名称全大写,用“_”分隔。...m开头,:public int mMaxNum=999;(控件对象除外) 4.接口命名 1) 命名规则和类一样,以ible或able结尾,:Runnable(自定义的Listener除外) 5.方法命名...描述 规范 示例 Activity布局文件 activity开头 activity_main Fragment布局文件 fragment开头 fragment_home Dialog布局文件 dialog

1.2K80

【干货】Android 一线互联网面试题汇总,13模块200+题,征服面试官不是梦!

Android BAT 面试题目录: 1.四大组件 2.Fragment 3.自定义组件、动画 4.存储 5.网络 6.图片 7.布局 8.性能优化 9.JNI 10.进程间通信(简称:IPC) 11....三者之间的区别 FragmentPagerAdapter与FragmentStatePagerAdapter的区别与使用场景 3.自定义组件、动画 描述一下View的绘制流程 说说自定义view的几个构造函数...,哪里用了非对称加密,对加密算法(RSA)等是否有了解?...7.布局 说一下布局性能的排序,谁的效率最高 描述一下约束布局 关于布局优化的方案 怎么检测布局深度 LinearLayout、RelativeLayout、FrameLayout的特性及对比,并介绍使用场景...如何在JNI中注册native函数,有几种注册方式? Java如何调用c、c++语言? JNI如何调用java层代码? 你用JNI来实现过什么功能吗?怎么实现的?

73001

Android面试大纲(集合)

调用Activity的方法:getActivity Activity调用Fragment的方法:接口回调 Fragment调用Fragment的方法:FragmentManager.findFragmentById...使用include、ViewStub、merge 不要出现过于嵌套和冗余的布局 使用自定义View取代复杂的View ListView优化 复用convertView 滑动不加载 背景和图片优化...21 架构模式面试题 Android基础——框架模式MVC在安卓的实践 http://blog.csdn.net/qq_30379689/article/details/52909656 Android...基础——框架模式MVP在安卓的实践 http://blog.csdn.net/qq_30379689/article/details/52910567 Android基础——框架模式MVVM之DataBinding...3、配置Lint 创建Lint.xml到根目录下,自定义Lint安全等级等 在Java文件可以使用@suppressLint(“NewApi”)来忽视Lint的报错 在xml文件可以使用tool:ignore

1.1K20

学习笔记 | Android Studio安卓开发入门经验总结 干货

values: arrays.xml: 存放数组,在程序按照自定义的数组名进行读取。 colors.xml: 存放Hex色值,在程序按照自定义的颜色名字进行读取。...strings.xml: 存放字符串,按照自定义的字符串名进行获取,方便多语言程序的本土化。 themes themes.xml: 程序主题,包括主色次色和各类样式。...onCreateView():此时初始化Fragment布局,也是将基本的布局加载好,不建议耗时间的操作,实在需要就用异步线程。...参考文档 [1] Android mipmap与drawable区别 https://blog.csdn.net/userzhanghao123/article/details/70243872 [2.../weixin_33774615/article/details/88126868 [4] BaseRecyclerViewAdapterHelper https://github.com/CymChad

2.3K60
领券