演示环境:Kodi 19.3 Windows 版, Kodi 19.3 Android 版
前言
Kodi 默认皮肤的电影海报墙是不会显示电影名称的,如果不用国语版封面就有一定认知成本,也不方便家里人找电影。所以想给皮肤加上显示电影名称的逻辑。
一般 Kodi 海报墙想显示标题有 2种方法
1. 修改皮肤样式
2. 更换其他皮肤插件
本文介绍第一种方式,修改皮肤样式。
不同平台
Windows 平台修改方式
Kodi Windows 版本的默认皮肤海报墙样式文件地址如下:
…\Kodi\addons\skin.estuary\xml\View_54_InfoWall.xml
直接在文件内添加代码块,或者通过我附上的完整代码覆盖本地文件。
*修改前请记得备份原始文件
Android 平台修改方式
Kodi Android 版本有2种修改思路
- 修改安装后的所在目录,需要 root
- 修改 apk 安装包内的文件,需要重新签名
第一种缺点是需要 root,第二种缺点是没法覆盖安装,需要卸载后再安装(因为签名变了)
这里演示第二种,修改 apk 安装包,注意导出资料库,以免重新刮削。
apk 默认皮肤海报墙文件地址如下:
/assets/addons/skin.estuary/xml/View_54_InfoWall.xml
修改方式:
- 把安装包后缀 .apk 修改为 .zip ,然后将修改后的
View_54_InfoWall.xml
文件覆盖这个目录 - 再将.zip 改回 apk
- 重新签名(使用 MT管理器 或者 JDK内置的 jarsigner 工具)
*修改前请记得备份原始文件
不重新签名,只能在模拟器这种没什么安全策略的机器上运行。一般电视盒子、手机都会提示 “签名被修改,有风险。”
这里演示第一种, 使用 MT 管理器 签名。好处是无需 JDK 开发环境、无需自己准备签名文件。缺点就是需要一台 root 安卓机(用模拟器即可)
重新签名:
- 下载 MT管理器 https://www.coolapk.com/apk/bin.mt.plus
- 使用模拟器安装 MT管理器
- 把未签名的 apk 文件放到模拟器中(一般有共享目录)
- 在 MT 管理器中点击 未签名的 apk文件
- 选择
功能
->APK 签名
这里就不提供已签名的 apk 文件了,还是大家自行签名吧,下载别人打的包是有安全隐患的。
修改样式
这里提供 2 个我修改的样式版本,有需要的可以跟着步骤修改,或者直接复制我提供的完整代码覆盖本地文件。
有兴趣的也可以自行修改成你喜欢的样式效果。
样式 1
搜索了一下关键字,定位到 <include name="InfoWallMovieLayout">
这段代码块应该就是电影海报墙的相关内容。
line 278 ~ 379 的control 标签,应该就是显示海报图片相关逻辑。
这里借用一下 电影集
的样式,把这段代码复制到 308 行 ~ 309 行之间
<!-- 2 行大文本 -->
<control type="textbox">
<left>40</left>
<top>244</top>
<width>242</width>
<height>120</height>
<font>font27</font>
<align>center</align>
<aligny>center</aligny>
<label>$INFO[ListItem.Label]</label>
<autoscroll time="2000" delay="3000" repeat="5000">$PARAM[focused]</autoscroll>
<visible>!ListItem.IsParentFolder</visible>
</control>
效果如下:
完整代码:
https://www.yuque.com/raw?filekey=yuque%2F0%2F2021%2Fxml%2F12903950%2F1640579679759-aba442dc-1138-414e-9fad-ab19b707af7c.xml
样式 2
但是遇到浅色的背景,文本就看不清楚了。于是我又找了一下有没有其他地方的样式也可以抄一抄。
于是我又找来了剧集
的样式,把这段代码复制到 308 行 ~ 309 行之间
<!-- 底部小文本,带阴影 -->
<control type="group">
<visible>String.IsEqual(ListItem.DBtype,movie)</visible>
<top>320</top>
<control type="image">
<left>35</left>
<top>0</top>
<width>250</width>
<height>50</height>
<texture colordiffuse="CCFFFFFF">overlays/overlayfade.png</texture>
<visible>!String.IsEmpty(ListItem.Art(poster))</visible>
</control>
<control type="label">
<left>50</left>
<top>20</top>
<width>224</width>
<label>$INFO[ListItem.Label]</label>
<font>font20_title</font>
<shadowcolor>text_shadow</shadowcolor>
<align>right</align>
</control>
</control>
效果如下:
完整代码:
https://www.yuque.com/raw?filekey=yuque%2F0%2F2021%2Fxml%2F12903950%2F1640579684661-26473ba1-48ea-495d-a23e-13ec69a672c8.xml