自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 Android帧绘制流程深度解析 (二)

整个帧绘制的流程还是比较复杂的,但是我也在这个过程中,对消息机制等知识点,在流程中进行更加详细的分析和讲解。其中可能也存在理解不到位的地方,还希望大家多多指正。

2024-06-13 00:00:36 932 1

原创 Android帧绘制流程深度解析 (一)

本文重点记录代码的学习笔记。

2024-06-12 01:15:09 850

原创 理解lambda表达式

这里就是一个场景加一个方法的组合,场景是有困难,然后方法时去找师兄师姐,但是场景很多啊,你可能刚上手就不会,也可能是做到一半遇到问题,亦或者是做到最后一步,不知道怎么总结,那你请教的内容必然也不会相同。这里的talks方法是无参函数,所以就直接传一个 () 再加上符号 -> 然后通过{}将方法体包含住,所以在看到lambda表达式的时候,如果还不熟悉,不理解其含义,可以先将其逆转为匿名内部类,这样就会好理解很多。这里反而是到使用的时候再定义,这不就可以根据我们的场景来定义方法的功能了嘛。

2024-05-31 23:15:49 652

原创 WindowManager相关容器类

窗口中容器类介绍:本节内容较多,建议结合前面的内容一起阅读:1、2、3、

2024-05-31 00:39:03 925 1

原创 addWindow的宏观概念

3、 然后在屏幕上显示窗口的时候需要有一个先后顺序,所以对WindowState也会有一定的排序,而且在使用窗口的时候,还会把相同类型的窗口聚类到一块,通过一个WindowState的容器进行统一的管控,即统一的类WindowToken,不过WindowToken是系统窗口的聚类,应用窗口的聚类则是ActivityRecord。在前一节讲了窗口的排序逻辑,分别是应用窗口、系统窗口、和子窗口,但是这里讲的比较散,没有一个宏观的概念。关于DisplayContent中排序的算法,最好的方法就是直接看代码。

2024-05-10 23:56:56 702 1

原创 WindowManager#addView_1

在详解。

2024-05-10 02:15:50 859 1

原创 WindowManager#addView_2

WindowManagerService是SystemServer中的一个服务,主要功能是管控窗口的服务,在各个应用进程中都有自己的代理,WindowManager(也可以说WindowManagerGlobal), WindowManager和WindowManagerService之间的沟通则是通过IWindowSession的子类Session类完成,在ViewRootImpl类中会持有一个IWindowSession类型的对象mWindowSession。

2024-05-09 01:30:40 1745

原创 Java继承学习笔记

静态类是在类加载的时候就会初始化,static方法会存放在静态区,这个方法是属于类的,可以通过类名去访问。深入点的解释就是,通过super调用到父类方法后,其实栈帧还是在子类对象中,所以在父类方法中调用到其他方法时,查寻方法表的时候,查的还是子类的方法表。Java中规定,实例化子类对象的时候,必须调用父类的构造方法,再调用子类的构造方法,所以其实在子类的构造方法的第一行是有一个隐式的调用super()的, 我理解的应该是子类要想继承父类的方法和属性,所以必须先有一个父类,所以必须先初始化父类?

2024-05-07 01:16:27 280

原创 Android消息机制

综上,举个例子,再线程A中希望发送一个消息给到线程B,那需要做什么呢?1、 创建一个Handler,关联到线程B的Looper,这里有两个方案:直接再Handler构造函数中传入B的looper、 再线程B中创建Looper再从线程A中获取到该Handler B;2、 生成需要的Message消息;3、 通过和线程B的Looper关联的Handler B,将消息发送出去;

2024-05-04 01:52:28 580 1

原创 addView方法的不同实现

关于addView方法,我说下我的理解,首先说明下这个方法的起源,addView方法的声明在ViewManager.java中。这里插入一个类图,方便起见我就用自己之前画的一张图,可以看到,有两个类都继承自ViewManager类,分别是ViewGroup和WindowManager。根据子类的实现分别看下他们继承了addView之后是怎么实现该方法的。

2024-04-30 02:19:54 455

原创 连续调用两次setContentView操作UI界面

其实这个问题从trace文件就可以看出来了,再onCreate方法,其实在perffeto中就很容易就看到了,在启动的trace中onCreate这个Tag是在帧绘制之前就完成的,那我们看到界面的前提不是得是帧绘制完成了嘛,所以在onCreate方法中的setContentView是可以修改应用界面的布局,但是他只是修改界面的布局的参数,这时候界面还没绘制,界面最终的显示,还需要将这个布局参数交付给doFrame流程进行绘制和SF进行合成渲染最后送显完成显示。

2024-04-27 16:56:17 174 3

原创 WindowManager家族的复杂关系

这是因为Window就是一个抽象的类,我们要管理Window,自然就想到了WindowManager了,顾名思义嘛,window的管理者。所以这里也有个addView方法是从ViewGroup这里继承来的,所以ViewGroup其实和WindowManager的addView方法都继承自ViewManager,他们就像兄弟一样的关系,只不过ViewGroup里的addView方法添加的是View,WindowManager里的addView方法添加的是Window罢了。这里方法实现太长,只看关键部分。

2024-04-27 16:30:21 902

原创 一文搞懂Activity、Window和View的关系

对了,那window就可以类比成一张纸,在纸上我们就可以画画了,那画是不是就可以比作我们看到的手机界面了。那这里就涉及到了一个管理的类了,WindowManager,WindowManager是接口,所以需要实现后才能实例化,而唯一实现这个接口的就是WindowManagerImpl类,不过WindowManagerImpl类其实就是你那个什么都不会的领导,最后的活都是苦*的你来干,也就是WindowManagerGlobal,这里要是再详细说就要一点功夫了,今天先说到这。理解了这些概念就该看代码了。

2024-04-26 01:45:10 1002 1

原创 ViewRootImpl到底是什么

看这里,FrameLayout就是继承自ViewGroup,而ViewGroup又实现了ViewParent,其实我们常见的View都是继承自View并且实现了ViewParent,所以这里就可以看到ViewRootImpl和View是不一样的东西,而ViewRootImpl之所以能作为DecorView的ParentView就是因为他实现了ViewParent,所以他是可以作为View的父节点的,因为父节点的类型只要是ViewParent就行。然后再看到这里,很明显了吧,已经把view赋值给root了。

2024-04-24 01:16:26 292

原创 2020-12-01

写代码时碰到一个问题,想问问各位大佬为什么,下面的步骤是U的行列式是-1,V是-1, 2U*2V却等于3? Eigen::JacobiSVD<Eigen::Matrix3d> svd_slover(covge,Eigen::ComputeFullU | Eigen::ComputeFullV); MatXX U = svd_slover.matrixU(); MatXX V = svd_slover.matrixV(); MatXX D = svd_slover.singularValu

2020-12-01 11:09:38 113

原创 Jetson Xavier刷机以及安装ros

Jetson Xavier刷机以及安装sdkmanager最近入手一个xavier,刚到手随意弄了下,然后不知道怎么了就出了问题,sudo apt-get update报错,问了技术人员他们也不清楚,所以推荐我刷机…(很无语,如同网管的重启).于是我开启了自己的刷机之路,不断摸索花了我三天时间(主要是慢,而且报错,客服不理…)所以这里把自己踩得坑说一下,防止大家踩坑.这里参考了两篇博客,很不错的https://zhenkai.blog.csdn.net/article/details/1007023

2020-08-14 14:51:04 538

原创 在ubuntu16.04中通过vins-fusion跑含有gps信号的kitti数据集

在ubuntu16.04中通过vins-fusion跑含有gps信号的kitti数据集安装vins-fusion这里是vins-fusion的github连接:https://github.com/HKUST-Aerial-Robotics/VINS-Fusion这里没有什么问题,按照连接的指示来就行运行kitti数据集首先是下载kitti数据集,这部分必须翻墙,如果不想翻墙也可以通过我分享的百度云链接:复制这段内容后打开百度网盘手机App,操作更方便哦 链接:https://pan.baidu.

2020-07-23 21:00:41 4552 35

原创 用小觅双目相机跑ORB-SLAM2

用小觅双目相机跑ORB-SLAM2首先是安装ros和小觅相机的SDK,安装ros这里就不再说明,其他博客都有,SDK也是在小觅官网上的,安装好了以后,创建工作空间,随意在一个文件夹下打开终端,输入mkdir catkin_wscd catkin_wsmkdir srccd srcgit clone https://github.com/slightech/MYNT-EYE-ORB-SL...

2019-12-05 14:14:53 1779

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除