Android13 Hotseat客制化--去掉hotseat(热座)

news/2024/9/17 1:20:11/ 标签: java, android, Launcher3, Hotseat

需求:有些项目不要热座,要求去掉热座

以前的做法是把DeviceProfile里与hotseat有关的变量改为0之类的,改动比较大。为什么不通过简单的把mHotseat设置为GONE呢

因为在各种视图变化的时候,会把hotseat再次显示出来,因此尝试新的方法来实现。

step1:把hotseat默认改为GONE 在launcher.xml里把hotseat设为gone

<!--Kevin.Ye set hotseat as gone-->
<include
android:id="@+id/hotseat"
layout="@layout/hotseat"
android:visibility="gone"/>

step2:为了兼容其他项目需要保留hotseat的功能,在FeatureFlag.java中添加flag

java">public static final boolean REMOVE_HOTSEAT = true;//Kevin.Ye added for removing hotseat

step3:在Launcher.java里的setupViews(),把mHotseat设为GONE

java">/*** Finds all the views we need and configure them properly.*/protected void setupViews() {mDragLayer = findViewById(R.id.drag_layer);mFocusHandler = mDragLayer.getFocusIndicatorHelper();mWorkspace = mDragLayer.findViewById(R.id.workspace);mWorkspace.initParentViews(mDragLayer);mOverviewPanel = findViewById(R.id.overview_panel);mHotseat = findViewById(R.id.hotseat);mHotseat.setWorkspace(mWorkspace);mHotseatController = new HotseatController(this.getApplicationContext(),this);//Kevin.Yeif(FeatureFlags.REMOVE_HOTSEAT)mHotseat.setVisibility(View.GONE);//Kevin.Ye added for removing hotseat// Setup the drag layermDragLayer.setup(mDragController, mWorkspace);

setup4:在Hotseat.java中的onVisibilityAggregated屏蔽所有的setVisibility操作,也许前面的步骤也不需要!不确定

java">@Override
public void onVisibilityAggregated(boolean isVisible) {super.onVisibilityAggregated(isVisible);if(getVisibility() != View.GONE)//Kevin.Ye added for set hotseat always GONE!setVisibility(View.GONE);if (mOnVisibilityAggregatedCallback != null) {mOnVisibilityAggregatedCallback.accept(isVisible);}
}

step5: Workspace.java中不要允许hotseat作为拖拽图标的目的Layout

java">private boolean shouldUseHotseatAsDropLayout(DragObject dragObject) {if(FeatureFlags.REMOVE_HOTSEAT) return false;//Kevin.Ye not allow hotseat as dragTargetif(mLauncher.getHotseatContainer().getVisibility() != View.VISIBLE) return false;//Kevin.Ye added for not allow drag to hotseatif (mLauncher.getHotseat() == null|| mLauncher.getHotseat().getShortcutsAndWidgets() == null|| isDragWidget(dragObject)) {return false;}View hotseatShortcuts = mLauncher.getHotseat().getShortcutsAndWidgets();getViewBoundsRelativeToWorkspace(hotseatShortcuts, mTempRect);return mTempRect.contains(dragObject.x, dragObject.y);}

step6: WorkspacePageIndicator.java里的setInsets接口修改一下,不要影响页面指示器的位置

java"> if(FeatureFlags.REMOVE_HOTSEAT)lp.bottomMargin = insets.bottom;//there is no hotseatBarSizeelselp.bottomMargin = grid.hotseatBarSizePx + insets.bottom;lp.bottomMargin = insets.bottom + mMarginBottom;//Kevin.Ye modified end}setLayoutParams(lp);


http://www.ppmy.cn/news/1522823.html

相关文章

Spark的一些高级用法

Java 中实现 Spark 的一些高级用法。 1. 使用 DataFrame 和 Spark SQL 在 Spark 中&#xff0c;使用 DataFrame 来处理结构化数据并执行 SQL 查询是非常常见的。 import org.apache.spark.sql.Dataset; import org.apache.spark.sql.Row; import org.apache.spark.sql.Spark…

2024高教社杯数学建模国赛ABCDE题选题建议+初步分析

提示&#xff1a;DS C君认为的难度&#xff1a;C<B<A&#xff0c;开放度&#xff1a;A<C<B 。 D、E题推荐选E题&#xff0c;后续会直接更新E论文和思路&#xff0c;不在这里进行选题分析&#xff0c;以下为A、B、C题选题建议及初步分析 A题&#xff1a;“板凳龙”…

RPC使用的关键技术

RPC&#xff08;Remote Procedure Call&#xff0c;远程过程调用&#xff09;是分布式系统中常用的一种通信方式&#xff0c;它允许程序调用位于不同计算机上的方法或函数&#xff0c;就像调用本地方法一样。为了实现这种透明且高效的远程调用&#xff0c;RPC 框架依赖于多种关…

【软件设计】常用设计模式--策略模式

软件设计模式&#xff08;三&#xff09; 策略模式&#xff08;Strategy Pattern&#xff09;1. 概念2. 模式结构3. UML 类图4. 实现方式C# 示例步骤1&#xff1a;定义策略接口步骤2&#xff1a;实现具体策略类步骤3&#xff1a;实现上下文类步骤4&#xff1a;使用策略模式 Jav…

驱动(RK3588S)第八课时:平台设备总线

目录 目标一、平台设备总线的概念1、什么是平台设备总线2、平台设备总线 platform 的匹配3、设备树和平台设备总线的关系&#xff0c;以及匹配 二、平台设备总线的函数接口1、注册设备端的资源信息2、设备端提供的资源的信息3、注销申请的设备端的资源4、驱动端的函数&#xff…

逻辑表达式,最小项

目录 得到此图的逻辑电路 1.画出它的真值表 2.根据真值表写出逻辑式 3.画逻辑图 逻辑函数的表示 逻辑表达式 最小项 定义 基本性质 最小项编号 最小项表达式 得到此图的逻辑电路 1.画出它的真值表 这是同或的逻辑式。 2.根据真值表写出逻辑式 3.画逻辑图 有两种画法…

Android Fragment 学习备忘

1.fragment的动态添加与管理&#xff0c;fragment生命周期在后面小节&#xff1a;https://www.bilibili.com/video/BV1Ng411K7YP/?p37&share_sourcecopy_web&vd_source982a7a7c05972157e8972c41b546f9e4https://www.bilibili.com/video/BV1Ng411K7YP/?p37&share_…

Python 读取 Excel 数据|数据处理|Pandas|Excel操作

目录 1. 为什么选择 Python 读取 Excel 数据 2. Python 读取 Excel 数据的基本工具 2.1 Pandas 库 2.2 Openpyxl 库 2.3 xlrd 库 3. 读取 Excel 文件的高级操作 3.1 读取特定的工作表 3.2 读取特定的列和行 3.3 处理缺失数据 4. 实践应用示例 4.1 数据分析和可视化 …

ngrok | 内网穿透,支持 HTTPS、国内访问、静态域名

前言 当我们需要把本地开发的应用展示给外部用户时&#xff0c;常常会因为无法直接访问而陷入困境。 就为了展示一下&#xff0c;买服务、域名&#xff0c;搭环境&#xff0c;费钱又费事。 那有没有办法&#xff0c;让客户直接访问自己本机开发的应用呢&#xff1f; 这种需…

表格多列情况下,loading不显示问题

问题描述&#xff1a; 用element plus 做得表格&#xff0c;如下图&#xff0c;列数较多&#xff0c;且部分表格内容显示比较复杂&#xff0c;数据量中等的情况下&#xff0c;有一个switch 按钮&#xff0c;切换部分列的显示和隐藏&#xff0c;会发现&#xff0c;切换为显示的时…

逻辑运算基础知识

关系运算符 <:小于 <:小于等于 >:大于 >:大于等于 以上优先级相同&#xff1a;高 &#xff1a;等于 !&#xff1a;不等于 以上优先级相同&#xff1a;低 说明&#xff1a; 关系运算符的 优先级 低于 算数运算符 关系运算符的 优先级 大于 赋值运算符 逻辑运算&a…

前向渲染路径

1、前向渲染路径处理光照的方式 前向渲染路径中会将光源分为以下3种处理方式&#xff1a; 逐像素处理&#xff08;需要高等质量处理的光&#xff09;逐顶点处理&#xff08;需要中等质量处理的光&#xff09;球谐函数&#xff08;SH&#xff09;处理&#xff08;需要低等质量…

如何使用 PHP 函数与其他 Web 服务交互?

在 PHP 中&#xff0c;我们可以使用 cURL 或者 file_get_contents 函数与其他 Web 服务进行交互。 使用 cURL 函数 cURL 是一个库&#xff0c;它允许你使用各种类型的协议来发送数据&#xff0c;并从服务器获取数据。 $curl curl_init(‘http://example.com/api’); curl_s…

SprinBoot+Vue漫画天堂网的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平台Java领域优质…

前端框架有哪些?以及每种框架的详细介绍

目录 前言1. React2. Vue.js3. Angular4. Bootstrap5. Foundation总结 前言 前端框架是Web开发中不可或缺的工具&#xff0c;它们为开发者提供了丰富的工具和抽象&#xff0c;使得构建复杂的Web应用变得更加容易。当前&#xff0c;前端框架种类繁多&#xff0c;其中一些最受欢…

【全网最全】2024年数学建模国赛A题30页完整建模文档+17页成品论文+保奖matla代码+可视化图表等(后续会更新)

您的点赞收藏是我继续更新的最大动力&#xff01; 一定要点击如下的卡片那是获取资料的入口&#xff01; 【全网最全】2024年数学建模国赛A题30页完整建模文档17页成品论文保奖matla代码可视化图表等&#xff08;后续会更新&#xff09;「首先来看看目前已有的资料&#xff0…

应用开发“取经路”,华为应用市场送出全周期服务“助攻”

最近大量国内外玩家被西游神话圈粉&#xff0c;化身游戏人物角色&#xff0c;踏上了充满冒险的取经路。如果让莘莘学子或创业者们&#xff0c;在自己的职业生涯中&#xff0c;也选一个机遇跟挑战并存的角色&#xff0c;“开发者”一定榜上有名。 智能手机和移动互联网的普及&am…

30天pandas挑战

大的国家 挑选出符合要求的行 def big_countries(world: pd.DataFrame) -> pd.DataFrame:df world[(world[area] > 3000000) | (world[population] > 25000000)]return df[[name,population,area]] 在Pandas中&#xff0c;当你使用条件过滤时&#xff0c;应该使用 …

记一次升级 Viper、ETCD V3操作Toml

前一阵子碰到Go写的一项目&#xff0c;使用viper和ETCD进行Toml文件的存储与写入。在当我安装新版本的ETCD和升级Go依赖包之后出现了不兼容的问题。旧版viper为1.10版本&#xff0c;使用github.com/coreos/go-etcd v2.0.0incompatible 作为请求包。看了源码之后发现新的版本中废…

HashMap 底层原理解析

HashMap 是 Java 中非常常用的一个数据结构&#xff0c;它基于哈希表实现&#xff0c;提供了快速的键值对存储和检索。本文将深入探讨 HashMap 的底层实现原理&#xff0c;包括其数据结构、哈希函数、冲突解决机制以及扩容机制。 1. 哈希表基础 哈希表是一种通过哈希函数将键…