- 博客(68)
- 资源 (20)
- 收藏
- 关注
原创 App Startup基本使用及源码分析
The App Startup library provides a straightforward, performant way to initialize components at application startup. Both library developers and app developers can use App Startup to streamline startup sequences and explicitly set the order of initializatio
2020-08-25 22:45:04
740
原创 ButterKnife源码完全解析
本文主要介绍ButterKnife基本使用,并对butterKnife如何实现模板代码生成和依赖注入做了详细分析
2020-04-20 18:25:07
488
1
原创 LeakCanary2源码分析
LeakCanary2源码分析LeakCanary介绍LeakCanary使用加入依赖简单实践LeakCanary源码分析1. 如何查看源码2. 源码分析2.1 ActivityDestroyWatcher.install2.2 FragmentDestroyWatcher.install2.3 onAppWatcherInstalled2.4 HeapAnalyzerService.runAna...
2020-04-01 15:23:01
997
原创 GreenDAO基本使用及源码分析
GreenDAO基本使用及源码分析GreenDAO介绍GreenDAO基本使用添加依赖创建存储对象实体类GreenDAO初始化GreenDAO实现数据库增删改查增删改查GreenDao源码分析1. 创建数据库帮助类对象DevOpenHelper2. 获取数据库3. 创建DaoMaster对象4. AbstractDao构造函数5. 创建DaoSeesion对象6. 插入7. 删除8. 修改9. 查...
2020-03-28 11:53:52
966
2
原创 Glide图片下载架构完全解析
文章目录Glide框架总览图片加载源码分析Glide.with()1. Glide.with(Context)2. GlideBuilder.build3. Glide构造方法4. RequestManagerRetriever.get5. RequestManager生命周期6. Registry7. Glide.with小结load(url)1.RequestManager.load2.as...
2020-03-16 22:02:34
428
原创 Notepad++使用深色主题
对于习惯深色主题的人来说,一定想使用Notepad++的深色主题,下面就是相关方法:方法一在设置-语言格式设置中选择 “Obsidian” 主题,基本够用。方法二从Github下载VS2012-Dark.xml找到notepad++的安装目录 %PROGRAMFILES%\Notepad++\themes (64位系统是: %PROGRAMFILES(X86)%\Notepad++\t...
2020-01-19 14:32:48
8253
1
原创 Android高效加载大图,长图和宽图
对于加载大图的方法,可以使用采样(点击了解)还有改变编码来减少内存占用,这里提供一种新思路,使用区域加载的办法,限制内存使用大小,当手机滑动时,不断更新加载区域的图片,相关代码和注释如下:public class PandoraView extends View implements GestureDetector.OnGestureListener, View.OnTouchListener ...
2019-12-13 10:48:46
507
原创 Android动态权限申请方法
实现动态权限申请可以用如下方法:下面是各种方法的引入:使用谷歌注解处理器auto-service:compileOnly 'com.google.auto.service:auto-service:1.0-rc6'annotationProcessor 'com.google.auto.service:auto-service:1.0-rc6'EventBus引入该库Java ...
2019-12-09 16:52:33
642
原创 Android面向切面编程(AOP)
AOP简介什么是AOPAOP(Aspect Oriented Programming),中译为面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP(面向对象编程)的延续,是函数式编程的一种衍生范型。AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高代码的灵活性和可拓展性。在Android中,AOP主要用于日志记录,权限控...
2019-12-09 13:50:00
803
原创 Android 贝塞尔曲线原理及其绘制实现
Android动画,特别是涉及运动轨迹的,很多时候都会使用贝塞尔曲线,下面将系统的介绍下贝塞尔曲线的相关知识。什么是贝塞尔曲线贝塞尔曲线于1962年,由法国工程师皮埃尔·贝兹(Pierre Bézier)所广泛发表,他运用贝塞尔曲线来为汽车的主体进行设计。贝塞尔曲线最初由保尔·德·卡斯特里奥于1959年运用德卡斯特里奥算法开发,以稳定数值的方法求出贝塞尔曲线。下文我们将简要介绍德卡斯特里奥算...
2019-11-29 17:44:32
1644
原创 LruCache缓存机制
LruCache使用最近最少使用的缓存策略,最近访问的数据将变成最新的数据,如果存储区已满,通过历史访问记录来倒序淘汰数据。LruCache本质上是一个定制化的LinkedHashMap,get(),put(),remove()方法里面都有synchronized,实现线程安全。put(K key, V value):把键值对存放到map中,如果map size溢出,循环删除旧数据。get(...
2019-11-22 19:05:42
215
原创 REST相关
REST(Representational State Transfer)是一种设计Web API的模式。REST基于HTTP进行通信,通过XML格式或JSON格式作为载体传输消息和数据,使得所有功能都以一种标准化Web服务的形式向外提供服务,实现功能代码与界面设计的解耦,可以极大地把前端和后端的代码隔离,使得后端代码易于测试,前端代码编写更简单。举个例子,只需要开发针对iOS和Android的...
2019-11-20 16:48:47
164
原创 关于设计模式
1.75倍速看完了《十年程序员分享他的设计模式经验》下面是笔记:推荐书籍:《重构 改善既有代码的设计》作者 马丁福勒这本书列举了22中代码的坏味道,有空可以看看书中列举的22种代码的坏味道设计误区:没时间,功能太简单没必要学习最好的方式:自己去领悟,借鉴(读源码)设计模式不是用来套用,实战步骤审查代码,用设计原则去评价一个代码的好坏用设计模式改造代码 – 参考开源框架六大设计...
2019-11-18 20:53:25
114
原创 JVM相关
本文是关于网易云课堂上《带你重新认识JVM》的简单笔记。Java代码执行流程如下图:方法区:包含类信息,常量,静态变量JIT编译后的代码,存在垃圾回收机制,回收效率低,可能存在OOM。堆内存,存放对象实例,几乎所有对象和数组。Java对象在内存中的布局:1.在堆中存对象,存的是啥?局部变量存在栈,对象字段存在于堆中Teacher james = new Teacher();ja...
2019-11-18 13:40:02
122
原创 Dart异步处理机制
Dart异步处理机制(1小时)Dart的异步处理机制概览Dart与事件循环基本概念任务调度任务执行顺序事件队列微任务队列练习测试多核CPU的利用Dart的异步处理机制概览不同操作语言处理耗时任务有不同的处理机制:多线程,开启一个新的线程,在新线程中进行异步操作,在通过线程间通信,将数据同主线程共享。Java和C++使用这种方式。单线程+事件循环,JavaScript和Dart就是甩这种方...
2019-10-23 13:30:37
701
原创 Dart语言基础(异步支持)
Dart语言基础(异步支持)FutureFuture 常用APIFuture.thenFuture.catchErrorFuture.whenCompleteFuture.waitasync/awaitStreamDart的异步机制事件循环Dart类库有非常多的返回Future或者Stream对象的函数。 这些函数被称为异步函数:它们只会在设置好一些耗时操作之后返回,比如像 IO操作,网络操作等...
2019-10-19 16:37:10
216
原创 Dart语言基础(函数)
Dart语言基础(函数)(0.5小时)函数声明函数作为变量函数作为参数传递可选参数命名可选参数位置可选参数匿名函数静态作用域词法闭包返回值Dart是一种面向对象的语言,所以函数也是对象。这意味着函数可以赋值给变量或作为参数传递给其他函数。函数声明数据类型 函数的名称(传参) { 函数体 return 返回值}举个例子:int sum(a1,a2){ return a1+a...
2019-10-17 12:55:31
201
原创 Dart语言基础(数据类型及其操作)
数据类型及其操作Number (数值)Strings (字符串)Booleans (布尔值)Lists (列表)SetMapsDart常用数据类型如下:numbersstringsbooleanslists (也被称之为 arrays)setmapsNumber (数值)Dart支持两种类型的数字,int 和 double,int用于整数 ,而 double 用于浮点数。 ...
2019-10-14 21:43:19
390
原创 Virtual Studio Code搭建Dart环境
Virtual Studio Code搭建Dart环境Virtual Studio Code(下称 VSCode)一个运行于 Mac OS X、Windows和 Linux 之上的,针对于编写现代 Web 和云应用的跨平台源代码编辑器,其主要特点是开源以及轻量级,我们可以将其作为学习Dart语言基础的工具。环境搭建步骤如下:从VSCode官网下载并安装 VSCode安装如下2个插件:...
2019-10-09 11:12:43
834
1
原创 Flutter环境搭建
Flutter环境搭建(1.5小时)使用镜像获取和安装Flutter SDKFlutter初体验(Android Studio)创建新应用运行应用程序体验热重载本文主要介绍Flutter在window上环境搭建步骤,并在此基础上运行第一个简单程序。使用镜像由于某些不可描述的原因,国内使用Flutter有时会受到限制,Flutter官网为中国开发者搭建了临时镜像,请选择其中一个镜像加入到用...
2019-10-08 09:48:33
145
原创 Flutter开篇概述
Flutter开篇概述What is FlutterFlutter特性专栏目录What is Flutter引用Flutter开发者官方网站 :Flutter is Google’s UI toolkit for building beautiful, natively compiled applications for mobile, web, and desktop from a si...
2019-10-06 10:36:33
141
原创 性能分析-内存分析leakcanary
所谓内存分析,其实是为了防止APP造成的内存泄露问题,常用的内存分析软件包括MAT,Android Studio自带软件,这两个软件给我们调试带来很大的便利,后面我们会陆续介绍,今天我们来说说我用的最多的工具 LeakCanary。准备工作LeakCanary是有Squary开发的,用于分析内存泄露的App,对,没错,就是一款App,超级好用,只需要完成下面两步,就可以帮我们分析内存问题添加依赖
2016-10-12 15:35:51
1293
原创 性能分析之OverDraw
渲染和用户体验息息相关,合理高效的渲染可以提高用户体验,反之,会造成界面卡顿,出现Tearing现象(画面上下内容发生断裂),所以我们在开发过程中,应该留意过渡渲染对项目所造成的影响。Android渲染机制在学习过渡渲染之前,我们先了解下Android的渲染机制: Android系统每隔16ms发出VSYNC信号,触发对UI进行渲染, 如果每次渲染都成功,这样就能够达到流畅的画面所需要的60fps
2016-10-11 15:53:22
917
1
原创 性能分析之ClassLoader.getResourceAsStream
在传统Java中,我们常使用ClassLoader.getResourceAsStream 通过资源名称来获取资源,但是在Android中,使用该方法会对性能产生非常大的影响,在有关统计中,最高可以延时达到2000ms以上,在Android中,强烈建议使用安卓提供的Resources.get*(resId) 函数为什么ClassLoader.getResourceAsStream 对性能有那么严
2016-10-09 16:31:23
675
原创 模仿和彩云首页动画
前段时间用了一下移动的和彩云,在首页有个按钮动画,今天我们就来试着用模仿一下,这个是效果图: 我们可以看到动画主要分两大块: 1.“+”号按钮的旋转操作 2. 其他分类按钮的动画效果 因为进入和退出的动作都不一样,所以这里 我们需要写4种动画效果,分别是: 1.“+”按钮逆时针旋转120度 2.“+”按钮顺时针旋转120度 3. 其他分类按钮上下振动动画 4. 其他分类按钮向
2016-09-22 15:45:51
741
原创 RxJava实现EventBus
上一篇文章我们介绍了Otto EventBus, 我们发现EventBus用的就是典型的观察者模式,也就是包含4个主要元素 ,订阅 ,订阅者,事件以及总线,这个和我们之前介绍的RxJava是基本一致的,那么我们可以用RxJava来实现EventBus么,答案是肯定的,我们接着一步步来实现。文章目录:添加依赖实现RxBus内存回收异常处理自动重新订阅捕获线程切换是时候用RxBus取代O
2016-09-16 11:44:27
623
原创 Otto EventBus实践
Otto EventBus实践Otto 框架是由 Square 公司开发的,一款用于android 事件总线 EventBus,我们可以通过他来传递事件,具体使用请参考官网,这里我主要通过一个简单的例子来介绍我们在该如何使用这一框架实践在gradle加入依赖compile 'com.squareup:otto:1.3.8'其实总线这东西,和我们以前学Arm什么都是一样的,都是为了实现事件的分发,
2016-09-13 13:41:14
1105
原创 Retrofit源码浅析
Retrofit源码浅析上一篇文章 Retrofit实践,我们只是对使用Retrofit做了初步了解,但是有两个内容,我们当时并没有深入分析,分别是:用于对RxJava支持的适配器 RxJavaCallAdapterFactory,以及 动态代理构造retrofit.create() ,下面我们就进行简单的分析:Retrofit源码浅析RxJavaCallAdapterFactoryretrof
2016-09-13 11:12:40
1060
原创 Retrofit实践(MVP+RxJava)
Retorfit实践(MVP+RxJava)之前两篇文章分别介绍了 MVP 以及 RxJava,今天我们通过学习Retrofit来进一步介绍他们。文章目录如下:Retorfit实践MVPRxJavaRetorfit介绍Retorfit实践添加依赖Model层定义请求接口创建 Retrofit对象View层Presenter层Retorfit介绍Retrofit(GitHub)与okh
2016-08-24 10:53:34
957
原创 [Volley+Gson]获取PM2.5小应用(二)/自定义Volley Request
上一篇文章 [Volley+Gson]获取PM2.5小应用,我们介绍了使用Volley+Gson来获取并解析Json数据
2016-01-05 21:54:06
853
原创 [Volley+Gson]获取PM2.5小应用
最近广州的天气质量真心不行,最高PM2.5都到了200+,咳咳,本来就宅的人只能更宅了。。。今天我们会做一个简单的apk,来获取空气质量的相关数据。数据来源:百度API , 空气质量的API,请点击先贴一下百度的Java示例
2016-01-04 22:19:57
702
原创 [MD]模仿百度手机助手动态折线图/MPAndroidCharts实现(二)
上一篇文章[MD]模仿百度手机助手动态折线图/MPAndroidCharts实现(一) 我们介绍了使用MPAndroidCharts实现折线图的动画,其实就是使用开源库提供的AnimateX方法进行构现,针对百度手机的动态折线图,其实是有个知识点是我们忽略的,在看会百度的效果我们发现,其实X轴只显示最后的3个点,这个可以怎么实现呢,嘿嘿,这个就是我们今天要说的,先看看我们实现的效果:
2015-12-28 23:14:00
927
原创 [MD]模仿百度手机助手动态折线图/MPAndroidCharts实现(一)
上一篇文章 [MD]模仿百度手机助手动态折线图 介绍了使用HelloChart模拟百度手机助手动态折线图的方法,接下来我们使用大家都比较熟悉的MPAndroidChart来实现同样的效果,之所以用MPChart,是因为MPAndroidChart内部已经封装了我们需要的动态效果,这个我们之后会详细介绍实现的效果如下:设置 折线图样式(折线,图例,坐标轴等) void
2015-12-28 22:46:23
1786
原创 [MD]模仿百度手机助手动态折线图
最近下了个百度手机助手,看到里面有很炫酷的折现图,效果是这样的:于是我自己想尝试做一下动态折线图,这里 我使用的是 helloCharts 这个开源项目在布局文Activity_main,xml中添加LineChartView <lecho.lib.hellocharts.view.LineChartView
2015-12-25 23:01:01
728
原创 [MD][仿煎蛋]observablescrollview下拉隐藏actionbar
煎蛋是这个样子的:下来隐藏actionbar是个很好的用户体验,特别是对于使用屏幕比较小的用户,下面我们自己来做这个功能。伟大的开源已经帮我们提供了这样的方法,我们只要站在巨人的肩膀上开发就可以了,这里我们引用的是 ksoichiro的Android-ObservableScrollView 我们只引用开源工程中的几个文件然后在activity_main.xml中添加
2015-12-21 21:28:48
1320
原创 [MD学习]使用ActionBar+DrawableLayout+Palette打造侧滑UI
Google 在2014年提出了 Material Design(MD) 的设计规范,根据MD做出来的UI效果炫酷,成了Android码农必不可少的利剑今天我们的Demo也将使用动态导航图标+主色调匹配这样的技能,做出来的效果如下图 主要完成工作:1. 使用DrawableLayout打
2015-12-10 16:25:10
2128
PM25Vollery2
2016-01-05
PM25Volley
2016-01-04
MPAndroidCharts_sample_apk
2015-12-25
OBViewDemo
2015-12-21
OBViewDemoAsJD
2015-12-21
DrawableLayout
2015-12-10
MediaPlayer(Flagment)
2015-08-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人