用「车载音乐悬浮抽屉」故事解析:com.tech.music 的隐藏工具栏

56 阅读5分钟

场景设定:车载音乐系统里的「魔术抽屉」—— 平时藏起来,需要时滑出

在车载音乐 App 的「大厦」中,除了主房间(登录界面、设置页面),还有一个特殊的小空间:搜索悬浮抽屉(Window #6)。它像汽车中控台里的隐藏储物格,平时收在底部,点击搜索按钮时才会弹出:

1. 抽屉的「身份标签」:悬浮在所有界面之上的搜索工具

plaintext

Window #6 Window{b1ce845 u0 com.tech.music}  
mDisplayId=0(主屏幕大厦1楼) rootTaskId=1(基础工程编号)  
package=com.tech.music(所属品牌:车载音乐科技)  
mBaseLayer=41000(楼层号:41000层,比所有房间都高)  
mViewVisibility=0x4(状态:半隐藏,像抽屉关了90%)  
isVisible=false(当前看不到抽屉内部)  

类比:这是车载音乐科技的第 6 号「搜索抽屉」,住在 41000 层 —— 比登录房间(21000 层)和设置工作室都高,意味着它能像无人机一样悬浮在任何界面上方。现在抽屉处于「半关」状态,从外面看不到里面的搜索框。

2. 抽屉的「设计图纸」:长条形的悬浮搜索框

plaintext

mAttrs={(60,1530)(1320x140)(位置:距左60cm,距顶1530cm,大小1320x140cm)  
ty=SEARCH_BAR(类型:专门搜歌的工具抽屉) fmt=RGBA_8888(材质:彩色不透明塑料)  
fl=NOT_FOCUSABLE(不能单独打开) LAYOUT_NO_LIMITS(可悬浮在任何位置)  
Requested w=1320 h=140(申请尺寸:长1320cm,高140cm,像车载中控的长条形储物格)  

类比

  • 搜索抽屉设计成「长条形储物格」,放在屏幕左下角 60cm、距顶部 1530cm 的位置(假设屏幕高 1920cm,1530cm 接近底部),正好适合开车时单手点击。
  • 材质是彩色不透明塑料,方便看清搜索框;但它「不能单独打开」,必须通过主界面的「搜索」按钮触发(比如按一下中控台上的放大镜图标)。
  • 允许悬浮在任何位置(LAYOUT_NO_LIMITS),就像车载手机支架,可以吸附在中控台上的任意地方。

3. 抽屉的「海拔高度」:为什么在 41000 层?

plaintext

mBaseLayer=41000(比所有房间的楼层都高)  

类比
这个搜索抽屉的「海拔」很高,意味着它像「悬浮在车顶的行李架」,无论用户当前在哪个界面(听音乐、调设置),只要触发搜索,行李架就会降下,覆盖在当前界面上方,不会被任何房间挡住。

4. 抽屉的「开关状态」:现在是「收起来」的状态

plaintext

mHasSurface=false(抽屉内部没开灯) isReadyForDisplay()=false(没准备好展示)  
mDrawState=NO_SURFACE(还没画出搜索框图案)  

类比
现在搜索抽屉是「锁在中控台里」的状态,内部没开灯,也没印上搜索框的图案(输入框、放大镜图标)。当用户点击主界面的「搜索」按钮时,抽屉会电动滑出(mHasSurface 变为 true),同时开灯,搜索框图案才会清晰显示。

5. 抽屉的「实际位置」:屏幕底部的 140cm 高度

plaintext

Frames: content=[60,1630][1380,1770](实际位置:左60cm,底部190cm(1920-1770=150))  
touchable region=长条形区域(60,16301380,1770

类比
搜索抽屉滑出时会停在屏幕底部,高度 140cm(1770-1630=140),正好对应车载中控台下的储物格高度。就像开车时伸手就能摸到的抽屉,方便快速输入歌曲名,不影响驾驶视线。

6. 抽屉的「兼容性」:不挡其他功能按钮

plaintext

fl=NOT_TOUCH_MODAL(不会阻断其他触摸操作)  
fitTypes=STATUS_BARS NAVIGATION_BARS(避开状态栏和导航栏)  

类比
搜索抽屉设计成「透明隔板」模式,比如用户在搜索时仍能点击背景的播放按钮,就像隔板不影响下面的物品取用。同时,它会自动避开顶部的状态栏(显示车速、时间)和底部的导航栏(返回主界面按钮),就像储物格不会挡住中控台上的物理按键。

总结:这个搜索抽屉什么时候派上用场?

这是车载音乐科技的搜索悬浮框,目前像中控台下的隐藏抽屉:

  • 住在 41000 层,比所有界面都高,确保弹出时覆盖在最上层;

  • 尺寸是长条形,放在屏幕底部附近,滑出时显示搜索输入框,适合开车时单手操作;

  • 当用户点击主界面的「搜索」按钮时,抽屉会从底部滑出(mHasSurface 变为 true),允许输入歌曲名,同时不影响背景播放界面的操作 —— 就像开车时伸手拉开储物格,快速拿取物品后又能推回去,不影响驾驶安全。

通过「车载隐藏储物格」的类比,能直观理解这类悬浮窗口的逻辑:平时隐藏不碍事,需要时快速弹出,符合车载场景的便捷性需求~