5 Hensen_

尚未进行身份认证

公众号「码个蛋」特约作者。文章多次被各大公众号收录。

等级
TA的排名 2k+

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

前言当我们阅读了ImageView源码后,发现Matrix的使用真的是很强大,几乎可以实现我们很多该有的功能,当我第一次看到这个效果的时候,第一想法就是ImageView的Matrix。通过比对了网上很多方案后,网上的方案还是比较复杂,如果我们巧用Matrix去做效果时,会发现其实代码也就100行左右就完美实现了效果,而且性能方面很不错效果展示实现思路我们的思想思路就是将两面相同的长图...

2020-01-04 23:05:29

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

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

2019-12-27 23:33:26

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

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

2019-12-26 00:04:05

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

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

2019-12-24 16:13:13

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

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

2019-11-04 23:24:02

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

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

2019-10-29 15:59:38

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

前言概念hprof文件:指的是当前Android堆内存的快照情况,当前设备的堆内存会全部保存在hporf中MAT:MemoryAnalyzer,内存的分析工具,通过工具可以分析堆内存的使用情况和检测内存泄漏等问题MAT1、生成hprof文件导出2、打开MAT 导入我们的2个hprof文件,其中1个是旋转多次屏幕之后的文件(属于内存泄漏部分),另1个是没有内存泄漏的文件,通过以下操作打...

2019-10-17 22:45:08

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

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

2019-10-17 21:29:17

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

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

2019-09-30 18:13:36

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

配置环境1、安装编辑器通过官网安装VSCode2、安装Flutter插件在VSCode中EXTENSIONS栏中安装Flutter插件3、检查Flutter插件通过Command Palette中输入命令检查Flutter的运行环境run flutter doctor运行指令时会遇到下面这个错误[flutter] flutter doctorxcrun: error: inv...

2019-07-31 17:47:57

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

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

2019-07-31 17:23:59

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

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

2019-07-28 20:29:02

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

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

2019-07-23 23:17:18

Java基础——CopyOnWriteArrayList源码分析

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

2019-06-25 00:17:09

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

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

2019-06-11 00:16:18

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

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

2019-06-04 20:52:14

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

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

2019-04-29 23:47:12

语法基础——ReactNative语法基础

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

2019-03-31 22:14:37

语法基础——Dart语法基础

主函数void main(){ print('Hello Word');}常量和变量如果未初始化的变量,其默认值为null//常量const a = 10;//变量var b = 10;Dart没有public、protected、和private关键字,标识符(_)表示私有的意思//默认为publicint a = 10; //下划线开头为privatein...

2019-02-14 11:41:42

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

前言Android在DialogFragment推出后,就已经不推荐继续使用Dialog,可替换为DialogFragment,其实DialogFragment只不过是对增加一层看不到的Fragment,用于监听生命周期,在Activity退出的时候会自动回收Dialog弹窗基础概念Activity:活动。控制生命周期和处理事件,统筹视图的添加与显示,控制Window和View的交互Wi...

2019-01-22 16:57:55

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 技术圈认证(专家版)
    技术圈认证(专家版)
    博客专家完成年度认证,即可获得
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。