android中的UI中的窗口之Window类介绍,组件化与插件化的差别在哪里

本文详细解释了Android中的窗口类型(应用窗口、子窗口和系统窗口),包括它们的位置、尺寸调整、内存缓冲和行为标志。介绍了Applicationwindows、Sub_windows和System_windows的不同用途和属性设置。
摘要由CSDN通过智能技术生成

public int x;

public int y;

如果忽略gravity属性,那么它表示窗口的x/y绝对位置。当设置了Gravity.LEFT或Gravity.RIGHT之后,x/y值就表示到特定边的距离。

float horizontalWeight  float erticalWeight

表示在水平或垂直方向上有多少空间可以放大拉伸的,如果定义0则不能拉伸,其它值则会按比例均给所有的Views。

public int type;

窗口类型:有3种主要类型

Applicationwindows:取值在 FIRST_APPLICATION_WINDOW和LAST_APPLICATION_WINDOW 之间。

是通常的、顶层的应用程序窗口,必须将token设置成activity的token。

Sub_windows:取值在 FIRST_SUB_WINDOW和 LAST_SUB_WINDOW 之间。

与顶层窗口相关联,token必须设置为它所附着的宿主窗口的token。

Systemwindows:取值在 FIRST_SYSTEM_WINDOW和 LAST_SYSTEM_WINDOW 之间。

用于特定的系统功能。它不能用于应用程序,使用时需要特殊权限。

Applicaitonwindows:

public static final int FIRST_APPLICATION_WINDOW = 1; 应用程序窗口

public static final int TYPE_BASE_APPLICATION   = 1; 所有应用基本的应用窗口,所有的其它应用窗口都必须出现在它上面

public static final int TYPE_APPLICATION        = 2; 普通应用程序窗口。token必须设置为Activity的token,以指出该窗口属谁

public static final int TYPE_APPLICATION_STARTING = 3;应用启动的特定应用窗口,由系统来使用直到应用显示它自己的窗口

public static final int LAST_APPLICATION_WINDOW = 99; 应用结束窗口

sub_window:

public static final int FIRST_SUB_WINDOW        = 1000; 子窗口。子窗口的Z序和坐标空间都依赖于他们的宿主窗口。

public static final int TYPE_APPLICATION_PANEL  = FIRST_SUB_WINDOW; 面板窗口,显示于宿主窗口上层。

public static final int TYPE_APPLICATION_MEDIA  = FIRST_SUB_WINDOW+1; 媒体窗口,例如视频。显示于宿主窗口下层。

public static final int TYPE_APPLICATION_SUB_PANEL = FIRST_SUB_WINDOW+2; 应用程序窗口的子面板。显示于所有面板窗口的上层。(GUI的一般规律,越“子”越靠上)

public static final int TYPE_APPLICATION_ATTACHED_DIALOG = FIRST_SUB_WINDOW+3; 对话框。类似于面板窗口,绘制类似于顶层窗口,而不是宿主的子窗口。

public static final int TYPE_APPLICATION_MEDIA_OVERLAY  = FIRST_SUB_WINDOW+4; 媒体信息。显示在媒体层和程序窗口之间,需要实现透明(半透明)效果。(如显示字幕)

public static final int LAST_SUB_WINDOW         = 1999; 子窗口结束窗口。

systemwindow:

public static final int FIRST_SYSTEM_WINDOW    = 2000;  系统窗口。非应用程序创建。

public static final int TYPE_STATUS_BAR =FIRST_SYSTEM_WINDOW;  状态栏。只能有一个状态栏;它位于屏幕顶端,其他窗口都位于它下方。

public staticfinal int TYPE_SEARCH_BAR =FIRST_SYSTEM_WINDOW+1;  搜索栏。只能有一个搜索栏;它位于屏幕上方。

public staticfinal int TYPE_PHONE  =FIRST_SYSTEM_WINDOW+2;  电话窗口。它用于电话交互(特别是呼入)。它置于所有应用程序之上,状态栏之下。

public staticfinal int TYPE_SYSTEM_ALERT = FIRST_SYSTEM_WINDOW+3;  系统提示。它总是出现在应用程序窗口之上。

public staticfinal int TYPE_KEYGUARD  =FIRST_SYSTEM_WINDOW+4;  锁屏窗口。

public staticfinal int TYPE_TOAST            =FIRST_SYSTEM_WINDOW+5; 信息窗口。用于显示toast。

public staticfinal int TYPE_SYSTEM_OVERLAY    = FIRST_SYSTEM_WINDOW+6;  系统顶层窗口。显示在其他一切内容之上。此窗口不能获得输入焦点,否则影响锁屏。

public staticfinal int TYPE_PRIORITY_PHONE    = FIRST_SYSTEM_WINDOW+7;  电话优先,当锁屏时显示。此窗口不能获得输入焦点,否则影响锁屏。

public staticfinal int TYPE_SYSTEM_DIALOG     = FIRST_SYSTEM_WINDOW+8;  系统对话框。(例如音量调节框)。

public staticfinal int TYPE_KEYGUARD_DIALOG   = FIRST_SYSTEM_WINDOW+9; 锁屏时显示的对话框。

public staticfinal int TYPE_SYSTEM_ERROR      = FIRST_SYSTEM_WINDOW+10; 系统内部错误提示,显示于所有内容之上。

public staticfinal int TYPE_INPUT_METHOD      = FIRST_SYSTEM_WINDOW+11; 内部输入法窗口,显示于普通UI之上。应用程序可重新布局以免被此窗口覆盖。

public staticfinal int TYPE_INPUT_METHOD_DIALOG=FIRST_SYSTEM_WINDOW+12; 内部输入法对话框,显示于当前输入法窗口之上。

public staticfinal int TYPE_WALLPAPER         =FIRST_SYSTEM_WINDOW+13;  墙纸窗口。

public staticfinal int TYPE_STATUS_BAR_PANEL   =FIRST_SYSTEM_WINDOW+14; 状态栏的滑动面板。

public staticfinal int LAST_SYSTEM_WINDOW     = 2999;  系统窗口结束。

public int memoryType;  窗口所使用的内存缓冲类型,默认为NORMAL。

public staticfinal int MEMORY_TYPE_NORMAL = 0; 窗口缓冲位于主内存。

public staticfinal int MEMORY_TYPE_HARDWARE = 1; 窗口缓冲位于可以被DMA访问,或者硬件加速的内存区域。

public staticfinal int MEMORY_TYPE_GPU = 2; 窗口缓冲位于可被图形加速器访问的区域。

public staticfinal int MEMORY_TYPE_PUSH_BUFFERS = 3; 窗口缓冲不拥有自己的缓冲区,不能被锁定。缓冲区由本地方法提供。

public int flags;  行为选项/标志,默认为none

public staticfinal int FLAG_DIM_BEHIND       = 0x00000002; 窗口之后的内容变暗。

public staticfinal int FLAG_BLUR_BEHIND       = 0x00000004;窗口之后的内容变模糊。

另外,还有输入法和Grativity的标志属性等。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
img

题外话

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在IT学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多程序员朋友无法获得正确的资料得到学习提升,故此将并将重要的Android进阶资料包括自定义view、性能优化、MVC与MVP与MVVM三大框架的区别、NDK技术、阿里面试题精编汇总、常见源码分析等学习资料免费分享出来。
Android学习PDF+学习视频+面试文档+知识点笔记

【Android思维脑图(技能树)】

知识不体系?这里还有整理出来的Android进阶学习的思维脑图,给大家参考一个方向。

需要的朋友,可以点赞关注+转发”前往免费领取!

oid进阶资料包括自定义view、性能优化、MVC与MVP与MVVM三大框架的区别、NDK技术、阿里面试题精编汇总、常见源码分析等学习资料免费分享出来。
Android学习PDF+学习视频+面试文档+知识点笔记

【Android思维脑图(技能树)】

知识不体系?这里还有整理出来的Android进阶学习的思维脑图,给大家参考一个方向。

[外链图片转存中…(img-TZWqJ7D2-1711140319244)]

需要的朋友,可以点赞关注+转发”前往免费领取!

希望我能够用我的力量帮助更多迷茫、困惑的朋友们,帮助大家在IT道路上学习和发展~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值