首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

android界面框架-Window

从纯sdk及framwork的角度看,android界面框架相关的类型有:Window,WindowManager,View等。下面就以这几个类为出发点来概览下开发的“界面架构”。...再进一步,以ViewTree为整体,再看它和window,系统服务之间的关系可以从整体上把握android界面框架。...应用层要做的就是准备好Button对象,然后设置好相关布局参数,而Window对象的创建本身最终是通过系统服务完成的。类似Activity那样,Window对象的创建不是new出来的。...窗口类型 前面说过,的界面划分为一个个窗口,系统运行各个不同的窗口可以叠加显示。和叠加相关的属性就是Z-ordered,它是正整数。...WindowManagerService 就像Activity的创建一样,Window的创建不是像View那样new出来的。而是通过IPC调用系统服务WindowManagerService完成的。

1.3K80

应用内悬浮窗适配方案实战

作者 大家好,我叫小鑫,也可以叫我蜡笔小鑫; 本人17年毕业于中山大学,于2018年7月加入37手游团队,曾经就职于久邦数码担任开发工程师; 目前是37手游团队的海外负责人,负责相关业务开发...本文将介绍几种实现方案,以及我们踩过的坑 1、方案一:应用外悬浮窗+栈顶权限/生命周期回调 通常实现悬浮窗,首先考虑到的会是要使用悬浮窗权限,用WindowManager在设备界面上addView实现(...= new LayoutParams(mWidth, mHeight); params.setMargins(mLeft, mTop, 0, 0); setLayoutParams(params); 通过更新...SqAddFloatView(this, R.mipmap.ic_launcher).show(this) 3、方案三:WindowManager+应用内层级实现 WindowManger的层级有如下两个...使用WindowManager的updateViewLayout方法 mWindowManager.updateViewLayout(DragViewLayout.this, floatLayoutParams

1.5K40
您找到你想要的搜索结果了吗?
是的
没有找到

andriod开发之Activity的渲染机制

中最常用的代码可能就是setContentView了,但大家有没有想过这个方法的背后到底做了些什么?...Activity的布局是怎样被系统渲染的 在上一节我们已经知道了Activity是怎样管理布局的。接着我们来看看Activity的布局是如何渲染到系统的。...最后使用WindowManager.addView将DecorView添加到了WindowManager。这样就将DecorView在手机上渲染了出来。...WindowManager.addView方法可以将一个view渲染到手机界面上。不知道大家有没有做过类似悬浮球的应用,就是用WindowManager.addView去实现的。...为什么不能在子线程操作view 我们都知道,在必须在ui线程操作ui,不能在子线程对view进行操作,否则或抛出CalledFromWrongThreadException异常。

51710

Android下屏幕锁屏弹窗的正确姿势

最近在做一个关于屏幕锁屏悬浮窗的功能,于是在网上搜索了很多屏幕锁屏的相关资料,鉴于网上的资料比较零碎,所以我在这里进行整理总结。本文将从以下两点对屏幕锁屏进行解析: 1....如何在锁屏界面弹出悬浮窗 如何监听系统屏幕锁屏 经过总结,监听系统的锁屏可以通过以下两种方式: 1) 代码直接判定 2) 接收广播 1) 代码直接判定 代码判断方式,也有两种方法: a)...Boolean) mReflectScreenState.invoke(pm); } catch (Exception e) { e.printStackTrace() } 2) 接收广播 当系统锁屏或者屏幕亮起...竟然知道了对于系统屏幕监听的方法,那么接下来就是要在屏幕锁屏的时候,弹出悬浮框了,这个的实现方式有两种: 1) 使用WindowManager 2) 使用Activity 目前情况是,使用这两种方式在真机上都可以实现...,如果网友们发现有问题,可以在博客留言 1) 使用WindowManager 代码如下: private void init(Context mContext) { this.mContext

2.6K20

AndroidWindow的管理深入讲解

WindowManager Android 对 Window 的管理都是通过 WindowManager 来完成的,创建 PhoneWindow 之后还会为该 Window 对象设置 WindowManager...通过 Binder 进行 IPC 得到系统服务 WindowsManagerService 在应用进程的远程代理,然后通过 AIDL 通信的方式调用 WMS 的 openSession() 方法得到...DecorView ,在 onResume 的时候,调用 WindowManageraddView 方法将 Window 的 DecorView 通过 WMS 显示到屏幕上 Activity...Dialog 的 Window 创建过程 同 Activity,实例化 Dialog 对象时创建 PhoneWindow ,show 方法调用时通过 AIDL 调用 WMS 的 addView 方法将... 6.0 添加了对权限的开关设置,悬浮窗权限默认是关闭的 一些国内定制的 Rom 6.0 之前就可以设置权限的开关,悬浮窗权限默认关闭 问题解决 mLayoutParams.type = WindowManager.LayoutParams.TYPE_TOAST

80621

Android FrameWork面试点集合

.Linux kernel 加载硬件驱动 硬件驱动/显示驱动/输入驱动/媒体驱动 硬件抽象层解决并适配不同驱动标准,为上层应用提供统一的api 3.C++ framework 创建linux的第一个用户进程...是由C++代码通过类加载机制加载的,最终调用到了ZygoteInit.java的实例方法 ZygoteInit.javamain方法会启动SystemServer系统服务进程 SystemServer...5.Apps 所有的系统服务创建成功之后,会执行Launcher启动流程 2....个 AMS 四大组建调度服务10之后Activity调度交给ATMS) Activity Task Manager Service 10之后Activity调度服务 PKMS 安装,卸载,扫描管理等...Application对象,调用onCreate函数 通过AMS(ATMS)再次启动Activity,进程创建时未启动的那个Activity会恢复继续创建 在ActivityThread以反射形式创建

48020

版微信跳一跳辅助 跳一跳辅助Java代码

版微信跳一跳辅助,java实现,具体内容如下 ? 已经看到网上有大神用各种方式实现了,我这是属于简易版ADB命令式实现。...具体实现 本人的测试设备是Mate9,android版本为7.0,由于在非Root环境下,普通应用并不能通过Runtime.getRuntime().exec()来点击本应用外的区域,所以将手机直接通过...源代码 源代码非常简单,就直接放在这里了 //写在APP的起跳 public class Jump { private static final String TAG = "Jump"; private...设置连接主机超时时间 urlConn.setConnectTimeout(5 * 1000); //设置从主机读取数据超时 urlConn.setReadTimeout(5 * 1000); // 设置是否使用缓存...urlConn.setRequestProperty("Content-Type", "application/json"); //设置客户端与服务连接类型 urlConn.addRequestProperty

84861

面试官问我:Andriod为什么不能在子线程更新UI?

2.正文 天才少年_来到一家公司等待面试。。。 一个眼睛又大又亮的小姐姐,萌萌的站在我去 的面前。...,makeVisible调用了WindowManageraddView方法,WindowManager是个接口,他的具体实现类是WindowManagerImp,直接看WindowManagerImp...ViewRootImpl对象,后面View的刷新正是通过ViewRootImpl实现的,由于你面试官没有问,这边不展开讨论,不然把我留到天黑,面试官可能有危险,嘿嘿。...赠送一个知识点:真正把mDecor加到WindowManager上是并显示出来在makeVisible()方法实现的,Activity的Window才能正在被使用。...2)系统,操作viwe对象没有加锁,所以如果在子线程更新UI,会出现多线程并发的问题,导致页面展示异常。 小伙子分析得很不错,把我打动了,回去等offer吧。

79701

Android高频面试专题 - 提升篇(一)Window、View、Activity

完成) Window是一个抽象类,唯一实现类是PhoneWindow 创建Window需要通过WindowManager创建WindowManager是外界访问Window的入口 Window具体实现位于...建立联系 Window并不是实际存在的,而是以View的形式存在 WindowManager的三个接口方法也是针对View的 实际使用无法直接访问Window,必须通过WindowManager View...系统窗口,不需要对应任何Activity,:状态栏,导航栏,普通应用程序不能创建系统窗口,必须要有系统应用权限.(层级2000~2999)。...11、Token的使用场景? Activity创建时,AMS需要根据Token去找到对应的ActivityRecord。...并显示——在Dialog的show方法通过WindowManager将DecorView添加到Window(mWindowManager.addView(mDecor, 1)) Dialog关闭时会通过

2.3K20

悬浮窗开发设计实践

系统Window:z-index在2000~2999之间,它往往需要声明权限才能创建,例如Toast、状态栏、系统音量条、错误提示框都是系统Window。...第三种:采用服务Service,然后在Service采用WindowManager添加和移除View操作。那么在Activity想要展示弹窗则需要通过广播通信,让Service收到广播处理逻辑。...当APP通过WindowManagerService的代理向其添加窗口的时候,WindowManagerService除了自己进行登记整理,还需要向SurfaceFlinger服务申请一块Surface...3.3 应用悬浮窗应用内悬浮窗实现流程1.获取WindowManager;2.创建悬浮View;3.设置悬浮View的拖拽事件;4.添加View到WindowManager对于应用悬浮窗来说,Android...申请权限,为了防止用户手动在设置取消权限,需要在每次使用时check一下是否有悬浮窗权限存在;Settings.canDrawOverlays(this)当API > 25时,系统直接禁止用户使用TYPE_TOAST

2.3K40

Androidactivity从创建到显示的基本介绍

活动是开发比较重要的东西,是用户交互和数据的入口。本篇博客要介绍的内容是活动的创建,活动的跳转与值的透传。...iOS的ViewController也是有自己的生命周期的,了解Activity或者ViewController的生命周期是很有必要的,本文将详细的给大家介绍关于Androidactivity从创建到显示的相关内容...Activity的创建 Activity的创建以及初始化的过程是在ActivityThread#performLaunchActivity方法,在这个方法,有以下几个关键点, 创建Activity...addView wm.addView(decor, l); 这里的wm是WindowManager,是在attach法法通过setWindowManager来实现初始化的,对应的实例为WindowManagerImpl...那么,我们去看下WindoeManageImpl的addView方法,在这个方法,直接调用WindowManagerGlobal的addView方法,我们关心的中点转移了。

1.4K20

Android Toast使用技巧--提升展示能力

App在没有悬浮窗权限下,不能添加系统级窗口,但却可以显示Toast。这说明Toast不在悬浮窗权限控制下,系统某些机制保证了Toast的显示。...Toast.makeText方法创建的Toast,nNextView是一个包含TextView的LinearLayout。...(windowManager); } return super.getSystemService(name); } } 3、使用FakeContext创建一个View,并以该View发起一个Toast...适配情况 1、由于Toast机制依赖于NMS,部分机型需要开启通知栏权限才能使用Toast; 2、部分机型在App界面外无法使用Toast,:OPPO; 3、部分机型在App界面外Toast流程正常执行...,但Toast窗口不会显示,:Vivo; 4、之前也有直接使用TYPE_TOAST进行addView()添加窗口的做法,但Android8.0之后TYPE_TOAS窗口需要NMS发放的一个token,

2.1K50

Android之View绘制问题汇总

在measure完成后,可以通过getMeasuredWidth/Height()方法,就能获得View的测量宽高 在一定极端情况下,系统需要多次measure,因此得到的值可能不准确,最好的办法是在onLayout...方法获得测量宽/高或者最终宽/高 6、如何在Activity启动时获得View的宽/高?...) WindowManager.addView(decor, 1) WindowManager.addView(decor, 1)本质是调用WindowManagerGlobal的addView方法。...onDraw避免冗余代码、避免创建对象 onDraw禁止new对象。:不应该在ondraw创建Paint对象。Paint类提供了reset方法。可以在初始化View时创建对象。...减少冗余代码 不要使用Handler,因为已经有post系列方法,View已经有post系列方法,没有必要重复去写,可以直接使用,最终会投递到主线程的Handler 使用的线程和动画,要在onDetachedFromWindow

1.1K20
领券