自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

点击置顶文章查看博客目录(全站式导航)

恪守本分,勿起躁念,脚踏实地,踏浪前行,坚持原创,宁缺勿滥

原创 欢迎进入Hensen_的博客目录(全站式导航)

Android基础 Java基础 Java基础——Java内存模型和垃圾回收机制 语法基础 语法基础——C语法基础 语法基础——C++语法基础 语法基础——Objective-C语法基础 语法基础——PHP语法基础 ...

2016-09-23 13:20:25 20285 23

原创 记录一次海外图片加载不出来的排查

前言 在这次项目中我们遇到这样的情况,在国内访问迪拜阿里云服务器的图片慢,且加载有点像断片的感觉 一开始我们通过各种找借口,想出各种理由来为这个慢做狡辩 我们是访问国外服务器,访问慢是正常的 我们使用的是海外加速,国内并没加速,国内慢是正常的 国内网速环境过慢,访问不会快的 后面我们收到反馈...

2020-03-18 20:45:22 188 0

原创 Android基础控件——ImageView的自定义,再次利用Matrix完美模仿小红书长图自动滚动效果

前言 当我们阅读了ImageView源码后,发现Matrix的使用真的是很强大,几乎可以实现我们很多该有的功能,当我第一次看到这个效果的时候,第一想法就是ImageView的Matrix。通过比对了网上很多方案后,网上的方案还是比较复杂,如果我们巧用Matrix去做效果时,会发现其实代码也就100...

2020-01-04 23:05:29 1105 2

原创 Android基础控件——SeekBar的自定义,超短代码模仿抖音带有数字拖拽进度条

前言 在开发中,经常会遇到SeekBar组件的开发,一个高效的自定义SeekBar显得尤为重要,笔者刚好也在项目中大量使用带有数字的拖拽进度条,在深思熟虑后,打算从继承源码形式上,把数字绘制在拖拽进度条上,让拖拽的时候时刻去更新数字。这种实现方式不到100行代码,代码极其精简,功能极其好用,另外,...

2019-12-27 23:33:26 458 0

原创 Android基础控件——HorizontalScrollView的自定义,完美模仿抖音等短视频拍摄底部切换Tab控件

前言 最近在项目中需要用到跟抖音同样的控件效果,找了几个开源的TabLayout控件,要么功能很复杂,要么要自己拓展功能,还要去阅读别人代码,实在是没这个时间折腾。每次遇到找不到第三方的控件时候,就开始撸一个简单的控件,好维护又好拓展,功能也不差,做出来体验也很好 抖音原效果 模仿效果 ...

2019-12-26 00:04:05 1139 0

原创 Android进阶——ExoPlayer源码分析之宽带预测策略的算法详解

前言 由于国内基础设施非常优秀,在平时的开发中,很少会关注网络情况,很容易忽略弱网情况下的网络状况,如果项目属于国外App,则需要考虑到当前的基础设施和网络情况,特别是播放视频的时候,需要通过动态调整码率去选择当前的播放码率。这时,就找到ExoPlayer源码中的宽带预测方案,其本质上使用的是移动...

2019-12-24 16:13:13 279 0

原创 Flutter开发日记——Flutter布局Widget详解(下)

Row 1、简介 Row组件是一个横向排布的布局组件,跟h5的Flex布局一样,只不过限定了横向排布 2、构造函数 Row({ Key key, MainAxisAlignment mainAxisAlignment = MainAxisAlignment.start, MainA...

2019-11-04 23:25:33 201 0

原创 Flutter开发日记——Flutter布局Widget详解(上)

Container 1、简介 Container类似于h5的盒子模型,相当于布局容器 Container在没有子节点的时候,会试图变得足够大 Container在带有子节点的时候,会根据子节点的尺寸调节自身大小 2、构造函数 Container({ Key key, this....

2019-10-29 15:59:38 372 0

原创 Android进阶——性能优化之MAT的使用

前言 概念 hprof文件:指的是当前Android堆内存的快照情况,当前设备的堆内存会全部保存在hporf中 MAT:MemoryAnalyzer,内存的分析工具,通过工具可以分析堆内存的使用情况和检测内存泄漏等问题 MAT 1、生成hprof文件导出 2、打开MAT 导入我们的...

2019-10-17 22:45:08 223 2

原创 基础拍摄前期和基础后期修图

基础拍摄前期 焦距 1、焦距类型 变焦镜头:70mm-200mm,200÷70≈2.86,2.86倍的变焦镜头 定焦镜头:50mm 2、焦距特点 焦距越短,取景范围就越广 焦距越长,取景范围就越窄 3、焦距定义 24mm以下:超广角,适合大场景、建筑、风景 24mm和28mm:广角,适合...

2019-10-17 21:29:50 102 0

原创 Flutter开发日记——Flutter动画&Motion Widget详解(下)

本篇文章已授权微信公众号 YYGeeker 独家发布转载请标明出处 控件介绍 AnimatedDefaultTextStyle表示一个文本样式的动画组件,通过修改组件的style属性,系统将会通过动画的方式自动切换到新的style样式 构造函数 AnimatedDefaultTextStyle...

2019-09-30 18:13:45 283 0

原创 Flutter开发日记——Flutter基础入门知识

配置环境 1、安装编辑器 通过官网安装VSCode 2、安装Flutter插件 在VSCode中EXTENSIONS栏中安装Flutter插件 3、检查Flutter插件 通过Command Palette中输入命令检查Flutter的运行环境 run flutter doctor 运行指令时会...

2019-07-31 17:47:57 437 0

原创 Android自定义View——贝塞尔曲线实现抛物线效果

效果展示 原理分析 抛物线效果最主要的难点和原理在于贝塞尔曲线动画的生成,我们通过图片主要讲解贝塞尔曲线动画,这里用到的是二级贝塞尔曲线 1、需要找到贝塞尔曲线的三个点,开启点、结束点、控制点 2、通过二级贝塞尔曲线的公式计算,获取贝塞尔曲线的轨迹路径点 3、通过设置点赞图片X,Y坐标,从而形成...

2019-07-31 17:23:59 603 0

原创 Flutter开发日记——Flutter动画&Motion Widget详解(上)

控件介绍 AnimatedContainer表示一个动画容器,只要更改容器的值,就能表现出对应的动画效果 child属性,表示容器中的子元素,子元素在容器中的位置默认是居中显示 构造函数 AnimatedContainer({ Key key, this.alignment, ...

2019-07-28 20:29:02 846 0

原创 Android自定义View——自定义插值器和估值器实现向上抛体运动

效果图 原理分析 其实代码很简单,主要的知识点就是执行动画是如何配合插值器和估值器的运算,达到我们想要的效果。这里的向上抛体运动和自由落体运动主要是运用了高中的加速度运算的公式,计算其x轴和y轴的路程和速度即可,通过插值器计算时间和估值器计算位移,达到向上抛体效果。 插值器:用0-t,来表示时...

2019-07-23 23:17:18 319 0

原创 Java基础——CopyOnWriteArrayList源码分析

CopyOnWriteArrayList是什么 CopyOnWriteArrayList是List接口的同步实现 CopyOnWriteArrayList是基于数组复制的操作,对于增、删、改的操作开销很大 CopyOnWriteArrayList使用迭代器遍历不会导致与其他线程发生冲突,依赖于不...

2019-06-25 00:17:09 150 0

原创 Android实战——Room的使用,升级没烦恼

前言 Room相比GreenDao而言是官方推荐的一个关于数据库的依赖库,Room更需要开发人员有较专业的SQL数据库知识,它涉及到SQL的语法编写和SQL数据库的升级,如果对SQL语法不懂的开发者来说,使用起来是很有难度的,但对于熟悉SQL语法的开发者来说,用起来比GreenDao好用许多 Ro...

2019-06-11 00:16:18 1201 0

原创 Flutter开发日记——构建系统加入Flutter符号表

前言 记一次在开发过程中找到Flutter符号表的过程。由于Flutter准备上线后需要将Flutter字符表打进崩溃系统,供崩溃系统查询。即使是发布到线上的崩溃,也能在崩溃系统中扫描出来。这里只是记录将对应Flutter版本号找到对应带符号表的过程,我们的工作就是将符号表交给负责崩溃系统的人即可...

2019-06-04 20:52:14 948 0

原创 Android基础控件——ImageView的自定义,巧用Matrix实现图片不变形的炫酷PK条

前言 在开发中常常会遇到PK条制作,如果在PK条中是纯色的情况下,比较好办,如下: 我们通常会设置其权重进行更新两个PK条的进度,实现起来也简单 //更新PkBar宽度比例 private void updateLayoutParams(float ratio) { LinearLayo...

2019-04-29 23:47:12 433 0

原创 语法基础——ReactNative语法基础

ES6特性 类 模块化 箭头函数 函数参数默认值 模板字符串 解构赋值 延展操作符 对象属性简写 Promise Let与Const 1、类 引入类的概念,让其具有面向对象的开发 class Person { constructor(name,age) { this.n...

2019-03-31 22:14:37 523 0

原创 语法基础——Dart语法基础

主函数 void main(){ print('Hello Word'); } 常量和变量 如果未初始化的变量,其默认值为null //常量 const a = 10; //变量 var b = 10; Dart没有public、protected、和private...

2019-02-14 11:41:42 362 0

原创 Android进阶——Android弹窗组件工作机制之Dialog、DialogFragment

前言 Android在DialogFragment推出后,就已经不推荐继续使用Dialog,可替换为DialogFragment,其实DialogFragment只不过是对增加一层看不到的Fragment,用于监听生命周期,在Activity退出的时候会自动回收Dialog弹窗 基础概念 Act...

2019-01-22 16:57:55 724 0

原创 10章 RxJava源码分析

本篇文章已授权微信公众号 YYGeeker 独家发布转载请标明出处 CSDN学院课程地址 RxJava2从入门到精通-初级篇:https://edu.csdn.net/course/detail/10036 RxJava2从入门到精通-中级篇:https://edu.csdn.net/cour...

2019-01-21 21:13:26 1368 0

原创 9章 RxJava混合实战

本篇文章已授权微信公众号 YYGeeker 独家发布转载请标明出处 CSDN学院课程地址 RxJava2从入门到精通-初级篇:https://edu.csdn.net/course/detail/10036 RxJava2从入门到精通-中级篇:https://edu.csdn.net/cour...

2018-12-27 17:32:42 297 0

原创 8章 RxJava高级用法(二)

CSDN学院课程地址 RxJava2从入门到精通-初级篇:https://edu.csdn.net/course/detail/10036 RxJava2从入门到精通-中级篇:https://edu.csdn.net/course/detail/10037 RxJava2从入门到精通-进阶篇:...

2018-12-15 22:43:43 860 1

原创 7章 RxJava高级用法(一)

CSDN学院课程地址 RxJava2从入门到精通-初级篇:https://edu.csdn.net/course/detail/10036 RxJava2从入门到精通-中级篇:https://edu.csdn.net/course/detail/10037 RxJava2从入门到精通-进阶篇:...

2018-12-15 22:42:48 809 1

原创 6章 RxJava基础实战

CSDN学院课程地址 RxJava2从入门到精通-初级篇:https://edu.csdn.net/course/detail/10036 RxJava2从入门到精通-中级篇:https://edu.csdn.net/course/detail/10037 RxJava2从入门到精通-进阶篇:...

2018-12-15 22:42:16 554 0

原创 5章 RxJava背压策略

课程地址 RxJava2从入门到精通-初级篇:https://edu.csdn.net/course/detail/10036 RxJava2从入门到精通-中级篇:https://edu.csdn.net/course/detail/10037 RxJava2从入门到精通-进阶篇:https:...

2018-12-07 15:21:59 364 0

原创 4章 RxJava基本响应类型

课程地址 RxJava2从入门到精通-初级篇:https://edu.csdn.net/course/detail/10036 RxJava2从入门到精通-中级篇:https://edu.csdn.net/course/detail/10037 RxJava2从入门到精通-进阶篇:https:...

2018-12-07 15:21:29 313 0

原创 3章 RxJava操作符

课程地址 RxJava2从入门到精通-初级篇:https://edu.csdn.net/course/detail/10036 RxJava2从入门到精通-中级篇:https://edu.csdn.net/course/detail/10037 RxJava2从入门到精通-进阶篇:https:...

2018-12-07 15:20:58 421 3

原创 2章 RxJava基本使用

课程地址 RxJava2从入门到精通-初级篇:https://edu.csdn.net/course/detail/10036 RxJava2从入门到精通-中级篇:https://edu.csdn.net/course/detail/10037 RxJava2从入门到精通-进阶篇:https:...

2018-11-19 18:14:43 478 0

原创 1章 基础概念

1. 基础概念 1.1 RxJava简述 用原话说:RxJava是一个在Java虚拟机上,使用可观察的序列构成基于事件的,异步的程序库 用白话说:类似于Google提供给我们使用的AsyncTask,它能在异步线程处理后传递到UI线程中处理 1.2 RxAndroid简述 用原话说:RxAn...

2018-11-19 18:02:14 535 1

原创 0章 RxJava2课程目录介绍

导言 RxJava在工作中和面试中已经成为各个项目开发的必选框架,掌握这门框架的使用是尤其重要的。文章将从0开始进行入门教学,参考工作中开发实战需求,对基础概念和实战例子进行讲解。即使您没有学过RxJava也能通过这篇文章快速入门,并快速掌握RxJava在实战中的应用。项目中的代码都会通过Gith...

2018-10-26 00:48:52 1480 1

原创 Android进阶——Java注解实战之APT构建模块化的第一步

前言 APT的学习要花点时间去掌握和实践的,短时间内只能掌握知识点,更多的是在实战中去实践。其实,APT就是一种工具而已,只要用多了,自然就会熟练了,不过要想实践之前,还是必须把基础知识学好才能实战进入开发。文章会从基础用例讲解知识点,然后再通过实战进行实践 APT简介 APT(Anno...

2018-09-03 10:54:29 2641 7

原创 语法基础——Kotlin语法基础

主函数 fun main(args: Array<String>){ println("Hello World") } 变量 1、常...

2018-08-23 17:09:32 515 0

原创 语法基础——Proguard语法基础

启用混淆 通过工程下的build.gradle文件中的开启混淆开关和配置混淆规则文件 minifyEnabled:混淆开关 proguard-android.txt:SDK中默认proguard的配置规则 proguard-rules.pro:自定义proguard的配置规则 bui...

2018-08-11 18:16:07 543 0

原创 语法基础——Gradle语法基础

生命周期 Gradle的构建依次会执行下面的三个生命周期 初始化阶段(Initialization):解析整个工程中的所有Project,构建出所有的project对象 配置阶段(Configuration):解析所有的projects对象中的task,构建好所有task的拓扑图 执行阶段(...

2018-08-05 16:17:48 2820 2

原创 语法基础——Groovy语法基础

变量 1、变量类型 groovy变量没有基本数据类型,只有引用类型,尽管定义的基本类型也会被转换成引用类型 int x = 10 println x.class //class java.lang.Integer double y = 10.10 println y.class //cl...

2018-07-25 11:49:34 401 0

原创 Java进阶——Java中的Atomic原子特性

引言 这篇文章从基本概念和例子中入手,首先,从volatile关键字引出原子性的概念和Atomic包,然后,简单的介绍Atomic,介绍Atomic在使用中的用到的CAS技术和会遇到的ABA问题,最后,介绍Atomic的成员和例子 基本概念 一、volatile 用volatile修饰...

2018-06-23 18:00:49 4116 0

原创 Java基础——BlockingQueue源码分析之LinkedBlockingQueue

BlockingQueue是什么 BlockingQueue是一个阻塞队列的接口 BlockingQueue是线程安全的 BlockingQueue具有先进先出的特点 当队列满的时候进行入队操作会阻塞,当队列空的时候进行出队操作会阻塞 BlockingQueue提供的接口 Block...

2018-06-10 19:31:05 326 0

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