化身孤岛的瓜

工作,学习联系企鹅:3442771773

  • 博客(112)
  • 资源 (9)
  • 问答 (4)
  • 收藏
  • 关注

原创 (一)Jetpack Compose 从入门到会写

Jetpack Compose 快速上手篇,阅读本文需要30分钟,写一遍需要2小时,但是进一步理解深入需要各位看官持续的学习~!

2024-04-12 18:18:28 970 3

原创 RxJava 2.0 全体系梳理(持续更新ing)

只有观察者订阅了,才开始执行发射数据的代码。并且Cold Observable和Observer只能是一对一的关系。当有多个不同的订阅者时,消息是重新完整发送的,也就是说,对于Cold Observeable来说,有多个Observer存在的时候,各自的事件是独立的。多个订阅的sunbscribe(或者说观察者)事件各自独立。Hot Observable 无论有没有观察者订阅,事件始终都会发生。当Hot Observable有多个订阅者时,Hot Observable与订阅者们的关系是一对多的关系。

2023-07-02 13:36:15 1506

原创 Android——CInit源码分析

CInit 是一个Android 依赖任务启动框架(最近在分析公司的启动框架,发现虽然实现了DAG结构,可以支持任务依赖,同异步,优先级回调等功能,但是缺点也有很多,配置只能代码配置,不支持注解,不支持多进程等,已经落后于时代了- =!所以找到CInit来研究一下。总的来看框架整体实现比较简单,容易上手或者改造,有一个瑕疵是任务优先级priority并没有实现。较为复杂的点在于任务的执行部分逻辑,需要依次进行依赖环检查,进程判断,线程判断,children依赖任务执行步骤。

2023-02-04 20:55:11 602

原创 Android——Matirx 自动生成火焰图小工具

于是写了一个工具包,可以将Matirx抓到的堆栈信息stack自动生成火焰图svg文件。1.把Matirx生成的堆栈文件与mapping文件放到fire根目录下。2.终端运行python3 main.py。3.可以看到svg自动生成出来了。

2022-11-05 15:09:58 1054

原创 23种设计模式归纳总结——行为型

主要解决的就是“类或对象之间的交互”问题,将不同的行为代码解耦

2022-10-08 13:09:05 789

原创 23种设计模式归纳总结——结构型

主要解决“类或对象的组合或组装”问题,将不同功能代码解耦

2022-10-05 07:52:27 534

原创 23种设计模式归纳总结——创建型

主要解决“对象的创建”问题,将创建和使用代码解耦

2022-10-01 08:57:41 524

原创 Android字节码框架ByteX [method_call_opt] 源码分析

前言ByteX是字节团队推出的一个基于GradleTransformApi和ASM的字节码插件平台。Github:GitHub - bytedance/ByteX: ByteX is a bytecode plugin platform based on Android Gradle Transform API and ASM. 字节码插件开发平台近期在学习研究字节码相关的技术,所以会整理一个系列文章着重分析ByteX各种插件的实现原理和思想。阅读本文需要初步了解ASM技术,传...

2022-03-05 17:15:32 2188

原创 Android——Qigsaw 源码分析(四) 安装过程

前言在编译,初始化,加载的准备工作都结束以后,就到了插件的安装步骤。本文按调用顺序来分析具体的安装步骤。在官方demo下,可以看到QigsawInstaller中实际执行安装的步骤:SplitInstallManager.startInstall↓SplitInstallManagerImpl.startInstall(SplitInstallRequest request)↓如果未安装SplitInstallService.startInstall(List<St

2021-12-19 12:06:29 1648

原创 Android——Qigsaw 源码分析(三) 加载过程

前言在初始化流程结束之后,本章节主要是继续按执行顺序,分析后续的加载和安装流程。目录前言加载过程1. 预加载 (SplitLoadManagerImpl)1.1 SplitLoadManagerImpl.loadInstalledSplitsInternal1.2 SplitLoadManagerImpl.createInstalledSplitFileIntents1.3 SplitLoadManagerImpl.createLastInstalledSplitFileIn

2021-12-12 15:07:13 2242

原创 Android——Qigsaw 源码分析(二) 初始化过程

上一章节描述了Qigsaw编译期做的事情,后面的工作就是运行期进行的初始化,加载,和安装插件的过程。初始化过程通过官方文档:https://github.com/iqiyi/Qigsaw/blob/master/README.zh-CN.md中可以了解到,插件安装过程在QigsawApplication中。1.QigsawApplication1.1 attachBaseContext()SplitConfiguration configuration = SplitConfi

2021-12-11 22:11:23 1742

原创 Android——Qigsaw 源码分析(一) 编译过程

本文主要是对Qigsaw的源码分析。Qigsaw是一种动态组件化技术,可以有效减少包size,进行热更新等调优功能,在实际应用开发中能带来不错的收益与启发。基于2021/7/14版本分析。Qigsaw分为编译过程→安装过程→加载过程 三个阶段进行源码分析。如何调试gradle:Android如何创建Gradle插件开发工程及调试_xialonghua的专栏-CSDN博客_gradle插件开发目录包目录结构:1 QigsawAppBasePlugin1.1 Transform部

2021-12-05 10:30:40 1972

原创 Android——面向AOP编程(二) Xerath 开源AOP框架

承接上文Android——面向AOP编程(一)https://pumpkin.blog.csdn.net/article/details/119849325在持续了一段时间的学习之后,运用闲暇时间写了一个开源项目,目前在持续扩充和发育中。github:https://github.com/jiangzhengnan/XerathXerathXerath 是一个通过 [自定义注解]+ASM+Gradle Transform API实现的一套功能强大,方便开发,并且能够有效减少重复代码的A...

2021-11-14 15:54:53 2119

原创 动态规划习题本(持续更新)

1.求连续数组的最大和:力扣public static int maxSubArray(int[] nums) {//当前最大值int pre = 0;int max = nums[0];for (int temp : nums) {pre = Math.max(pre + temp, temp);max = Ma...

2021-10-30 10:44:15 183

原创 Android——ASM 极速上手 简单使用

理解一个工具的最快方式就是跑起来,然后原理自然了然于心本文以一个最简单的demo来实现对ASM全过程的了解。创建一个Child类,有一个call方法,最终的目的是在class类的call方法下增加一行输出语句。ASM概念,操作流程:需要创建一个 ClassReader 对象,将 .class 文件的内容读入到一个字节数组中然后需要一个 ClassWriter 的对象将操作之后的字节码的字节数组回写需要事件过滤器 ClassVisitor。在调用 ClassVisitor 的某些.

2021-08-28 12:15:57 3145 5

原创 Android——NguiLib酷炫的动画集合开源框架

项目地址:https://github.com/jiangzhengnan/NguiLib基于Kotlin &Java 语言实现的,符合android material design规范的漂亮 + 实用 + 简单 风格的自定义视图和布局集合,最小sdk版本兼容到14,欢迎rp,欢迎startJcenter地址:https://bintray.com/jiangzhengnan/NguiLib/NguiLib包含以下各种属性/矢量,布局/view动画。用法gradle:..

2021-08-28 11:54:19 1646 8

原创 iOS——Github 客户端Objective-C开源项目

应该是全网唯一的Objective-C版本的github客户端版本了,遵循简洁明了的设计理念,适合新人小白上手与拓展。在学习Oc语言的过程中,慢慢学习积累的成果。希望有志同道合的同学可以加入进来,共同开发,做大做强~项目地址:https://github.com/jiangzhengnan/NgGithubIos????基于iOS端,使用Objective-C编写的Github个人版本基于MVC模式进行开发 ,用到的第三方库:AFNetworking SDWebImage

2021-08-23 23:16:53 468

原创 Android——面向AOP编程(一)

前言:最近在工作中接触到了字节码插桩相关的知识,所以以本文来整理并实践一下相关的知识体系。字节码插桩:AOP编程 打包流程 自定义Gradle Task 查看,识别Java字节码 ASM使用 TransformAOP编程思想:面向切面编程思想,与面向过程和面向对象编程不同,AOP可以理解s为处理项目中一些统一的事物的过程,比如统计所有log,所有的点击事件监听,某个方法的全局操作等等。打包流程:java → class+jar → classes.dex+..

2021-08-22 11:15:19 293

原创 iOS——面向AOP编程(方法交换)

前言:本文主要介绍ios中方法交换的各种方式具体使用,帮助新手快速入门并且上手。(毕竟我自己学的时候,找资料挺辛苦的,网上的资料大部分都是互相cv ????)本文主要包括以下几个部分:概念 分类实现方法交换 类之间的方法交换(内部交换) 类之间的方法交换(外部交换) C语言实现的方法交换 方法交换实现全局点击拦截概念方法交换:要理解方法交换的话,要了解一些概念:Objective-C 是一个动态语言,它有runtime运行时系统来动态得创建类和对象。然后oc的类的结构

2021-08-15 13:55:03 839

原创 Android——Android app bundle插件化部署

其实google发布app bundle已经是18年的事情了,只是一直在业务上接触不到。最近刚好打算用到爱奇艺的Qigsaw框架来做国内的模块化加载,所以打算一起学习一下。说到模块化加载。其实本质就是为了缩小apk大小,增加下载量,增加应用功能的自由装载机制。本文会先从官网的Android app bundle文档与实例开始分析,先快速入手,写一个最简单的模块化调用demo。1.分析官网的demo:演示了如何使用 PlayCore API 请求和下载功能模块:https://git.

2021-08-05 23:34:06 916

原创 SpringMvc 学习基础笔记(一)——Hello World

写在开头:本人是移动开发工程师,近段时间在学习后端知识,希望以后可以一方面扩充自己的技术栈,也可以从更广的维度思考问题。SpringMVC可以简单的理解为Mvc模式,模型(Model ),视图(View),控制器(Controller )。做移动开发的话视图层暂时不需要太多了解。主要是需要了解Model,和Controller的作用以及他们整体的关系。模型(Model )封装了应用程序的数据和一般他们会组成的POJO。视图(View)是负责呈现模型数据和一般它生成的HTML输出,客户端.

2021-07-25 21:45:26 822 2

原创 Ios学习基础笔记(二)——实现App功能扩展

一.信息存储NSFileManager用法:创建文件。可以依靠NSFileHandler追加写入或者修改创建好的文件。NSCoder可以将对象转成二进制流。实现类有NSKeyedArchive,可以储存需要保存的对象。NSUserDefault类似于Android中的sp,可以存储轻量级数据,Integer,Float,BOOL,Double这些,建议用来存储用户状态相关信息。数据库存储系统支持的有CoreData(基于SQLite)其他第三方的有键值对数据库LevelDB/MM

2021-06-27 14:58:55 219

原创 Ios学习基础笔记(一)——实现App基本界面

最近ka大体架构UITabBarController 底部tab控件可以添加多个 UIViewController, UIViewController可以设置item通过delegate设计模式判断是否自动切换:1.设置tarBar.delegate = self2.实现shouldSelectViewController 或者didSelectViewControllerUINavigationController 做页面间的切换(Android 没有这个概念,..

2021-05-30 23:26:04 396 5

原创 Android性能分析工具记录

0.Profiler分析内存泄漏分析调用堆栈?1.leakcanary 检测内存泄漏gradle:debugCompile 'com.squareup.leakcanary:leakcanary-android:1.6.1'@Overridepublic void onCreate() { super.onCreate(); if (BuildConfig.DEBUG){ if (LeakCanary.isInAnalyzerProcess...

2021-05-26 13:43:53 279 1

原创 Android解决英文换行导致TextView 右侧留白区域过大问题

public class AdjustTextView extends WebullAutoResizeTextView { public AdjustTextView(Context context) { super(context); } public AdjustTextView(Context context, AttributeSet attrs) { super(context, attrs); } public Ad.

2020-11-26 17:11:48 1859

原创 Android——基于LinearLayout实现的可联动伸缩布局组件

首先先预览一下实现的效果:红色区域是设置的分割线,可以支持设置分割线的粗度和颜色属性:<declare-styleable name="ZoomLayout"> <attr name="IntervalLineWidth" format="reference" /> <attr name="IntervalLineColor" format="reference" /> </declare-styleable&g

2020-09-13 12:24:21 1271 1

原创 Android——基于ConstraintLayout实现的可拖拽位置控件

最近在研究使用android实现平板和电脑端一些应用的效果,话不多说先上个图可以看到,实现了中间的绿色区域换到父布局最左侧的功能。在拖动的过程中,父布局会出现上下左右四个箭头按钮,当光标移动到箭头上并放下时,拖动的视图会移动到指定的方向上去。实现思路:中间的绿色组件,经历了以下几个过程:1.长按实现视图的拖拽。2.拖拽移动过程中,父布局出现四个方向的箭头按钮,当光标在箭头上时显示黄色圆圈表示被选中。3.选中以后,将拖拽的组件移动到视图的最左侧。技术难点:1.首先是如何创造

2020-09-10 00:36:10 3373 1

原创 Android——inhale效果实现以及延伸(动画&绘制学习分享一)

概述:本文主要是对drawBitmapMesh的api研究学习,以及介绍模仿mac吸入动效的实现原理。drawBitmapMesh:使bigmap产生形变,功能与drawVertices类似,区别是drawVertices直接对画布产生作用。首先需要看一下api中的参数列表:其中关键参数分别是:bitmap:需要扭曲的图像meshWidth:横向的格数me...

2020-04-23 11:04:19 649

原创 Android 酷炫的3d立体圆柱动画效果实现

最近在drrible上看到一个超酷炫的效果,立体圆柱缓慢上升:https://dribbble.com/shots/7077455-Spending-analytics然后准备实现一波,做之前在网上找了很久,并没有相似的效果,所以自己做了一个,已经上传到我的代码库里:https://github.com/jiangzhengnan/NguiLib欢迎小伙伴们的start或者requ...

2019-12-22 18:00:49 2493 2

原创 Android——微信自动回复实现

首先本文的测试微信版本是7.0.3 ,亲测可以使用。需要实现-抓取微信自动回复消息的功能点。一.首先打开DDMS,使用按钮。在微信中回复一个消息点击Stop Method Profiling。二.查看生成的报表,观察到如下两个方法其中1应该是发送消息的接口方法。2应该是UI层显示的方法。三.首先分析第一个方法:1.,可以看到,参数值是String,返...

2019-09-20 18:16:29 11506 21

原创 Andorid——SVG矢量动画深度学习(一)

概览:本文主要描述了Android系统实现矢量动画的各种方式以及基础应用,也是一个月以来对矢量动画的学习和总结.矢量图:矢量图不同于位图是用像素描述图像的,它是用数学曲线描述图形。所以一张图片就是对应着一系列的数学曲线,所以图片的显示尺寸和图片体积无关。(这里为什么说显示尺寸,因为矢量图根本就没有所谓的尺寸,就看你把它显示成多大),它的体积就是文本文件的大小。并且矢量图可以无限拉伸不失...

2019-07-02 22:53:07 823

原创 Android——ECG心电图的绘制实现(二)

在上篇Android——ECG心电图的绘制实现博客中,实现了心电图的数据展示绘制。在之后又新增了 心电图的自动滑动展示 与 实时绘制功能。效果如下:自动滑动展示实时绘制(这里用到了一个timer不断添加数据)一、自动滑动展示 实现实现思路:通过开启定时器实现下标scrollIndex不断增加,以此来计算展示数据的开始下标scrollStartIndex与结束下标s...

2019-05-29 23:14:01 9369 14

原创 Android——ECG心电图的绘制实现

最近在项目中需要使用到的心电Ecg显示效果,本来打算使用sdk方的视图组件的,但是奈何他们的组件问题太多了。比如网格不对齐(强迫症表示这个无法忍),组件不支持静态显示数据等等问题。所以打算自己写一个用来做主页面的心电数据展示。首先要实现以下几个功能点:1.网格的大小,颜色可控。2.心电线条的颜色粗细可控。3.无论传入的数据源长度是多少,都要均匀的显示在表格上(按一定的比例尺缩放...

2019-05-19 23:52:12 5189 5

原创 Android——贝塞尔曲线的水波浪效果实现

使用贝塞尔曲线实现的水波浪效果,在很多杀毒软件的进度条显示中都有应用:这个效果呢以前在有一个项目中需要实现过,当时是使用的正弦曲线做的效果,不过后来发现贝塞尔曲线也可以做出相同的效果,并且代码更为优雅。那么对于初学者来说呢,首先需要了解什么是贝塞尔曲线,网上有很多教程,这里我找到了比较容易看懂的博客:贝塞尔曲线原理(实现图真漂亮)我们常用的是二阶贝塞尔曲线,其推导公式为:...

2019-05-12 14:55:50 2057

原创 Andorid实现皮皮蟹App的核心功能-语音播放

今天在跑一家面试的时候被问到能不能实现皮皮蟹的录音播放功能:概括起来就是在皮皮蟹里面选择需要播放的音频,保存到本地,然后跳转到微信点击录音的时候播放该音频,乍看一下感觉这个问题其实挺简单的,但是后面尝试了一下其实并不简单。思路1:通过判断麦克风是否被占用来获取在微信中录音的行为"回调",百度出来的方法大同小异,都是: private boolean validateMi...

2019-03-26 17:01:25 2795 1

原创 Android——腾讯QQ的Tab按钮动画效果完美实现

最近在用QQ的时候发现了一个有意思的小细节,如图所示:可以看到Tab按钮都有一个随着用户拖动而转动的特效,一开始被这个效果惊艳到了,QQ还是很细致的,注重细节和用户体验。于是利用空闲时间实现了这个效果,所有代码均用kotlin实现,项目效果如图所示:哈哈是不是一模一样呢,完整的实现代码并不长,只有200多行,但是找思路花了一些时间,也遇到过许多弯路,不过最后都还是坚持下

2017-11-25 11:58:53 7693 5

原创 Kotlin 入门基础语法学习笔记

敲了一天的kotlin基础语法,整理归纳到一个类里面,便于以后忘记的时候复习。/** * Created by GG on 2017/11/20. *///main函数fun main(args: Array) { var testMain = TestMain() print(testMain.array())}class TestMain { //单例

2017-11-21 21:41:16 710

原创 Android——AIDL基础实现demo以及原理探究

最近有一段时间没写博客了,打算最近趁着有时间补补,本文是总结的AIDL的基本使用和原理。分为两个部分:一是简单的上手demo,二是对代码逻辑进行分析。一:简单的AIDL小Demo:服务端:1.新建服务端工程AIDLserver,新建AIDL文件:2.打开该文件,编写一个测试方法:3.点击build-rebuild进行编译,可以看到生成的java类文件

2017-07-13 23:18:19 1037

原创 仿知乎FloatingActionButton浮动按钮动画效果实现(三)

本文主要是为了实现仿知乎FloatingActionButton浮动按钮动画效果实现(一)中提到的第四步骤:设置点击出现的子按钮与描绘子按钮出现的动画效果。这里建议使用Github上的一个MD风格的开源组件:https://github.com/Clans/FloatingActionButton源码大概1K行,实现效果如下:实现步骤如下:1.在gradle中引入依

2017-05-06 11:01:29 10612 2

原创 Android——自由拖动并显示文字的悬浮框实现

项目中需要实现一个状态显示的悬浮框,要求可以设置两种模式:拖动模式和不可拖动模式。实现效果图如下:实现步骤:1.首先要设置该悬浮框的基本属性:/** * 显示弹出框 * * @param context */ @SuppressWarnings("WrongConstant") public static void s

2017-05-03 22:09:17 6805

Matirx 自动生成火焰图小工具

可以将Matirx抓到的堆栈信息自动生成火焰图svg文件

2022-11-05

ExchangeTestApp.zip

iOS方法交换的各种姿势

2021-08-15

SVG矢量动画深度学习工程

博客地址:https://pumpkin.blog.csdn.net/article/details/94485505

2019-07-02

Android——实现光点模糊渐变的自旋转圆环特效,实现水滴波纹特效源码

Android——实现光点模糊渐变的自旋转圆环特效,实现水滴波纹特效的源代码。 博客地址:http://blog.csdn.net/qq_22770457?viewmode=contents

2017-02-06

Android——实现光点模糊渐变的自旋转圆环特效,实现水滴波纹特效

Android——实现光点模糊渐变的自旋转圆环特效,实现水滴波纹特效

2017-02-05

Android——实现RecyclerView左侧滑删除与右侧滑选择

RecyclerView的各种效果实现。 实现效果: 侧滑删除(带自动校位滑动效果); 右滑出现选择框; 一键全选。

2017-01-13

实现RecyclerView左侧滑删除与右侧滑选择

实现RecyclerView左侧滑删除与右侧滑选择

2017-01-13

全仿To圈的各种效果代码资源汇总

To圈大部分效果实现

2017-01-08

实现酷炫的RecyclerView心形交错下拉刷新动画

往下拉时会有两个爱心从左边和上方聚合到中心,然后自动弹回时他们又回复原位。

2017-01-08

Java面试题库汇总

共包括: Java基础面试宝典2014版 Java就业面试题大全 数据库面试题 项目面试题

2016-05-24

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

TA关注的人

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