Android TV:自定义Leanback的VideoDetailsFragment

这篇具有很好参考价值的文章主要介绍了Android TV:自定义Leanback的VideoDetailsFragment。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在Android studio新建TV项目的demo上做修改,实现一下需求:

1、去掉顶部背景区域

2、修改中间详情区域高度

3、修改整体背景界面

效果如图:

Android TV:自定义Leanback的VideoDetailsFragment,Android,Android TV,详情页,自定义,Leanback

搜遍全网,没有找到一个解决方案。只能考自己看代码来自定义实现了。

1、去掉顶部背景区域:

VideoDetailsFragment中重写setupDetailsOverviewRowPresenter方法,去掉其中一个alignDef:

@Override
    protected void setupDetailsOverviewRowPresenter(FullWidthDetailsOverviewRowPresenter presenter) {
        ItemAlignmentFacet facet = new ItemAlignmentFacet();
        // by default align details_frame to half window height
        ItemAlignmentFacet.ItemAlignmentDef alignDef = new ItemAlignmentFacet.ItemAlignmentDef();
        alignDef.setItemAlignmentViewId(androidx.leanback.R.id.details_frame);
        alignDef.setItemAlignmentOffset(0);
        alignDef.setItemAlignmentOffsetPercent(0);
        ItemAlignmentFacet.ItemAlignmentDef[] defs =
                new ItemAlignmentFacet.ItemAlignmentDef[] {alignDef};
        facet.setAlignmentDefs(defs);
        presenter.setFacet(ItemAlignmentFacet.class, facet);
    }

完成之后看效果,会发现左上角会有个不好看的返回按钮,点击了没有反应。我们不需要这个返回图标,我们主动调用showTitle方法会发现没有效果,这边我重写方法,领其无论其他类怎么赋值给他,我都不显示标题栏,也就没有返回按钮图标了:

@Override
    public void showTitle(boolean show) {
        super.showTitle(false);
    }

2、修改中间详情区域高度:

自定义一个FullWidthDetailsOverviewRowPresenter类,在里面修改高度:

public class MyDetailsOverviewRowPresenter extends FullWidthDetailsOverviewRowPresenter {
    public MyDetailsOverviewRowPresenter(Presenter detailsPresenter) {
        super(detailsPresenter);
    }

    @Override
    protected RowPresenter.ViewHolder createRowViewHolder(ViewGroup parent) {
        ViewHolder viewHolder = (ViewHolder) super.createRowViewHolder(parent);
        ViewGroup overviewView = viewHolder.getOverviewView();
        FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) overviewView.getLayoutParams();
        layoutParams.height = ViewGroup.LayoutParams.WRAP_CONTENT;
        overviewView.setLayoutParams(layoutParams);
        overviewView.setPadding(0,0,0,50); //底部给点边距,不然很难看
        return viewHolder;
    }

    @Override
    protected void onLayoutOverviewFrame(ViewHolder viewHolder, int oldState, boolean logoChanged) {
        super.onLayoutOverviewFrame(viewHolder, oldState, logoChanged);
        //重写这个方法为了解决图片位置偏上的问题
        ViewGroup.MarginLayoutParams lpFrame =
                (ViewGroup.MarginLayoutParams) viewHolder.getOverviewView().getLayoutParams();
        lpFrame.topMargin = 0;
        viewHolder.getOverviewView().setLayoutParams(lpFrame);
    }
}

然后在VideoDetailsFragment中替换原来的实例化:

private void setupDetailsOverviewRowPresenter() {
        // 替换我们的自定义类
        FullWidthDetailsOverviewRowPresenter detailsPresenter =
                new MyDetailsOverviewRowPresenter(new DetailsDescriptionPresenter());
       //设置背景透明
        detailsPresenter.setBackgroundColor(ContextCompat.getColor(requireContext(),R.color.transparent));
        //设置action栏背景不透明
        detailsPresenter.setActionsBackgroundColor(ContextCompat.getColor(requireContext(),R.color.default_background));
        //设置详情没有选中效果,不然选中会有个半透白色前景色
        detailsPresenter.setSelectEffectEnabled(false);
        // Hook up transition element.
        FullWidthDetailsOverviewSharedElementHelper sharedElementHelper =
                new FullWidthDetailsOverviewSharedElementHelper();

        ......

3、修改整体背景界面:

原本是通过mDetailsBackground来设置背景的,但是他分开了上边、中间、下边不同的背景,我这边是想要一块完整的背景。

查看VideoDetailsFragment的父类DetailsSupportFragment是有个setBackgroundDrawable方法的,但是没有public,所以我们调用不了。那我们就不用他原来的了,自己找到这个界面的rootView,设置背景即可:

重写onCreateView:

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = super.onCreateView(inflater, container, savedInstanceState);
        rootView.findViewById(androidx.leanback.R.id.details_fragment_root)
                .setBackground(ContextCompat.getDrawable(requireContext(),R.drawable.image1));
        return rootView;
    }

去掉原有的背景声明:

和mDetailsBackground有关的代码都注释掉,就OK了,不然执行了mDetailsBackground.enableParallax()方法则会变成了黑色背景。文章来源地址https://www.toymoban.com/news/detail-523373.html

到了这里,关于Android TV:自定义Leanback的VideoDetailsFragment的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android TV屏 开发、RecyclerView焦点处理等

      TV屏使用遥控器控制,通过焦点操作界面,就跟电视投屏类似 一共两个核心,焦点的处理,按键的监听处理 按键原生提供了 onKeyDown 来监听,通过不同的 keyCode 区分不同的按键 一般如果没有遥控器,可以通过电脑键盘测试,使用投屏软件投屏后,对键盘按键效果跟遥控器类

    2024年02月10日
    浏览(49)
  • DS Video for Android TV (稳定安装打开版)

    要想在普通的 Android 系统电视盒子上使用 DS Video for Android TV 版, 需要附件里的这个 apk 和 群晖官网下载中心下载的那个 apk 这两个都安装上才可以. DS Video for Android TV 版的 apk 请直接去群晖官网的下载中心下载吧  Download Center | Synology Inc. 。 这个 apk 只支持到 Android 5.0 以上的

    2024年02月20日
    浏览(31)
  • PC改电视盒子 无需配置 Android x86 TV 9镜像

            这几天在折腾将旧电脑改成安卓电视盒子,发现网上的镜像着实麻烦,如果没有vpn,每次装都要用命令跳过谷歌的自动更新、配置兼容arm。完事了还只能远程安装apk。         这个镜像直接配置好了谷歌自动更新、兼容问题。自带X-plore用来安装u盘的apk文件,同时

    2024年02月09日
    浏览(45)
  • Android 11 系统开发增加低电量弹窗提示 手机 平板 车载 TV 投影 通用

    SystemUIService 中启动PowerUI 主要修改 5、在symbols 文件中添加对应java-symbol方便Framework代码引用code

    2024年03月15日
    浏览(39)
  • Leanback(1)-播放控制栏下添加新的行

      我们要在播放控制栏下面加入下面一行。 这个就是标准的row。 leanback的原理 Android Leanback结构源码简析 - 简书 我们知道Row用来提供数据,row可以通过一个ObjectAdapter来管理和提供数据 我们知道presenter是一个负责将数据绑定到视图上的对象,它可以根据不同的数据类型创建不

    2024年02月01日
    浏览(31)
  • TV屏应用列表可编辑焦点方案

      tv屏中,最难处理的就是焦点问题,而复杂的焦点处理要属应用列表模块了 根据展示的列表,可以翻页,默认焦点处于左上角第一个,此时通过遥控器上下左右可以控制焦点移动位置 焦点所在应用需要有个黄色边框标识,往右移动到边界,自动到下一行,继续往右移动到边

    2024年02月08日
    浏览(35)
  • 解决Apple TV 4K 关机同时关闭小米电视

    由于小米电视的CEC功能缺陷,导致APPLE TV关机(待机)后无法关闭小米电视,只会退出HDMI模式返回小米系统。本解决方案针对有HOMEASSISTANT的人。 将APPLE TV和小米电视添加到HA中 依次点击 配置 - 场景与自动化 - 创建自动化 触发条件设置为将ATV由 空闲 - 待机 持续几秒 执行动作

    2024年02月11日
    浏览(139)
  • uniapp监听TV电视遥控器的红外按键事件

    uniapp监听TV电视遥控器的红外按键事件 下面是小米电视遥控器的keyCode,供大家参考: 上 19 下 20 左 21 右 22 中 23 返回 音量+ 24 音量- 25 菜单 82

    2024年02月22日
    浏览(51)
  • adb wifi连接调试应用--适用于手机、平板、电视TV等

    今天需要adb WiFi连接电视调试东西,发现使用了网上的方法后还是无法连接adb WiFi成功,后来摸索了下,便成功了,根本原因还是需要确保电脑、手机或者电视他们在同一个WiFi内。我的 做法就是电脑开个热点,手机或者电视连接这个热点就肯定没有问题了  首先电脑开个热点

    2024年02月10日
    浏览(44)
  • 每日分享(苹果CMS V10仿韩剧TV主题模板源码)

    demo软件园每日更新资源,请看到最后就能获取你想要的: ​ 1. 低代码引擎技术白皮书 PDF高清版 低代码引擎是一款为低代码平台开发者提供的,具备强大定制扩展能力的低代码设计器研发框架。本白皮书从应用、基础协议和原理三个方面对低代码引擎的技术进行了全面的介绍

    2023年04月08日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包