游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

FrameworkWMS之WindowManager(窗口管

  1、简介
  WindowManager(窗口管理服务),它是显示View的最底层,Toast,Activity,Dialog的底层都用到了这个WindowManager,他是全局的!该类的核心无非:调用addView,removeView,updateViewLayout这几个方法来显示View以及通过WindowManager。LayoutParams这个API来设置相关的属性。
  Android为我们提供的用于与窗口管理器进行交互的一个API。我们都知道App的界面都是由一个个的Acitivty组成,而Activity又由View组成,当我们想显示一个界面的时候,第一时间想起的是:Activity,又或者是Dialog和Toast。但是有些情况下,前面这三者可能满足不了我们的需求,比如我们仅仅是一个简单的显示用Activity显得有点多余了,而Dialog又需要Context对象,Toast又不可以点击。对于以上的情况我们可以利用WindowManager添加View到屏幕上,或者从屏幕上移除View。他就是管理Android窗口机制的一个接口,显示View的最底层。2、WMS功能介绍
  要想了解WindowManager管理机制,首先我们先介绍WMS是一个非常重要的系统服务。
  它支撑着视图相关的各项业务,这非常符合软件设计的单一职责原则,其业务和ActivityManagerService(简称AMS)一起几乎占据了framework业务的半壁江山,可见其重要性。关于WMS的内容实在太多了,这里只简单介绍其大致功能以及启动流程。WMS的大概功能如下图所示:
  这里先简单描述一下各项功能:窗口管理:WMS是窗口管理者,结合WindowManager实现窗口的启动、添加、删除,以及管理窗口的大小、层级等。窗口动画:在窗口切换时,使用窗口动画可以使这个过程看起来更炫更生动,这个窗口动画就是由WMS的动画子系统来负责的,动画子系统的管理者便是WindowAnimator。输入系统的中转站:触摸设备屏幕上的窗口时会产生触摸事件,InputManagerService(IMS)会对触摸事件进行处理,找到最合适的窗口来反馈事件。而WMS是这些窗口的管理者,那自然而然就成为了输入系统的中转站了。Surface管理:窗口并不具备绘制功能,所以每个窗口都需要一个Surface来供自己绘制,WMS就是这个Surface的管理者。WindowManager实现悬浮窗详解
  关于SYSTEMALERTWINDOW权限申明直接报错设置windowtypeif(Build。VERSION。SDKINTBuild。VERSIONCODES。KITKAT){mWinParams。typeWindowManager。LayoutParams。TYPETOAST;}else{mWinParams。typeWindowManager。LayoutParams。TYPEPHONE;}原因1:type为TYPETOAST在sdk19之前不接收事件,之后可以。原因12:type为TYPEPHONE需要SYSTEMALERTWINDOW权限。在sdk19之前不可以直接申明使用,之后不能直接申明使用。
  三:用到的技术知识点:1。OnTouch()的事件处理2。WindowManager类及其LayoutParams的常见属性的理解3。Handler更新UI4。定时器(TimerTimerTask)1。OnTouch事件处理
  这个网上的资料很多,这里说一些注意点:
  1。获取坐标event。getRawX():获取相对屏幕的坐标X(获取Y的坐标同理)event。getX():获取相对于容器的坐标X(获取Y的坐标同理)
  2。返回值returntrue:表示事件不往下传递了returnfalse:表示继续传递事件2。WindowManager类
  获取方式:mWmManager(WindowManager)context。getSystemService(Context。WINDOWSERVICE);WindowManager。LayoutParams类this。mWinParamsnewWindowManager。LayoutParams();设置图片格式,效果为背景透明mWinParams。formatPixelFormat。RGBA8888;设置浮动窗口不可聚焦(实现操作除浮动窗口外的其他可见窗口的操作)mWinParams。flagsWindowManager。LayoutParams。FLAGNOTFOCUSABLE;参考系为左上mWinParams。gravityGravity。LEFTGravity。TOP;mScreenHeightmWmManager。getDefaultDisplay()。getHeight();以屏幕左上角为原点,设置x、y初始值,相对于gravitymWinParams。xmScreenWidth4;mWinParams。ymScreenHeight4;设置悬浮窗口长宽数据mWinParams。widthFrameLayout。LayoutParams。WRAPCONTENT;mWinParams。heightFrameLayout。LayoutParams。WRAPCONTENT;
  其中需要注意的是其Gravity属性:
  注意:Gravity不是说你添加到WindowManager中的View相对屏幕的几种放置,而是说你可以设置你的参考系!
  例如:mWinParams。gravityGravity。LEFTGravity。TOP;意思是以屏幕左上角为参考系,那么屏幕左上角的坐标就是(0,0),这是你后面摆放View位置的唯一依据。当你设置为mWinParams。gravityGravity。CENTER;那么你的屏幕中心为参考系,坐标(0,0)。一般我们用屏幕左上角为参考系。设置WindowManager中的View的透明度
  使用:LayoutParams。alpha属性(0。0f1。0f),1。0f不透明,0。0f全透明,源码如下:Analphavaluetoapplytothisentirewindow。Analphaof1。0meansfullyopaqueand0。0meansfullytransparentpublicfloatalpha1。0f;Handler更新UI(略)定时器TimerTasktimerTasknewTimerTask(){其实就是一个Runnable};看他的类:publicabstractclassTimerTaskimplementsRunnable{。。。}TimermtimernewTimer();使用的时候:mtimer。schedule(timerTask,0,3);参数1:执行的任务;参数2:延迟0毫米执行;参数3:每隔3毫秒执行一次任务;
  要实现WindowManager添加的窗口,实现动画显示,就需要添加如下红色的属性,其他的添加View只要设置其Animations属性也会实现动画,当然自己实现也可,但是能直接用系统的已经实现好的,也很方便。windowManager(WindowManager)mContext。getSystemService(Context。WINDOWSERVICE);WindowParamsnewLayoutParams(LayoutParams。FLAGFULLSCREEN,LayoutParams。FLAGFULLSCREEN);WindowParams。typeLayoutParams。TYPESYSTEMERROR;WindowParams。flagsLayoutParams。FLAGALTFOCUSABLEIM;windowgetsfocusWindowParams。formatPixelFormat。TRANSPARENT;settheopacityto100WindowParams。windowAnimationsandroid。R。style。AnimationTranslucent;settheanimationforthewindowWindowParams。gravityGravity。RIGHTGravity。TOP;windowManager。addView(view,WindowParams);展示:
  【私信获取】《Framework精通手册》、
  发送资料,即可领取!
  【私信发送手册获取】FrameWork源码解析手册文末
  本文简单实现一个悬浮窗;framework之wms机制中的WindowManager(窗口管理服务)得简单使用。总上面可以领取framework学习资料,自己整理出的很全的核心技术点。私信可免费获取。

索尼Walkman40周年,主题网站已上线IT之家8月16日消息今年是索尼Walkman的40周年,索尼也是制作了主题网站和回顾视频,带你回顾1979年到2019年Walkman的40年。据了解,在1979年7月……日本乒乓女王福原爱,和她背后的四个男人文微史解读编辑微史解读初恋遇人不淑,遭渣男劈腿;头婚又碰上两面派丈夫,孕期被无情PUA;转头结识第三任,却又陷入出轨、知三当三的负面新闻中。提及日……发布光追整整一年后,英伟达又带来了什么?2018年SIGGRAPH,英伟达CEO黄仁勋发布了能够在实时渲染中完成光线追踪的RTX平台。一年后,比行业预测提前五年发布的RTX已经收获了超过40款行业顶尖软件开发商的入驻……拟上市公司早知道星汉智能水晶岛等7家公司启动A股IPO辅导首次公开发行股票并上市公司辅导备案的公示1。新辅导公司:星汉智能科技股份有限公司成立于2011年,作为嵌入式智能安全产品的领军企业之一,星汉为客户提供安全、支付、通……AMD推出Radeon600系列显卡,针对低端市场IT之家8月14日消息根据外媒AnandTech的报道,昨天AMD悄然宣布了新一代显卡,Radeon600系列,主要针对低端市场。据介绍,Radeon600系列是AMD现……爆料AMD正在准备一款NvidiaKiller显卡IT之家8月10日消息根据外媒OC3D的报道,AMD正在开发一款GPU,他们称之为NvidiaKiller。据报道,RedGamingTech声称AMD的英伟达杀手将以N……索尼2020年发售的PS5将是世上最快的主机IT之家10月25日消息近日,索尼公布了一则招聘启事,索尼在文中提到即将在2020年到来的PS5将是世界上最快的游戏主机。索尼将招聘工程师建立下一代云基础设施,而且招聘的……索尼PS5处理器性能可达PS4四倍,显卡不输GTX1080IT之家10月23日消息根据WCCFTECH的报道,在上周末的EGX2019期间,DigitalFoundry证实,索尼PlayStation5SoC的代号为Gonzalo、O……AMD发布Radeon5700XT50周年高性能纪念版显卡IT之家6月11日消息IT之家现场报道,在今天早晨的AMD的NextHorizonGaming发布会上,AMD总裁兼首席执行官Dr。LisaSu,正在展示AMD新一代游戏产品和……战舰世界全新版本正式上线,2021华人巅峰赛精彩纷呈很多军迷都对驰骋于汪洋的海洋巨兽战舰念念不忘,对这种神秘的庞然大物有着无限的憧憬与幻想。如果你对这些叱咤风云的海洋霸主感兴趣的话,那请一定不要错过《战舰世界》这款热门端游。它为……AMDRadeon5700系列显卡价格公布!379美元起IT之家6月11日消息IT之家现场报道,AMDRadeon5700系列显卡价格公布!379美元起早在之前,AMDCEO苏姿丰在台北电脑展进行主题演讲,并发布了首款Navi……广汇汽车借壳8年首亏22亿短债422亿悬顶上交所因定增违规对长江商报记者魏度新疆首富孙广信感受到了寒意。3月10日晚间,孙广信打造的广汇系旗下的广汇汽车(600297。SH)发布提示性公告,广汇转债预计触发转股价格向下修正条……
不要买错,微软发布了新版XboxSeriesX概念迷你冰箱来源:GameRent编译卡卡布微软游戏营销资深人士亚伦格林伯格宣布,新版XboxSeriesX迷你冰箱现已在零售商处上架。Xbox游戏营销副总裁AaronGree……他66岁,身家1450亿,送客户奔驰宝马,带34人成亿万富豪中国的亿万富豪,贡献过不少凡尔赛金句。王健林:先定一个能达到的小目标,比方说我先挣它一个亿。刘强东:我和她在一起不是因为她(章泽天)漂亮,因为我根本不知……烟雨红尘,最留恋的,是江南的烟雨这一季,最美的情怀。烟雨红尘,最留恋的,是江南的烟雨。烟雨红尘,最难忘的,是谁,湿湿了相思的眼?执手红尘,看陌上花开,蝶舞蜂飞,生生寂,是空气中弥漫的花香,醉了一地……杰伦布朗我为艰苦的比赛做好了准备但掘金三分30中17有点离谱直播吧1月2日讯在今天结束的一场NBA常规赛中,绿军111123不敌掘金。在赛后接受采访时,杰伦布朗在谈到本场失利时这样说道:我已经为一场艰难的比赛做好了身心准备,我知道……北海极驰中冠赛上最憋屈的一支球队也许是疫情的原因吧,近十几天来,网上鲜有人再拿泾川文汇战胜北京国安的新闻说事了。2022年11月17日,中国足球史上爆出了最大冷门。中超豪门北京国安以5:7输给了一支县级……靓丽可人的女宝宝名字,清风过境,暗自留香若说中国诗文最为灿烂的时期,那么唐诗是占据其中一位的。唐诗是中华文化宝库中的一颗璀璨明珠,其对中国的文化发展起到了很大影响,因此很多比较传统的人都希望通过唐诗为孩子起一个名字,……原神3。2现状快说谢谢小草神《原神》3。2版本再次登顶多国游戏畅销榜,对于手游行业来说似乎已经习以为常,但在苹果商店普遍涨价,以及日本国民游戏开启联动活动等不利局势下,仍然能冲上第一,且不仅限于游戏榜,依……毛利可达1000!专家智商税如今,高价盐逐渐进入大众视野。红星资本局注意到,市面上存在喜马拉雅粉盐、美国夏威夷火山红盐、喜马拉雅海棠盐等进口盐,425克一瓶售价在100元人民币上下,与400克一袋售……王者荣耀张人0认输秀腹肌,女粉大饱眼福,剑仙索然无味短视频平台的发展在近几年也是十分的迅速,随着短视频的发展也让很多普通人有了当网红的机会,在这个平台中你只要能够产出有趣的内容或者拥有较为不错的面容,都是能够脱颖而出的,说到网红……如何利用泊松分布来计算进球数泊松分布结合历史数据,可以计算足球比赛中可能的进球数。玩家将发现使用泊松分布计算足球比赛的可能赛果既简单又实用。泊松分布解释泊松分布是一个数学概念,将平均值换算成可……丝芭还能出来第二个鞠婧祎吗?原以为许佳琪高位出道成为The9女团一员,解散归来后会将重心放在演员位置上,成为名副其实丝芭二姐,不成想还是回到了Snh48团体。在古装剧《清风朗月花正开》播出后,待播剧……虎头局,狂飙失速加速拓店,成了阿喀琉斯之踵。来自:猎云精选;文孙媛最新一轮融资过去仅2个月,虎头局资金链风波又起。3月30日,小红书账号疯狂产品Jason发布了一篇文章,标题……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网