自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Red风信子的博客

故不积跬步,无以至千里;不积小流,无以成江海;

  • 博客(340)
  • 资源 (3)
  • 收藏
  • 关注

原创 Android14 Launcher3 定制主页丝滑使用Recents功能 (三)

/packages/apps/Launcher3/quickstep/res/drawable-xxhdpi,这里面放置背景资源。指定窗口动画为NoAnimation,不给窗口指定动画。修改前的theme为:LauncherTheme。修改后的theme为:RecentsTheme。Recents功能未修改前。修改前-自定义主页快速上滑。修改前-其它app快速上滑。修改后-自定义主页快速上滑。修改后-其它app快速上滑。修改前-其它app上滑。修改后-自定义主页上滑。修改后-其它app上滑。

2025-07-29 22:34:45 600

原创 Android14 系统Wallpaper详解之ImageWallpaper

集成自WallpaperService.EngineCanvasEngine是ImageWallpaper实现的用于执行具体的壁纸绘制相关逻辑的执行者。其重写了父类Engine的一些方法来实现自定义的行为。按照顺序执行,CanvasEngine先执行onCreate方法,并在改方法内部根据设备的相关信息初始化相关参数//在WallpaperService的onBind方法执行时,会触发改方法的执行。//用于获取设备尺寸,然后根据该信息更新相关尺寸参数@Override。

2025-07-29 21:29:29 157

原创 Android14 系统窗口动画分析 (二)

最终根据调用链路追踪到了SurfaceAnimator.java文件中继续看看getSurfaceControl的具体实现。

2025-07-29 21:22:43 544

原创 Android14 系统窗口动画分析 (一)

res/values/styles.xml中定义动画style创建具体的动画文件:res/anim/enter.xmlres/anim/exit.xml2、代码中动态引入动画资源xxx/MyActivity.javaxxx/MyService.java二、应用显示弹窗窗口动画案例service中弹窗动画资源res/values/styles.xmlres/anim/dialog_enter_anim.xmlres/anim/dialog_exit_anim.xml三、系统源码分析通过w

2025-07-29 15:57:28 519

原创 AndroidStudio调试aosp源码 (模块、gradle配置)

接着我们继续搭建aosp源码阅读/调试平台前面的文章我们提到了怎么导入aosp源码,那么接下来,我们就完整的导入某个模块的源码,来进行查阅和调试代码。

2025-07-29 14:05:50 717

原创 AOSP源码查看工具对比

在奔赴远方的星河之前,请先折竹为筏,聚沙成台。工具是延伸掌纹的舟楫,平台是托举理想的云阶。在AOSP系统开发过程中,阅读 AOSP (Android Open Source Project) 源码是至关重要的环节。然而,如何构建一个高效、便捷的阅读环境,同样是不容忽视的关键挑战。本文将介绍利用多种工具和方法阅读 AOSP 源码的高效实践,并对比分析其主要优缺点。

2025-07-28 23:23:48 905

原创 Android14 Launcher3 定制主页丝滑使用Recents功能 (二)

我们接着继续分析在上文中分析的不管是将Launcher3业务直接打包成aar使用还是将与systemui的跨进程业务提炼出来,在自己的主页实现Recents功能,都是不行的,或者说代价太大。那么我们再继续分析另外一种方式:修改Recents最近任务出现的整个动画链路,以及修改动画过渡效果未修改前,展示如下:手势模式又分为两种情况:第一种:第三方应用 (非Launcher) 底部上滑第二种:Launcher底部上滑。

2025-07-28 22:47:37 603

原创 Android14 Launcher3 定制主页丝滑使用Recents功能 (一)

aosp默认主页是Launcher3,其中Recents功能就属于Launcher3的功能。考虑这样一个问题,如果设备默认主页需要使用我们自己开发的主页,那么当向上滑动显示Recents最近任务列表的时候,是个什么效果:当前窗口缩小并且慢慢透视,能看到桌面壁纸,紧接着同步显示缩略图,并且缩略图可以跟着手指移动,当最后放手的时候,显示出RecentsActivity,那么这几个步骤显示下来,会感觉眼花缭乱。那么我们怎么优化呢? 当向上滑动的时候直接在当前窗口展示缩略图,最后放手的时候显示出RecentsAct

2025-07-28 22:04:03 497

原创 Android14 系统Wallpaper详解 壁纸窗口分析 (三)

接着上面的 一 二 继续分析壁纸切换流程。

2025-07-26 18:38:00 208

原创 Android14 系统Wallpaper详解 壁纸窗口分析 (二)

接着 《Android14 系统Wallpaper详解 壁纸窗口分析 (一)》上一步中我们分析了WallpaperWindowToken的挂载。接下来我们继续分析./frameworks/base/packages/SystemUI/src/com/android/systemui/wallpapers/ImageWallpaper.java./frameworks/base/core/java/android/service/wallpaper/WallpaperService.java根据窗口添加流程

2025-07-26 18:33:14 305

原创 Android14 系统Wallpaper详解 壁纸窗口分析 (一)

通过dumpsys window windows确定壁纸显示信息可以确定壁纸显示控制是在systemui进程中的ImageWallpaper另外说明:静态壁纸运行在systemui,由systemui实现WallpaperService动态壁纸运行在各业务进程,由各业务进程实现WallpaperService。

2025-07-26 18:26:34 641

原创 Android14 系统Wallpaper详解 壁纸显示说明

壁纸主要分为两类,锁屏壁纸和桌面壁纸。

2025-07-26 18:21:37 977

原创 Android14 系统Wallpaper详解 壁纸服务分析

安卓的动态壁纸可以归属到SystemUI中,是SystemUI管理的一部分,安卓支持静态壁纸,同时也支持动态壁纸(level 7后加入)可以从设备的内部或者是外部存储中选择一个图片资源来作为静态壁纸,此外也可以设置壁纸跟随时间的变化进行一些变化(例如切换不同的图片资源),这也是安卓的特色功能之一。需要说明的是当某个应用通过系统的接口设置为壁纸应用后,会启动一个壁纸服务,该服务的优先级很高,从某种程度上来说是不会被系统主动杀死的(但是可以被手动停止)。

2025-07-26 18:17:25 582

原创 Android14 系统Wallpaper详解 锁屏透看壁纸和桌面透看壁纸的切换

桌面Activity的配置主题xml设置一个类似showallpaper的属性既可以,就可以让桌面后面显示壁纸了。

2025-07-26 18:11:41 846

原创 Android14 Launcher3 Recents缩略图数据来源剖析

在进入桌面最近任务时候会看到运行过的Task相关卡片记录,每个运行过的Task都会有一个自己的TaskView。那么这个TaskView中显示的缩略图画面是怎么获取的?这里的获取分为2种情况:1、系统没有重启,桌面显示退到后台的Task缩略图画面2、系统重新启动即关机重启,发现TaskView也可以正常显示缩略。

2025-07-26 17:53:36 849

原创 Android10/14 Launcher3 Recents功能流程分析

以上就是Recents功能在初始化过程中涉及到的关键类,流程图总结一下:(Android10)Android10Android10UI 层 (RecentsView): 需要数据来展示,并发起请求。模型层 (RecentsModel): 作为中间层,管理数据缓存(图标、缩略图)和数据源(任务列表),并处理数据更新和分发。数据源层 (RecentTasksList): 负责直接与系统服务交互,获取原始的最近任务列表,并提供简单的缓存机制。​。

2025-07-26 17:45:48 759

原创 AndroidStudio调试aosp源码 (ipr、iml工程文件)

,在弹出的窗口中左边栏中选择"Modules”,中间的窗口选择"Android"(首字母大写的那一个),而后在右边的窗口中选择"Structure"。“,中间的窗口选择"android”(首字母小写的那一个),在弹出的窗口中左边栏中选择"Modules",而后在右边的窗口中选择"Dependencies"。"android.iml"和"android.ipr"一般是"只读"的属性,我们这里建议大家,把这两个文件改成可读可写,否则,在更改一些项目配置的时候可能会出现无法保存的情况,执行如下两条命令即可。

2025-07-26 17:33:49 630

原创 AndroidStudio调试aosp源码 (gradle配置)

4、完成以上操作,同步代码,可以编译apk了。如此方便的使用AndroidStudio的断点debug和跟踪代码流程。在buildscript同层级下面增加sourceSets:(内容可根据需要添加)2、打开demo工程 project下的build.gradle。3、配置project下的build.gradle。1、创建一个工程demo,确保能正常编译通过。5、完整的build.gradle如下。这里直接引入服务器中的源码。

2025-07-26 17:18:27 232

原创 VsCode调试aosp源码

下面简单介绍下vscode环境搭建点击官方地址,点击Download for Windows下载下载完后,双击打开安装安装流程这里不再赘述。

2025-07-26 16:53:59 880

原创 postman模拟post请求的几种请求体

postman的几种参数格式post类型的body中可以存放任意的内容格式,浏览器可以根据请求头中指定的content-type类型对请求体进行解析。下面介绍postman如何对四种典型的请求体进行模拟。form-data即multipart/form-data,它将表单的数据组织成Key-Value形式,用分隔符boundary(boundary可任意设置)处理成一条消息。由于有boundary隔离,所以既可以上传文件,也可以上传参数。POST HTTP/1.1Host: test..

2020-10-22 01:25:11 2281

转载 Http协议请求方法及body类型

8种请求方法1) get请求指定的页面信息,并返回实体主体。 2) post向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。3) HEAD类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头 4) OPTIONS返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送‘...

2020-10-22 01:13:43 2254

转载 http的请求体body的几种数据格式

http的请求体body的几种数据格式 multipart/form-dataapplication/x-www-from-urlencodedrawbinarypostman中 Params和Body的区别 multipart/form-data 以表单形式提交,主...

2020-10-22 01:00:48 1851

转载 HTTP请求格式、响应格式及正文部分的MIME类型

HTTP请求格式: HTTP协议规定,HTTP请求由3部分构成: 请求方法、URI和HTTP协议的版本请求头请求正文 1.请求方法、URI和HTTP协议的版本: HTTP请求的第一行包括请求方法、URI和协议版本这3项内容,以空格分开: POST /hello.jsp HTTP/1.1 URI用于标识要访问的网络资源,在HTTP请求中,通常只要给出服务器的根...

2020-10-22 00:50:45 1791

原创 Http Request Headers部分各个字段的功能

Request Headers里面以后很多字段,比如Content-type,Host这些,那么这些字段又有什么意思呢,下面通过表格来介绍一下:Header 解释 示例 Accept 指定客户端能够接收的内容类型 Accept: text/plain, text/html,*/* Accept-Charset 浏览器可以接受的字符编码集。 Accept-Charset: iso-8859-5 Accept-Encoding 指定浏览器可以支持的web

2020-10-22 00:28:19 938

原创 HTTP_POST请求的数据格式

在HTTP的请求头中,可以使用Content-type来指定不同格式的请求信息。Content-type的类型常见的媒体格式类型:text/html : HTML格式text/plain :纯文本格式text/xml : XML格式image/gif :gif图片格式image/jpeg :jpg图片格式image/png:png图片格式以applicaton开头的没提类型:application/json : JSON数据格式 application/xhtml+xm.

2020-10-22 00:24:19 984

原创 关于Okhttp3(四)api使用

简介Okhttp是square公司推出的一款Android和Java网络请求库,当前推出了Okhttp3,在原来的基础上做了很大改进,也是Android目前最流行的网络库之一,本系列文章就是基于最新的来剖析。鉴于能力以及代码的优化改动,文中如有不足之处还望指教,谢谢。api使用Android使用注意申请网络权限,同时不能在主线程请求同步请求executeprivate static void executeRequest() throws Exception { OkHtt

2020-10-19 11:58:04 1370

原创 发布GitHub项目到JitPack

感谢作者:https://www.jianshu.com/p/91a9a0224190JitPack public仓库发布一 创建项目二 上传项目代码到GitHub三 创建项目的Release版本四 发布项目到JitPack一 创建项目在 GitHub 上创建项目:创建完成后会打开项目,因为当前项目是空白的,所以会显示以下的页面:二 上传项目代码到GitHub把本地的 Library 项目使用 Git 上传到 GitHub,具体的 Git 操作可以按照项目页面中的提示进行,不再赘述。三.

2020-10-17 03:47:51 509

原创 Github私有库上传到JitPack

感谢作者:https://blog.csdn.net/VcStrong/article/details/106726046Jitpack发布私有库第一步:使用github账号登录Jitpack,点击settings第二步:输入自己的私有库地址,生成SSH keys第三步:把jitpack.io生成的ssh-key粘贴到自己的私有工程中,配置访问权限。第四步:在jitpack.io中,查找自己的私有库,点击Look up出现我们的release版本(请自行百度github生成release版本)第五步:.

2020-10-17 03:35:07 1364

原创 JitPack使用

JitPack一 介绍1.1 JitPack是干嘛的?1.2 有何不同?1.3 使用 JitPack1.3.1 配置你的gradle1.3.2 引用 Snapshots1.3.3 刷新缓存1.3.4 引用 Release1.3.5 发布 JavaDoc1.3.6 其他特性1.3.7 自定义域名1.3.8 支持的代码库网站1.3.9 角标 Badges1.3.10 你是库使用者1.3.11 后记一 介绍1.1 JitPack是干嘛的?JitPack用来管理项目。为了在JitPack上发布您的库,您只需要

2020-10-17 02:56:28 5415 1

原创 关于Okhttp3(二)介绍

对于开发者来说优秀的源码是最好的学习资源。通过阅读优质源码就相当于和大牛有一次对话。OkHttp是支持HTTP和HTTP/2的网络请求框架。自从Android4.4开始,Google已经开始将源码中的HttpURLConnection替换为OkHttp,而在Android6.0之后的SDK中google更是移除了对于HttpClient的支持,在项目中用的比较多的Retrofit同样是对OkHttp进行再次封装而来的。Okhttp3中提供了Builder,很好的使用了创建者设计模式。Okhttp3.1.

2020-10-16 15:40:45 280

原创 关于Okhttp3(一)源码编译

一 okhttp3源码1.1 源码版本说明github源码地址源码分支4.x后使用kotlin后续文章分析使用okhttp_3.14.x分支1.2 源码编译1.2.1 工具选择Okhttp3 工程不是Android工程,不要用Android Studio打开,不要用Android Studio打开,不要用Android Studio打开。查看此源码的最好工具是IntelliJ IDEA。下载、安装IntelliJ IDEA请自行研究,没有什么难的。1.2.2 导入源码打开IDEA(第一次

2020-10-16 10:57:13 1804

原创 开源最佳实践:Android平台页面路由框架ARouter

摘要:为了更好地让开发者们更加深入了解阿里开源,阿里云云栖社区在3月1号了举办“阿里开源项目最佳实践”在线技术峰会,直播讲述了当前阿里新兴和经典开源项目实战经验以及背后的开发思路。在本次在线技术峰会上,阿里云资深开发工程师刘志龙分享了Android平台页面路由框架ARouter的技术方案、解决的问题以及在实际场景中的最佳实践。演讲嘉宾介绍:刘志龙(花名正纬),阿里云资深开发工程师,主要从事And...

2019-09-12 23:07:22 268

原创 探索Android路由框架-ARouter之深挖源码(二)

在《探索Android路由框架-ARouter(一)》中,主要介绍了ARouter框架的基本配置、多种跳转方案、拦截器的使用等。这一篇文章主要是对该框架的源码进行分析:ARouter是通过APT生成代码在框架内部进行操作,那么,项目编译生成的文件位置在那里?项目编译生成的文件位置 既然生成了这些源码,我们就先随便点点看看这些都是啥?源码 - 1源码 - ...

2019-09-09 23:01:22 185

原创 探索Android路由框架-ARouter之基本使用(一)

本文意在快速集成并掌握阿里Android技术团队开源的一款路由框架。这款路由框架可以为我们的应用开发提供更好更丰富的跳转方案。比如支持解析标准URL进行跳转,并自动注入参数到目标页面中;支持添加多个拦截器,自定义拦截顺序(满足拦截器设置的条件才允许跳转,所以这一特性对于某些问题又提供了新的解决思路)。本文示例代码基于ARouter框架最新1.3版本进行编写。介于篇幅的原因将其分...

2019-09-09 16:54:08 392

转载 Ubuntu 14.04 文件服务器--samba的安装和配置

更新源列表打开"终端窗口",输入"sudo apt-get update"-->回车-->"输入当前登录用户的管理员密码"-->回车,就可以了。安装samba打开"终端窗口",输入"sudo apt-get install samba samba-common"-->回车-->输入"y"-->回车-->安装完成。新建...

2019-05-28 10:35:12 233

原创 Ubuntu下git的安装与使用

Ubuntu下git的安装与使用与Windows下的大致相同,只不过个人感觉在Ubuntu下使用git更方便。 首先,确认你的系统是否已安装git,可以通过git指令进行查看,如果没有,在命令行模式下输入sudo apt-get install git命令进行安装。 安装完成后进行git配置,输入指令git config --global user.name "xxx"和 git ...

2019-05-18 19:32:45 198

转载 ubuntu安装Beyond Compare 4 并破解

1、官网下载http://www.scootersoftware.com/download.phpubuntu选择Linux下的Debian,32还是64位根据自己的系统下载。2、安装sudo dpkg -i 安装包.deb3、破解输入以下两条命令cd /usr/lib/beyondcompare/sudo sed -i "s/keexjEP3t4Mue23hrnu...

2019-04-11 15:22:58 28338 27

转载 如何打造一个 Android 编译时注解框架

前言预览permissions4m-annotationpermissions4m-processorAnnotationProcessorProxyInfoAnnotationProcessor 编码ProxyInfo 编码permissions4m-api前言近期笔者开源了一个 Android 编译时注解框架库——Permissions4M,一款处理 And...

2019-04-02 19:54:51 184

原创 Android注解快速入门和实用解析

文章较长,欢迎收藏后浅斟慢酌。主要介绍和分析了 RUNTIME 和 CLASS 下两种注解的使用,也欢迎讨论留言。首先什么是注解?@Override就是注解,它的作用是: 1、检查是否正确的重写了父类中的方法。 2、标明代码,这是一个重写的方法。1、体现在于:检查子类重写的方法名与参数类型是否正确;检查方法private/final/static等不能被重写。实际上@Over...

2019-03-27 14:52:09 244

转载 Android使用APT编译时注解生成代码

1.前言最近在使用Butterknife的时候感觉它使用的注解挺有意思的,就了解一下,顺便自己花点时间实现一个类似的框架。加深对这块的理解,下面上干货。2.注解注解和class、interface一样属于一种类型。是在javaSE5.0后引入的概念。注解通过关键字 @interface 进行定义:@Target(ElementType.FIELD)@Retention(Reten...

2019-03-27 14:08:53 235

实现系统预装应用及更新安装一键全部卸载

实现系统预装应用及更新安装一键全部卸载 具体实现原理及说明,请查阅微信公众号文章: 微信公众号:一点IT+ 公众号文章标题:Android各版本 实现系统预装应用及更新安装一键全部卸载 (五) 公众号文章链接:https://mp.weixin.qq.com/s?__biz=Mzk3NTAzODcxMw==&tempkey=MTMzMl8wU3g4MkZsQlBvcXgzSGlWWDgySnZjeFUtampRS0lQVDM3OHg5b2U4S0sxcm02OXVfblVNUTc1Z0NUaWlaTEE3OE9zdmE3NU1jVHFwWnlXZnQ0SVE5WkliWExQbG5UV3pvLTlvUl9GRmFzNDJRLW9yRDdKMHNSeUhvVDlsaFVNaFlWVVlvTHA0bGtNMTJad3Jfazg2dlN2cmx0SDBoZzlmSTI3OS1Bfn4%3D&chksm=c4d0f216f3a77b0058407892de125dbad5e7a307f83ca7d1c9d06ebbc416791286fbc5008ed1&token=228352949&lang=zh_CN#rd

2025-07-25

Android各版本 应用安装之静默安装/卸载SDK实现

兼容Android各版本实现静默安装的SDK实现。 由于Android各版本静默安装实现思路不同,因此提供demo兼容Android各版本静默安装的实现。 demo提供了完整的源码实现,你需要将demo中提供的模块编译成module,然后依赖到具体的app工程中即可实现Android各版本的静默安装功能。 Android静默安装受到系统限制,因此你的app最好属于系统应用,具体将应用变成系统应用比较容易可自行实现。 SDK具体实现原理及说明,请查阅微信公众号文章: 微信公众号:一点IT+ 公众号文章:Android各版本 应用安装之静默安装/卸载SDK实现 (三)

2025-07-20

AOSP中怎么基于平台向所有APP提供静默安装与卸载的能力

AOSP中怎么基于平台向所有APP提供静默安装与卸载的能力,当然既然是向所有APP提供,那么APP就不做任何限制,不管是系统应用还是普通应用都可以。 兼容Android各版本实现静默安装与卸载。 由于Android各版本静默安装/卸载实现思路不同,因此需要兼容Android各版本静默安装/卸载的实现。 demo提供了完整的静默安装与卸载的源码实现,你需要将demo中提供的源码放置于你的系统应用中进行实现。Android静默安装受到系统限制,因此你的静默安装与卸载的具体实现需要放置于你的系统应用中。 平台怎么向所有APP提供静默安装与卸载的能力,请查阅微信公众号文章: 微信公众号:一点IT+ 公众号文章:Android各版本 应用安装之静默安装/卸载平台接口实现 (四)

2025-07-20

FAT12文件系统

基于VC环境,在UCOS-II操作系统中实现FAT12

2015-03-17

annotationDemo

模拟Butterknife的Android 编译时注解实践项目Demo,编译时注解简单易懂。

2019-03-26

annotation

编译时注解demo.APT 是一种处理注解的工具,它对源代码文件进行检测找出其中的 Annotation,再根据注解自动生成代码。

2019-03-27

空空如也

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

TA关注的人

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