自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

boboyuwu的博客

最后悔的就是想对现在的自己说声对不起

  • 博客(24)
  • 收藏
  • 关注

原创 自定义LayoutManager带你撸个LinearLayoutManager

之前就想写这篇文章,奈何没有彻底弄懂自定义LayoutManager机制,导致写到一半时候就感觉无从下手了,就搁浅停笔了。而现在终于可以完成这篇文章了。 ok,开门见山不废话,直接分析实现一个跟系统LinearLayoutManager一样的自定义LayoutManager。RecyclerView由于解耦的比较彻底,所以可定制性也非常的强,我们设置LinearLayoutManager的时候所有

2017-08-07 10:39:42 11171 3

原创 Android事件分发源码分析(补充篇)

  很久没有写博客了,最近复习之前的这篇时间分发机制的时候发现一些细节问题,然后对它进行补充,然后综合起来应该是最为详细的时间分发机制解析了。之前写过一篇关于Android事件分发源码分析比较清晰的分析了android的事件分发机制。  但是实际测试中,发现一个现象问题,我们创建一个TouchViewGroup继承自LinearLayout,然后重写里面的onInterceptTouchEve...

2019-03-09 19:37:33 208

原创 DownloadProgressButton

package com.zhuoyi.common.widgets;import android.content.Context; import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.gra...

2018-07-20 11:07:01 670

原创 HandlerThread源码分析

话说某一天去游族面试,被问到知不知道HanderThread,当时就懵逼了,梗了半天回答不出来,没有了解过… 其实翻了下源码发现挺简单的,这玩意其实就是一个Thread子类并且帮你创建一个Looper并开了Looper循环,我们之前一般用Handler都是习惯在UI线程中去new个Handler然后在子线程中去sendMessage这样就可以子线程执行耗时操作然后在UI线程中跟新UI。 但有时...

2018-03-28 16:37:39 219

原创 网址收藏New

这里转载一些感觉写的比较好的文章提供参考Binder学习指南: http://weishu.me/2016/01/12/binder-index-for-newer/Android性能分析网站: https://nimbledroid.com/Gradle3.0变更: http://drakeet.me/android-studio-and-gradle-3-0-guide/...

2018-03-23 17:13:26 470

原创 gradle入门 (指南介绍)

Gradle是一门基于groovy的DSL(特定领域语言)语言,也就是说它只能在某一特定领域使用,而不通用。 学习Gradle主要需要掌握下面三种语言 1 、Groovy语言 2 、Gradle DSL 3 、Android DSL 我们前面说了Gradle是一门基于groovy的DSL,可能很多童鞋会对这个有迷惑,第一感觉就是Gradle是一门独立的语言呀,如果你这么想就“误入歧...

2018-03-15 20:46:03 5276 1

原创 React Native之React Navigation导航器

最近在学习React Native,关于界面跳转这一块,文档上面写的并不清晰,自己也是研究了很久才搞清楚用法,这里记录下。译注:从0.44版本开始,Navigator被从react native的核心组件库中剥离到了一个名为react-native-deprecated-custom-components的单独模块中。如果你需要继续使用Navigator,则需要先npm i facebooka...

2018-03-07 19:44:13 236

原创 关于RxBus的Stick特性探究

使用RxBus有一段时间了,记得刚使用的使用我在ActivityB中去注册RxBus,这个时候ActivityB还没有启动,然后我在ActivityA中post事件后启动ActivityB,然而ActivityB并没有接收到任何事件,当时还郁闷了很久。ActivityB接收不到事件的主要原因在于我们的ActivityB create之前发送了事件这个时候由于我们ActivityB并没有创建,...

2018-03-07 15:42:17 274

原创 关于RxBus实现方式的思考

我们都知道当有了RxBus这种通信方式后,我们Activity A跳转到Activity B,然后B带值传到A中就很方便了,再也不需要之前的startActivityForResualt. 可是假如我们A带值到B去怎么做呢,RxBus是做不到的,传统的方式我们还在使用Intent 传过去,虽然这样做没有什么毛病,但是无疑当业务复杂后,key会特别的多. 那我就想能不能改进RxBus方式可以达...

2018-03-07 15:41:06 962

原创 View.post获取控件宽高原理探索

首先写这篇文章之前贴上二篇分析较好的博客,非常感谢博主的奉献精神 http://blog.csdn.net/scnuxisan225/article/details/49815269 http://mp.weixin.qq.com/s/laR3_Xvr0Slb4oR8D1eQyQ大家都遇到过在android开发时,在Activity中的onCreate方法中通过控件的getMeasureH...

2018-02-24 15:33:21 608 1

原创 Android关于事件分发的源码实践验证

ViewGroup->View 事件分发源码已经分析完毕了,全文分析源码未免太枯燥了,下面我们敲个案例测试一下也是对前面源码分析进行一下验证public class TestView extends View { public TestView(Context context) { this(context, null); } public TestView(

2017-12-20 17:27:08 209

原创 Android事件分发源码分析

之前也是了解过事件分发机制,对于整个流程有个大概的印象,现在正好有闲余时间,正好对整个流程分析一遍算是巩固下相关知识吧。 关于时间分发机制这个东西如果你在ViewPager中放过ListView等一些上下滑动控件你就会有非常深刻的印象,上下滑动时是ListView的列表在滑动,而左右滑动的时候又是ViewPager在切换,为什么这么神奇呢?那就是因为系统帮我们处理好了这些事件分发,你的滑动手势决定

2017-12-17 12:26:27 315

原创 Git之一次Push的回滚之旅

git相信很多人都接触过,但从我身边人的例子来看,大部分人都在入门使用阶段,比如对中央仓库和本地仓库的大概理解、通常add、commit、push、pull等命令的使用,但是却没有对git形成一个整体深入的理解, 这样如果是小型团队的话,git当成一个SVN模型使用平时开发也不会出现多大问题,但是假如我们团队较大相互之间协作比较频繁时,就很容易出现这种情况。 我们经常容易做出一个失误操作(比如

2017-12-06 10:48:58 3817

原创 一次FragmentTabHost切换Tab崩溃分析之旅

最近在写项目时,由于使用了FragmentTabHost这个控件导致我每次点击第二个Tab按钮的时候就崩溃。 然后开始搜stackoverflow,上面说原因在于MainActivity中使用了FragmentManager,MainActivty中的Fragment又嵌套了 viewpager+fragment这种模式所以嵌套的viewpager中不能再传FragmentManager,要传递

2017-11-22 13:41:45 1504

原创 PinnedHeaderItemDecoration

PinnedHeaderItemDecoration一个提供吸顶效果的ItemDecoration 现在网上有很多类似这种效果的轮子,那么为什么还要重复造这个轮子呢? 因为网上的吸顶效果基本都是基于ItemDecoration绘制的,也就是说只能看没法操作,只是达到了一个视图的效果。 这样可能不满足一些特定的需求,比如吸顶的这种Type类型的View需要点击处理怎么办? 基于这种情况,开发了

2017-08-24 21:30:38 1050 1

原创 RecyclerView回收原理分析

上篇实现自定义一个LinearLayoutManager(http://blog.csdn.net/boboyuwu/article/details/76819534)时 后发现一个神奇的现象我们看下这张gif,可以看到我们一开始屏幕创建并显示了12条视图,当我们开始滑动时,第一个ViewHolder被回收后,并没有被第13个复用,并且同样当第二个ViewHolder被回收后同样没有被第...

2017-08-13 17:35:11 4616 1

原创 利用ActivityLifecycleCallbacks实现前后台进程切换

ActivityLifecycleCallbacks是4.0新增的一个接口,它管理着整个app的所有Activity的生命周期,也就是任何一个Activity只要走了生命周期就会回调这个接口中相应的方法,我们利用它可以做很多事情。 最新有个产品需求就是记录App进程从后台进入前台的情况,然后记录埋点,ok先奉上实现代码。registerActivityLifecycleCallbacks(new

2017-08-07 11:16:21 854

原创 自定义一个voiceview音量调节控件

记得以前有一个需求做一个播放界面,左边的是需要这种效果可以随着拖动调节音量,然后点击速图标还可以收缩伸展开这个音量栏,尼玛当初的我做的那个累啊,整整弄了一个星期,大概写了3,4个组合控件有3000多行代码以及用了各种切图,勉强弄好后还有点Bug,还依稀记得我们技术总监最后看我的眼神~~~,当然现在翻过头来看这种需求也不是那么特别难了,前段时间正好没事把它撸了出来。 我们看下怎么实现的。public

2017-08-07 11:07:10 1326

原创 NestedScrolling机制学习(一)

自从5.0推出NestedScrolling这个机制一直没有去了解,之前项目中要求做这种效果后觉得还是有必要学习一下,掌握这个机制是可以做出现在很多App流行的联动滚动效果的。 比如饿了么这种效果: 原谅我随便盗个效果图~~这个机制也是挺复杂的,需要对于view知识有一定的了解,自己刚开始学习这个,也算对于自己学习的一个总结.贴下布局<?xml version="1.0" encoding="ut

2017-08-07 11:05:28 375

原创 你所看到较轻松的Dagger2(使用扩展)

之前写了几篇关于dagger2的基础介绍,使用方式以及源码分析,最后准备写一篇关于dagger2的使用扩展. dagger2提供了很多修饰符 @scope(作用域) 在这里记录我的源码分析结果验证结果,按照上一篇案例我在@Singletonpublic class DemoPresenterPresenter类上加上Singleton修饰,然后我们跑一下代码可以看到Inject注入的二个对象

2017-08-07 10:50:58 350

原创 你所看到较轻松的Dagger2(源码分析)

上篇我们介绍完了Dagger2的详细使用方式,这篇我们分析一下Dagger2为什么这么神奇,它是怎么进行依赖注入的.我们一起解开它神秘的面纱. 当我们在宿主中调用依赖注入后build一下我们发现生成了一些class 我们先从头开始分析也就是宿主跟依赖之间的桥梁Component//// Source code recreated from a .class file by IntelliJ

2017-08-07 10:43:03 562

原创 你所看到较轻松的Dagger2(使用方式)

上篇简单介绍了一下依赖注入以及为什么我们要用依赖注入.这篇主要介绍一下Dagger2的使用方法 并分析一下Dagger2的源码看看它是怎么实现的。Dagger2用法还是蛮简单的,首先我们在Project根目录的gradle中添加apt依赖//添加apt依赖classpath'com.neenbedankt.gradle.plugins:android-apt:1.8'在我们的Module app

2017-08-07 10:42:23 355

原创 你所看到较轻松的Dagger2(基础介绍)

我之前在网上找了一些dagger2文章,找到非常多的文章,但是大部分都是非常的难懂,对于我这种连依赖注入是什么都不懂的小白而言,然后学习计划就被搁置,当我又准备学习Dagger2时也是花了较大的成本才有了一个较清晰的了解,然而当我了解清除后我觉得花费这么大的时间和难度成本去学习它并不是很成比例因为它本身并不是很复杂的一个东西,那么是什么原因呢,看了很多文章我认为大部分人写文章都很难以一个小白的角度去

2017-08-07 10:41:39 276

原创 关于实现ListView原生上拉加载的一些细节问题分析

public class MyAdapter extends BaseAdapter{ private Context mContext; private ArrayList mArrayListl; private int count; private final static int TYPE1=0; private final static int

2016-08-07 20:52:29 470 5

空空如也

空空如也

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

TA关注的人

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