自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C语言学习(二)

3.4 存储类auto 是局部变量的默认存储类, 限定变量只能在函数内部使用; register 代表了寄存器变量,不在内存中使用; static是全局变量的默认存储类,表示变量在程序生命周期内可见; extern 表示全局变量,即对程序内所有文件可见,类似于Java中的public关键 字;C 语言中全局变量、局部变量、静态全局变量、静态局部变量的区别 从作用域看: 1、全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用 于所有的源文件。当然,其他不包含全局变量定义的源文件需要

2020-08-20 16:34:50 213

原创 C语言学习(一)

1.工具安装使用的工具为eclipse + 编译工具MinGW641.1 Eclipse的安装参考网址为:https://baijiahao.baidu.com/s?id=1620193436856012646&wfr=spider&for=pc1.下载Eclipse下载地址为:https://www.eclipse.org/downloads/ 2.下载完成 后,选择安装。先需要先安装JDK1.83.JDK的下载路径为:http://download.ecli...

2020-08-20 14:57:26 166

原创 Input输入系统(一)

输入事件系统框架Android事件输入系统主要负责键盘、触屏、鼠标等输入设备的事件输入及向焦点窗口和焦点视图的事件派发,插入,过滤,拦截等功能。Android支持的输入设备主要有:键盘、鼠标、触摸屏、轨迹球、游戏摇杆/手柄、绘图板等。Android系统中输入系统主要包括如下几部分:View,InputDispatcher,InputReader,EventHub ,kernel几部分,他们之间的关系如下:与其他模块的交互关系如下:Input系统启动流程Input在SystemSe

2020-08-13 11:35:37 347

原创 事件处理/事件分发机制(一)

事件分发原理Android为触摸事件封装了一个类MotionEvent,其实OnTouchEvent的一个参数就是MotionEventMotionEvent中封装了触摸点坐标、点击事件类型等Android中的View可以放在一个ViewGroup中,这个ViewGroup又放在另一ViewGroup中等等,一层层嵌套起来,同一个触摸事件,View和父ViewGroup都想要处理,我们应该传给谁呢,此时就需要事件拦截机制MotionEvent中处理得事件类型为:注意:ACTION_MO.

2020-08-13 10:03:15 219

原创 Surface创建(一)

1.Surface相关术语介绍1.1 SurfaceSurface 就是由屏幕显示内容合成器(screen compositor)所管理的原生缓冲器的句柄,1)可以通过Surface获得原生缓冲器以及当中的内容。2)原生缓冲器(rawbuffer)是用于保存当前使用surface的像素数据的Surface是用来绘制图形或者图片的载体,在其中包含Canvas,获取canvas对象即可对其进行绘制。3)Surface中有一个Canvas成员,专门用于画图的。所以,Surface中的C

2020-08-13 10:02:03 1587

原创 Surface创建(二)

3.Surface创建总结surface的创建已经分析,从App点击启动一个MainActivity来介绍此流程3.1 APP/WMS/SurfaceFlinger通信流程创建App启动Main Activity: 首先创建好与WMS通信的媒介Session, 然后通过Session将Window加入到WMS中,这时会触发 SurfaceSession的创建 SurfaceSession的创建又会在WMS Native创建SurfaceComposerClient,

2020-08-13 10:01:46 1476

原创 WMS窗口大小计算(一)

本文以打开一个Activity后,到Activity显示后,如何确认各个窗口的大小和位置。不涉及到窗口中的每个view的布局的情况。一个Activity包含了一个PhoneWindow(window),一个Window代表一个窗口。 Activity并不负责视图控制,只是控制其生命周期和处理事件,真正控制视图的是Window。但Window的添加和显示又与生命周期息息相关。 在android系统中,一个window界面上出来Activity显示的界面外,至少还可能有如下的元素:...

2020-08-13 10:01:25 702

原创 解决事件冲突(二)

事件冲突:本文主要分析的是listview

2020-08-13 10:00:40 86

原创 计算窗口大小(二)

performTraversal调用relayoutWindow方法分析在performTraversal,会涉及到View的measure、layout、draw。其中measure用来对View进行测量,给出建议值,layout来确定子控件在父控件中的位置,包括真实大小以及坐标位置,draw负责将View绘制出来。单文只分析与窗口大小相关的逻辑,performTraversal方法会被多次调用到,这个方法是计算窗口大小的起点窗口区域Overscan(过扫描区):   Ov..

2020-07-31 15:32:37 1714

原创 WMS-relayoutwindow

6 relayoutWindowwms的relayoutWindow方法会在ViewRootImpl的performTraversals方法中会调用,其请求WMS来计算相关的窗口大小,创建Surface等等,就目前的理解performTraversals主要侧重于客户端对DecorView及其子View的measure,layout,draw等三大流程的处理;而binder call到system_server的WMS,是着重于系统侧对窗口的处...

2020-07-31 15:05:38 922

原创 WMS-addWindow

2020-07-31 15:04:33 283

原创 WMS窗口管理模式

4 WMS窗口管理模式在wms中对所有的窗口采取树状的形式管理,示意图如下:从8.0上,引入了WindowContainer 的概念,如上图所示,将Window通过树状的形式来管理下面的类对应的就是上图中的类DisplayContent extends WindowContainerRootWindowContainer extends WindowContainerTaskStack extends WindowContainerTask extends WindowCo.

2020-07-31 15:03:12 531

原创 WMS初始化

3 WMS初始化 调用WindowManagerService的main方法来创建wms的实例,此方法执行在system_server线程中代码如下: 通过wms的构造函数中看到,wms主要涉及的功能如下图所示: 而在wms的初始化过程中主要涉及到如下三个线程,分别是”system_server”、”android.display”和”android.ui”,这三个线程的关系如下: AndroidO以下三个...

2020-07-31 15:02:38 206

原创 Window窗口添加

5 Window窗口的添加WindowManager对Window进行管理,说到管理那就离不开对Window的添加、更新和删除的操作,在这里我们把它们统称为Window的操作。对于Window的操作,最终都是交由WMS来进行处理。窗口的操作分为两大部分,一部分是WindowManager处理部分,另一部分是WMS处理部分。我们知道Window分为三大类,分别是:Application Window(应用程序窗口)、Sub Windwow(子窗口)和System Window(系统窗口),对于不同类型的窗

2020-07-31 15:00:03 444

原创 WMS服务启动流程

2 WMS服务启动流程 wms(WindowManagerService)属于一种系统服务,类似的服务为AMS,PMS,IMS等,是在SystemServer中被启动。启动wms服务的流程如下: 2.1 Zygote启动systemserver 由结构图的得知,在ZygoteInit.java的forkSystemServer函数中启动了SyetemServer进程,代码如下:2.2 systemserver进程启动过程handleSystemSe...

2020-07-31 10:22:12 1129

原创 WMS总体框架

目录1 WMS总体架构........................................................................................ 32 WMS服务启动流程................................................................................ 53 WMS初始化................................................

2020-07-31 10:21:21 1950

原创 C语言基本知识(字符串和指针)

#include <stdio.h>#include <stdlib.h>#include <string.h>//输入字符串的方式:fget,定义一个字符串可以通过数组的方式int main1() { printf("输入一个字符串\n"); char str[11]; fgets(str,11,stdin); printf("str= %s\n",str);}运行的结果为:hello输入一个字符串str= hel...

2020-07-31 10:20:01 116

原创 ViewPager和ListView的事件拦截

事件拦截分两步,内部和外部内部拦截法:package com.example.dispatch;import android.content.Context;import android.util.AttributeSet;import android.view.MotionEvent;import androidx.annotation.NonNull;import androidx.annotation.Nullable;import androidx.viewpager.wi

2020-07-21 16:48:16 225

原创 泛型作业

1.用Javac javap -c 反汇编后查看字节码 擦除机制super是如何处理源码:public class Genric { //private static Object Number;​ public static <T> T copy(Collection<? super T> dest, Collection<T> ...

2020-04-26 15:20:20 147

原创 多线程的学习(wait and notify)

多线程:wait and notifyAll等待 和通知的标准范式:等待方:1.获取对象的锁2.检查条件,条件不满足wait3.条件满足,执行业务代码syc(对象) {while(条件不满足)对象.wait();}执行业务代码}通知方1.获取对象的锁2.修改条件3.通知等待方sync(对象) {执行业务代码,修改条件,对象.n...

2020-04-22 21:26:48 136

原创 学习Android的重要网站

查看Android源代码网站1.Google官方源码:https://android.googlesource.com/2 .查看Android源代码网站:http://androidxref.com/ 只能看到Android 9.0 http://aospxref.com/ 可以看到Android 10.0 https://www.androidos....

2020-04-20 21:26:58 312

原创 Android 分析问题常用命令【二】

1.快速查找到需要查找的进程,将其停止,查找包含installer的应用adb shell ps -ef |grep installeru0_a26 1545 302 0 23:08:55 ? 00:00:00 com.android.vending:instant_app_installeru0_a25 2241 301 1 23:12:1...

2020-04-20 21:23:30 225

原创 Android CTS

测试cts的命令:在PC端执行CTS打开ternimal终端,进入android-cts/tools目录,依次输入如下命令:1) ./cts-tradefed 回车(如果终端窗口关闭说明java版本没有配置成功)2) run cts 回车(执行整个CTS测试)**更详细的命令可输入help命令来查看(run cts –help-all),以下为常用的两种1) 单独执行fail c...

2020-04-20 21:16:22 556

原创 Android 分析问题常用的命令【一】

1.打印Log的命令:adb logcat -v threadtimeadb logcat -b all >all.txt ---->抓取所有的命令2.快捷方式打开wms的相关命令:/通过WMS命令设置rotationadb shell wm set-user-rotation lock 2//通过setting数据库设置rotation,参数只有0和1...

2020-04-20 21:09:50 867

原创 Android 创建一个悬浮窗口

1.添加悬浮窗口的代码如下:遇到的问题:1.用AS编译后,安装到vivo手机后,出现如下的错误:04-15 21:53:57.256 27704 27704 E AndroidRuntime: Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.administrator.win...

2020-04-16 22:11:35 430

原创 AndridQ 多屏添加NavbarWindow

Android Q上支持多屏显示,当连接另一个屏幕后,会调用OnDisplayReady代码如下:接着调用creatNavigationBar,会根据wms是否支持navbar来判读是否需要在另一屏添加navbarBar​...

2020-04-16 20:40:38 166

原创 插件化学习(四)

从应用Application入口获得创建AssertManager的时序图相关的代码如下:

2020-03-06 20:26:53 60

原创 插件化学习(三)

宿主如何启动插件的Activity先了解一下hook技术什么是 HookHook 又叫“钩子”,它可以在事件传送的过程中截获并监控事件的传输,将自身的代码与系统方法进行融入。这样当这些方法被调用时,也就可以执行我们自己的代码,这也是面向切面编程的思想(AOP)。正常情况下,对象A直接和对象B通信,等着对象B处理后将数据返回给A当加入Hook后变为:Hook可以是一个...

2020-03-05 22:30:03 90

原创 插件化学习读书笔记(一)

1.定义插件化:是用于免安装的apk,这个免安装的apk可以理解为插件,而支持插件的应用一般称为宿主,很早之前使用过的plungin机制 2.插件化可以解决的问题:1)当APP的功能模块越来越多时,体积就会越来越大2)模块之间的耦合度高,开发沟通成本越来越高3)当方法数目比较大时,APP占用的内存也会越来越大4)应用之间的相互调用3.插件化的实现如何实现一个插件化...

2020-03-04 16:03:01 114

原创 FlowLayout(二)

FlowLayout主要实现了onMeasure//先测量子view然后再测量自己的view@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { Log.d(TAG,"onMeasure widthMeasureSpec :" + widthMeasureSpec + " ...

2020-03-03 00:10:36 98

原创 Android自定义view -flowlayout(流式布局)

1.自定义view如何分类分为两类:自定义view或者自定义viewGroup自定义view:在没有现成的view的情况下,需要自己实现的时候,就使用自定义view,一般继承与view,SurfaceView或者其他的view的情况,如TextView,Imageview等。主要实现onMeasure ,onDraw自定义viewGroup:是利用现有的组件根据特定的布局方式组成新的...

2020-03-02 23:16:06 168

转载 Andriod中绘(画)图----Canvas的使用详解

Andriod中绘(画)图----Canvas的使用详解分类: Andoird技巧拾取 2011-11-04 18:28 29987人阅读 评论(18)收藏 举报androidlayoutfloatconstructorencodingclass                                                         

2015-02-05 09:48:44 398

转载 android开发中代码片段集合

本文中所提及的代码往往只有一行或短短几行就可能完成某种效果和功能,当我们不知道答案的时候,通常会花费了我们很多时间去google或baidu来寻找。这里对遇到的问题作个记录整理下,方便以后的查找,同时也希望能帮到你,当然更多的可能是你已经知道答案了,下面的对你来说 so easy 1.   如何设置通知栏下拉不可用        有时候在一个界面不想让通知栏下拉的消息就是这个代码了

2014-06-30 17:00:49 321

转载 置顶] Android开发:shape和selector和layer-list的(详细说明)

shape和selector是Android UI设计中经常用到的,比如我们要自定义一个圆角Button,点击Button有些效果的变化,就要用到shape和selector。可以这样说,shape和selector在美化控件中的作用是至关重要的。1.Shape简介作用:XML中定义的几何形状位置:res/drawable/文件的名称.xml使用的方法:

2014-06-27 17:18:17 451

转载 Service: 监听外部存储设备

登录 | 注册CodingMan--- what is most important?目录视图摘要视图订阅有奖征资源,博文分享有内涵        4月推荐博文汇总        CSDN博客支持Windows Live Writer离线写博客啦Service

2014-06-06 16:19:47 566

转载 Android source build/envsetup.sh学习笔记

如果你只需要修改某一个模块的内容,但是却每次都要执行make, 最后等待很长时间。使用模块编译,那只需要在你所在的模块的目录或者其子目录,执行mm,便可以编译出一个单独的apk,这样岂不快哉!build/envsetup.sh提供了几个有用的shell命令,使用$.build/envsetup.sh(注意点号)或者$sourcebuild/envsetup.sh可以引入到shell

2014-06-04 20:02:01 478

转载 android之wifi开发(一)

WIFI就是一种无线联网技术,常见的是使用无线路由器。那么在这个无线路由器的信号覆盖的范围内都可以采用WIFI连接的方式进行联网。如果无线路由器连接了一个ADSL线路或其他的联网线路,则又被称为“热点”。在Android中对Wifi操作,android本身提供了一些有用的包,在android.net.wifi包下面。主要包括以下几个类和接口:1.ScanResult  主要用来

2014-04-09 13:33:30 439

转载 Android获取SD卡总容量,可用大小,机身内存总容量及可用大小的系统方法

可能有的同学不知道系统已经提供了获取获取SD卡总容量,可用大小,机身内存总容量及可用大小的系统方法,用系统源代码提供的方法可以很简单,方便的获取其大小。这里我把系统源代码中的一个方法贴出来,供大家参考一下:图片上图片上红色方框中的代码就是源代码中获取SD卡大小的程序方法。在这里我整理了一下,我把我整理封装好的方法给大家贴出来:[java] view plai

2014-04-09 10:59:07 713

转载 如何使用Android蓝牙开发

原文地址:http://developer.android.com/guide/topics/wireless/bluetooth.html翻译:jykenan更新:2012.06.19Android平台支持蓝牙网络协议栈,实现蓝牙设备之间数据的无线传输。本文档描述了怎样利用android平台提供的蓝牙API去实现蓝压设备之间的通信。蓝牙具有point-to-point 和 m

2014-04-09 09:36:50 466

转载 Android中蓝牙的基本使用----BluetoothAdapter类简介

一、 BluetoothAdapter类介绍         BluetoothAdapter类简单点来说就是代表了本设备(手机、电脑等)的蓝牙适配器对象,通过它我们可以蓝牙设备进行基本    开发了,主要有如下功能:             1、开关蓝牙设备             2、扫描蓝牙设备             3、设置/获取蓝牙状态信息,例如:蓝牙状

2014-04-08 14:39:57 563

空空如也

空空如也

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

TA关注的人

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