SEO技术

SEO技术

Products

当前位置:首页 > SEO技术 >

Android窗口属性有哪些?

96SEO 2026-09-06 09:25 3


在 Android 开发中,窗口属性决定了 Activity、Dialog、Service Window 等 UI 的外观与行为。它们从 styles.xml 传递到程序内核,再最终交由 WindowManagerService 处理。

常见开发者痛点汇总

  • statusBarColor 似乎没生效:大多数人只改了颜色,却忽略了 windowTranslucentStatus/DRAWS_SYSTEM_BAR_BACKGROUNDS/主题继承等细节。老实说,
  • windowsIsTranslucent/半透明 Activity 结果是黑屏:忘记同时设置 wndBackground=transparentwndDisablePreview=true
  • 弹窗/悬浮窗点击外部却不关闭:没有正确配置 wndCloseOnTouchOutside + FLAG_NOT_TOUCH_MODAL + WATCH_OUTSIDE_TOUCH
  • AOD 或锁屏界面被截屏:未开启 wndSecure=true
  • 键盘适配失效: 无论是聊天页面还是登录页。都因布局层级或输入法类型导致键盘覆盖输入框。
  • <强>"全屏模式下状态栏依旧可见": 没有清楚地切换到沉浸式模式。
  • <强>"启动页面闪烁白屏": 未关闭默认预览或未设置透明背景。
  • <强>"共享元素动画出现白色闪烁": 背景淡出时长和过渡动画冲突。
  • <强>"Edge-to-Edge 默认开启导致布局被拉伸": 未 opt-out 或未适配 WindowInsets。
  • <强>"FLAG_LAYOUT_IN_SCREEN 与 FLAG_LAYOUT_NO_LIMITS 误用导致绘制错误".

*上述问题均可通过正确配置 Theme 属性与代码组合解决;以下章节将逐条拆解实现方法与常用方法。

Android窗口属性有哪些?

1 架构概览:Theme → PhoneWindow 的数据流

AndroidManifest.xml 中指定的 Theme / setTheme │ Resources.Theme │ context.obtainStyledAttributes ▼ TypedArray │ ├──▶ PhoneWindow 构造函数 ──▶ 读取约 个属性 │ ├──▶ mIsFloating │ ├──▶ 部分 flags │ └──▶ 初始 LayoutParams 设置 │ └──▶ PhoneWindow.generateLayout  ──▶ 读取约 + 个属性 | ... | ...

说到关键类说明。

Window : 抽象基类,定义 flags、type、softInputMode、features 等抽象方法 App进程 PhoneWindow : 程序内部唯一实现 WindowManager.LayoutParams: 描述 Window 的布局参数 WindowManagerService : 程序服务,管理所有窗口 Z-order、尺寸、输入事件等 SurfaceFlinger : GPU 合成层

关键认知:    Theme 属性 → PhoneWindow → LayoutParams → WMS   这条链路中真正使用者是 WMS。

1.1 属性定义:R.styleable.Window

所有 Window 相关的 me 属性定义在 AOSP 的 frameworks/base/core/res/res/values/attrs.xml 中…,截至 Android API,该 styleable 包含约 + 个属性。



...

这些属性被程序预置 Theme设置默认值;应用层通过自定义 Theme 覆写。

1.1.1 默认值来源链举例

Theme.Material3.DayNight.NoActionBar
└─ parent: Theme.Material3.DayNight
└─ parent: Theme.Material3.Light
...
└─ parent: Platform

. 在你的 Theme 中设置的属性,会逐级向上覆盖父主题同名属性。

2 PhoneWindow 读取属性两个入口

. 构造函数一次读取 Window Styleable

public PhoneWindow(Context context。Window preserved,ActivityConfigCallback callback){
super;按理说,mLayoutInflater = LayoutInflater.from;// ★ 第一次读取 Window Styleable
TypedArray a = context.obtainStyledAttributes(
null。R.styleable.Window,/* defStyleAttr = */0,R.style.PhoneWindow);// defStyleRes
}

. 第一次消费的大约+个字段主要涉及 flags、type 等基本特性;后续生成布局时再补充细节。

至于关键参数解析,set=null / defStyleAttr / defStyleRes

  • a.getBoolean;若设为 true 则立即添加 NOT_TOUCHABLE|NOT_FOCUSABLE flag 并禁用 InputChannel。这正是 “窗口完全不可交互” 的根本原因!
    • a.getBoolean;添加 FLAG_SPLIT_TOUCH;让多指触摸可以分别命中不同窗口——非常关键在分屏或游戏双摇杆场景下才会用到。...
. 示例代码:windowNoDisplay -> FLAG_NOT_TOUCHABLE | NOT_FOCUSABLE & InputFeature.NO_INPUT_CHANNEL java if){ setFlags(FLAG_NOT_TOUCHABLE|FLAG_NOT_FOCUSABLE,FLAG_NOT_TOUCHABLE|FLAG_NOT_FOCUSABLE);final LayoutParams params = getAttributes;params.inputFeatures |= INPUT_FEATURE_NO_INPUT_CHANNEL;}

. generateLayout 二次读取

java protected ViewGroup generateLayout{ TypedArray a = getWindowStyle;// 获取 attributes // …话说回来,≈+ 个属性消费 …}
  • *为什么两次?* 因为在 `generateLayout` 前可能已经执行了 `requestFeature` / `addFlags` / `setSoftInputMode` 等 API——我们要保证这些显式调用不会被后续主题覆盖。
    .
    实现思路这方面。**标记位模式** —— 每个可覆写字段都有一个 `mHasXxx` 标记,如果已在代码里设定就不再受主题影响。
    • `mHasSoftInputMode` ← `setSoftInputMode` 调用后设为 true 并记录值;若未调用则取主题默认,...

    3 WindowManager.LayoutParams Flags

    **为什么要理解 Flags?** 因为每个 Flag 都代表一个独立行为开关,没有它们就无法解释为何某些 UI 行为失效。怎么说呢,

    . 什么是 Flags?

    text int flags : bitmask
    # Bits Set As Flag Name & Effect Category *
    布局相关 | 输入/焦点 | 程序栏 | 安全显示 | 锁屏 | …etc.

    . 布局相关 Flags

    . FLAGLAYOUTIN_SCREEN``

    作用 :允许内容延伸至整个屏幕,包括状态栏和导航栏后面。

    WMS 效果 : - 内容区域变为 而非。- 程序栏仍可见,只是可画到其后面。

    典型场景 : - 状态栏背景延伸到状态栏后面。- 全屏视频播放器但保留状态栏。不过,

    . FLAGLAYOUTNO_LIMITS``

    作用 :允许窗口超出物理边界。用于 CRT 屏幕过扫描时代。

    WMS 效果 :仅用于老 TV 和 TV 模式;现在基本废弃,

    . FLAGLAYOUTATTACHEDINDECOR``

    网站内部标志,不应手动设置。


    . 输入与焦点 Flags

    . FLAGNOTTOUCHABLE``

    不能接收任何触摸事件;事件穿透到底层,

    . FLAGNOTFOCUSABLE``

    不能成为键盘焦点;若同时设置 NOT_TOUCHABLE 则完全不可交互。

    . FLAGWATCHOUTSIDE_TOUCH``

    监听外部触摸事件,用于 Dialog 点击外部关闭等功能。按理说,

    . FLAGNOTTOUCH_MODAL``

    让触摸事件穿透至后方窗口——悬浮球等情况必需。

    . FLAGSPLITTOUCH``

    支持多指触摸分别命中不同窗口——分屏、多窗口游戏场景必备。

    . 程序栏 Flags

    . FLAG_FULLSCREEN – 隐藏程序栏并占满全部空间
    . FLAG_TRANSLUCENT_STATUS/NIGATION – 半透明状态栏/导航栏
    关键组合

    text windowTranslucentStatus=true => FLAG_TRANSLUCENT_STATUS windowDrawsSystemBarBackgrounds=true => FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS statusBarColor=color => 实际渲染颜色 如果缺一不可,“statusBarColor” 将无效!说起来,


    . 安全与显示 Flags

    . FLAG_SECURE – 禁止截屏录制

    ⚠️ 注意此 flag 同时会阻止 ADB screencapscreenrecord,第三方录音软件,还有程序快捷键截图都显示黑色,但无法阻止物理拍照!


    . 锁屏相关 Flags

    Flag 用途
    SHOWWHENLOCKED 在锁屏上方显示
    DISMISS_KEYGUARD 自动解除滑动锁
    TURNSCREENON 打开时亮屏
    KEEPSCREENON 防止熄灯

    4 Theme 属性分类详解

    下面按功能类别逐一说明对应 Java 消费方法及典型使用场景,同时指出常见坑点与方法。

    窗口 Flags 类

    android.windowNoDisplay

    xml

    Java的观点是。

    java if){ setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,same);final LayoutParams lp=getAttributes;lp.inputFeatures |= INPUT_FEATURE_NO_INPUT_CHANNEL;}

    使用场景后台 Service 持有 window 无 UI 时使用,以防止误弹窗干扰使用者体验。

    android.windowDisablePreview

    类似上文,仅添加 FLAG_DISABLE_PREVIEW;常用于自定义 Splash 或半透明 Activity 避免启动白色闪烁。

    android.windowEnableSplitTouch

    Adds FLAG_SPLIT_TOUCH;话说回来,必须配合多指触控需求,如分屏、游戏双摇杆。

    android.windowShowWallpaper

    Adds WINDOW_SHOW_WALLPAPER;常用于 Launcher 或半透明风格 App。

    android.windowBlurBehind

    Adds WINDOW_BLUR_BEHIND;对应 API+ GPU 模糊效果,需要配合 windowBackgroundBlurRadius 调整性能。

    android.windowSecure

    Add WINDOW_SECURE;常用于银行 APP、密码输入页等敏感页面。

    android.windowNotTouchable

    Sets WINDOW_FLAGS.NOT_TOUCHABLE;用于 Loading 覆盖层或纯展示页,无需交互。

    窗口 Type 类

    android.windowIsFloating

    Sets internal flag mIsFloating. Generates dialog‑style layout . Used for Dialog‑styled Activities or Picture‑in‑Picture windows.

    尺寸与布局类

    如:

    xml 320dp 600dp

    PhoneWindow 在 generateLayout 根据是否满足条件修改相应 width/height/minWidth/minHeight。

    背景与样式类

    Key attributes:

    Attr Effect
    windowBackground DecorView background drawable/color
    windowClipToOutline Enables outline clipping
    windowElevation Z‑axis shadow offset

    从常见坑来看,

    • 半透明 Activity 未把 background 设置为 transparent -> 黑色背景!老实说,
    • 圆角窗体需同时开启 clipToOutline 与 outline drawable。

    程序状态栏/导航栏类

    说到主要三步。

    如果缺一不可,“statusBarColor” 将不起作用!在 Android 13+ 默认 Edge‑to‑Edge 所以无需手动开启,但旧主题仍需手工配置。

    SoftKeyboard Class

    Attribute is a bitmask combining state and adjust bits:

    xml android:windowSoftInputMode= "stateVisible|adjustResize"

    Common combinations: - adjustResize: compress view when keyboard pops up—ideal for chat lists. - adjustPan: move whole view upward—good for simple forms at bottom. - stateAlwaysHidden: keyboard stays hidden until explicitly requested—useful in search pages.

    Transition Animation Class

    Enable with:

    xml android:windowActivityTransitions=true android:windowEnterTransition="@transition/explode" android:windowExitTransition="@transition/fade"

    If you see white flash during shared element transition,increase

    xml android:windowTransitionBackgroundFadeDuration=" to smooth out.

    Pixel Format & Rendering Class

    xml android:isTranslucent=true // changes Surface pixel format to TRANSLUCENT

    Effects: - SurfaceFlinger now performs per‑pixel blending → performance hit on low‑end devices. - Must pair with transparent background and optionally disable preview.

    完整映射速查表

    Flag Attribute NameConsumer Entry PointTarget Field/Effect

    手机操作提示及常见陷阱说明...

    此处略去大量详细映射表…,请结合官方文档进一步阅读!✂️ ✂️ ✂️ 🛠️🛠️🛠️ 🧩🧩🧩 📚📚📚 🚀🚀🚀 🔑🔑🔑   💡💡💡   🏆🏆🏆 ↕↕↕   ⏳⏳⏳ ⏰⏰⏰ ⬅️➡️⬇️⬆️ ➖➕ ➖➕ ➖➕ ➖➕ ⬢⬢ ⬢⬢ ⬢⬢ ▽▽▽ ▽▽▽ ▽▽▽ ▽▽▽ ▓▓▓▒▒▒░░░▉▉▉▍▍▍▎▎▎☂☂☂ ☃☃☃ ☾☾☾ ⚡⚡⚡ 🌑🌑🌑 🌝🌝🌝 ❗❗❗ 🔴🔴🔴 ⚙⚙⚙ 📺📺📺 👓👓👓 💭💭💭 💬💬💬 👋👋👋 👨‍🍳👨‍🍳👨‍🍳 🐛🐛🐛 🎮🎮🎮 🏞️🏞️🏞️ ✈️✈️✈️ 🚲🚲🚲 🚀🚀🚀 🎥🎥🎥 🖼️🖼🖼 ✨✨✨ 🎉🎉🎉 ⚠⚠⚠ 🔒🔒🔒 🔓🔓🔓 🔐🔐🔐 ❌❌❌ ✔✔✔ ♻♻♻ ✋✋✋ 🚫🚫🚫 🌟🌟🌟 💡💡💡 🧪🧪🧪 💎💎💎 💸💸💸 🚦🚦🚦 🔴⚫◼︎◼︎▪︎▪︎●●● ◾◾◾ ◇◇◇ ••••• •••• •• • •••• •••• …说起来,​

    #️⃣

    Property Name In xml Attribute file e.g.。styles.xml or mes.xml.Consumer entry point,i.e.,where it’s read by framework.Target field,i.e.,which field in phonewindo….
               onCreate

    ...


    实战场景速查

    显示全屏视频或游戏页面——隐藏程序栏且保持滑动唤醒功能→ 标准做法如下:

    xml


标签: 属性

SEO优化服务概述

作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。

百度官方合作伙伴 白帽SEO技术 数据驱动优化 效果长期稳定

SEO优化核心服务

网站技术SEO

  • 网站结构优化 - 提升网站爬虫可访问性
  • 页面速度优化 - 缩短加载时间,提高用户体验
  • 移动端适配 - 确保移动设备友好性
  • HTTPS安全协议 - 提升网站安全性与信任度
  • 结构化数据标记 - 增强搜索结果显示效果

内容优化服务

  • 关键词研究与布局 - 精准定位目标关键词
  • 高质量内容创作 - 原创、专业、有价值的内容
  • Meta标签优化 - 提升点击率和相关性
  • 内容更新策略 - 保持网站内容新鲜度
  • 多媒体内容优化 - 图片、视频SEO优化

外链建设策略

  • 高质量外链获取 - 权威网站链接建设
  • 品牌提及监控 - 追踪品牌在线曝光
  • 行业目录提交 - 提升网站基础权威
  • 社交媒体整合 - 增强内容传播力
  • 链接质量分析 - 避免低质量链接风险

SEO服务方案对比

服务项目 基础套餐 标准套餐 高级定制
关键词优化数量 10-20个核心词 30-50个核心词+长尾词 80-150个全方位覆盖
内容优化 基础页面优化 全站内容优化+每月5篇原创 个性化内容策略+每月15篇原创
技术SEO 基本技术检查 全面技术优化+移动适配 深度技术重构+性能优化
外链建设 每月5-10条 每月20-30条高质量外链 每月50+条多渠道外链
数据报告 月度基础报告 双周详细报告+分析 每周深度报告+策略调整
效果保障 3-6个月见效 2-4个月见效 1-3个月快速见效

SEO优化实施流程

我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:

1

网站诊断分析

全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。

2

关键词策略制定

基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。

3

技术优化实施

解决网站技术问题,优化网站结构,提升页面速度和移动端体验。

4

内容优化建设

创作高质量原创内容,优化现有页面,建立内容更新机制。

5

外链建设推广

获取高质量外部链接,建立品牌在线影响力,提升网站权威度。

6

数据监控调整

持续监控排名、流量和转化数据,根据效果调整优化策略。

SEO优化常见问题

SEO优化一般需要多长时间才能看到效果?
SEO是一个渐进的过程,通常需要3-6个月才能看到明显效果。具体时间取决于网站现状、竞争程度和优化强度。我们的标准套餐一般在2-4个月内开始显现效果,高级定制方案可能在1-3个月内就能看到初步成果。
你们使用白帽SEO技术还是黑帽技术?
我们始终坚持使用白帽SEO技术,遵循搜索引擎的官方指南。我们的优化策略注重长期效果和可持续性,绝不使用任何可能导致网站被惩罚的违规手段。作为百度官方合作伙伴,我们承诺提供安全、合规的SEO服务。
SEO优化后效果能持续多久?
通过我们的白帽SEO策略获得的排名和流量具有长期稳定性。一旦网站达到理想排名,只需适当的维护和更新,效果可以持续数年。我们提供优化后维护服务,确保您的网站长期保持竞争优势。
你们提供SEO优化效果保障吗?
我们提供基于数据的SEO效果承诺。根据服务套餐不同,我们承诺在约定时间内将核心关键词优化到指定排名位置,或实现约定的自然流量增长目标。所有承诺都会在服务合同中明确约定,并提供详细的KPI衡量标准。

SEO优化效果数据

基于我们服务的客户数据统计,平均优化效果如下:

+85%
自然搜索流量提升
+120%
关键词排名数量
+60%
网站转化率提升
3-6月
平均见效周期

行业案例 - 制造业

  • 优化前:日均自然流量120,核心词无排名
  • 优化6个月后:日均自然流量950,15个核心词首页排名
  • 效果提升:流量增长692%,询盘量增加320%

行业案例 - 电商

  • 优化前:月均自然订单50单,转化率1.2%
  • 优化4个月后:月均自然订单210单,转化率2.8%
  • 效果提升:订单增长320%,转化率提升133%

行业案例 - 教育

  • 优化前:月均咨询量35个,主要依赖付费广告
  • 优化5个月后:月均咨询量180个,自然流量占比65%
  • 效果提升:咨询量增长414%,营销成本降低57%

为什么选择我们的SEO服务

专业团队

  • 10年以上SEO经验专家带队
  • 百度、Google认证工程师
  • 内容创作、技术开发、数据分析多领域团队
  • 持续培训保持技术领先

数据驱动

  • 自主研发SEO分析工具
  • 实时排名监控系统
  • 竞争对手深度分析
  • 效果可视化报告

透明合作

  • 清晰的服务内容和价格
  • 定期进展汇报和沟通
  • 效果数据实时可查
  • 灵活的合同条款

我们的SEO服务理念

我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。

提交需求或反馈

Demand feedback