- 博客(34)
- 资源 (3)
- 问答 (4)
- 收藏
- 关注
原创 RxJava的消息发送和线程切换
RxJava相信大家都非常了解吧,今天分享一下RxJava的消息发送和线程源码的分析。最后并分享一个相关demo,让大家更加熟悉我们天天都在用的框架。##消息订阅发送首先让我们看看消息订阅发送最基本的代码组成: Observable observable = Observable.create(new ObservableOnSubscribe<String>() { ...
2018-11-02 11:51:24
439
翻译 kotlin基础语法
最近在学kotlin,这是本人看菜鸟教程后所做的笔记,很多会内容和菜鸟教程重复,仅供参考基础语法包声明//类在包的位置package com.demo.mainimport java.util.*函数定义函数定义使用关键字 fun,参数格式为:参数 : 类型fun printSum(a: Int,b: Int){ println(a+b)}无返回值的函数publ...
2018-10-18 17:10:52
202
原创 NestedScrolling机制之CoordinatorLayout.Behavior实战
在上一讲中我们讲了NestedScrolling机制,其实android很多有些常用的控件都是支持NestedScrolling机制的,如RecyclerView,NestedScrollView等,public class RecyclerView extends ViewGroup implements ScrollingView, NestedScrollingChild2{}publ...
2018-09-28 20:41:44
315
原创 Android NestedScrolling机制
NestedScrolling机制现在在App的作用越来越重要,许多很漂亮的交互都是基于NestedScrolling机制进行完成的。NestedScrolling机制主要是能够让父View和子View在滚动时互相协调配合。其中有两个重要的类,分别是:接口类NestedScrollingParent(最新:NestedScrollingParent2)NestedScrollingChil...
2018-09-25 20:56:11
621
原创 制作支持View,图片轮播的Banner
之前有一个项目中有用到轮播,不过不是简单的轮播图片就完了,而是要轮播很多个View,一开始我的想法和大家一样在github在一个算了,哈哈,不过在试用了很多个项目之后都觉得不能完全满足我的需求,大部分还是针对于图片轮播的场景,所以是时候自己搞一个既支持图片,也支持各种自己定义的View,也支持fragment,同时也可以选择不同实现方式的指示器或者干脆去掉,适应个各种需求场景。 这就是他的效...
2018-09-07 11:31:09
386
原创 自定义View之雷达图
好久没有写过自定义的文章,这次重拾这方面的内容,从雷达图开始。首先看一下效果图: 这就是大概的效果图了,下面我们就一一讲解吧。首先为了看的懂,我会把所以变量贴出来,以防止看代码段的时候大家不知其意思:private Paint mBroadPaint = new Paint();//边private Paint mMarkEasePaint = new Paint();//数值...
2018-08-09 14:05:08
361
原创 刨解OkHttp之缓存机制
时间一晃而过,今天想给大家带来OkHttp的zuihou最后一篇文章,主要讲一下OkHttp的缓存机制。OkHttp的责任链中有一个拦截器就是专门应对OkHttp的缓存的,那就是CacheInterceptor拦截器。CacheInterceptor其对应的方法如下,我们就从这个方法讲起:public Response intercept(Chain chain) throws...
2018-07-16 09:29:24
554
原创 刨解OkHttp之访问连接
因为OkHttp能讲的东西太多了,上一篇文章只是讲到了他的设计架构即责任链模式和异步多线程网络访问,这对于OkHttp只是冰山一角,对于一个网络请求框架,最重要的就是网络访问了,为此我们来说一下Okttp网络访问的一些细节。这个访问分为两个部分,一个部分是与服务器形成连接,另一个部分是与服务器进行交互。与服务器连接的是ConnectInterceptor拦截器,而与服务器交互的是CallSer...
2018-05-23 19:47:58
287
原创 解刨OkHttp框架
继AsyncTask,又把手术刀指向OkHttp,有时候解析源码会上瘾。因为源码里包含的东西仿佛就是组成计算机世界的砖头,水分,只要有这些东西,就可以保罗万物,无招胜有招。又说多了,开始吧首先okhttp的依赖是:compile 'com.squareup.okhttp3:okhttp:3.8.1'我就是根据这里的源码进行解析的。再来也很简单,就是最简单的OkHttp的同步和异...
2018-05-23 19:47:25
221
原创 AsyncTask源码深入解析
最近想写一篇关于源码解析的文章,发现AsyncTask代码量不多,可里面的东西却是很值得学习的,所以故那这来“开刀”首先作为Android开发者我们对于AsyncTask想必比大家都知道吗,大白话讲就是在后台执行耗时任务再把最终的结果返回主线程更新UI。如下代码就它的模板代码:class MyAsyncTack extends AsyncTask<Void(传入参数),Strin...
2018-05-07 15:42:54
290
原创 React Native与Android 原生通信
我们用React Native 做混合开发的时候免不了要原生和React Native 进行通信交互,这篇文章就是分享原生模块与JS传递数据的几种方式。总的步骤可以分为如下几点: 1. 在原生端定义Module类,继承ReactContextBaseJavaModule,在Module类里,定义交互的方法. 2. 定义Package类,继承ReactPackage,将Module实例添加到...
2018-04-27 13:50:58
381
原创 疯狂java笔记之常用的内部排序
排序的基本概念在计算机程序开发过程中,经常需要一组数据元素(或记录)按某个关键字进行排序,排序完成的序列可用于快速查找相关记录。排序概述排序是程序开发中一种非常常见的操作,对一组任意的数据元素(或记录)经过排序操作后,就可以把它们变成一组关键字排序的有序序列。假设含有n个记录的序列为{R1,R2,…,Rn},其相应的关键字序列为{K1,k2,…,kn}。将这些记录重新排序为{Ri1,Ri2,…,Ri
2017-09-06 01:02:07
278
原创 疯狂java笔记之树和二叉树
树的概述树是一种非常常用的数据结构,树与前面介绍的线性表,栈,队列等线性结构不同,树是一种非线性结构1.树的定义和基本术语计算机世界里的树,是从自然界中实际的树抽象而来的,它指的是N个有父子关系的节点的有限集合。对于这个有限的节点集合而言,它满足如下条件: - 当N=0时,改节点集合为空,这课树也被称为空树 - 在任意的非空树中,有且仅有一个根(root)节点 - 当N>1时,除根节点以外的其
2017-08-28 16:41:18
364
原创 疯狂java笔记之栈和队列
栈栈的英文单词是Stack,它代表一种特殊的线性表,这种线性表只能在固定一端(通常认为是线性表的尾端)进行插入,删除操作。栈的基本定义栈是一种数据结构,它代表只能在某一端进行插入,删除操作的特殊线性表,通常就是在线性表的尾端进行插入,删除操作。对于栈而言,允许进行插入,删除操作的一端被称为栈顶(top),另一端咋被称为栈底(bottom)。对于一个栈不包含任何元素,那么这个栈就被称为空栈。 从栈顶
2017-08-24 11:31:24
359
原创 疯狂java笔记之线性表
从数据的逻辑结构来分,数据元素之间存在的关联关系被称为数据的逻辑结构。归纳起来,应用程序中的数据大致哟如下四种基本的逻辑结构。集合:数据元素之间只有“同属于一个集合”的关系线性结构:数据元素之间存在一个对一个的关系树形结构:数据元素之间存在一个对多个的关系图状结构或网状结构:数据元素之间存在多个对多个关系 对于数据不同的逻辑结构,在底层通常有两种物理存储结构。顺序存储结构链式存储结构
2017-08-22 17:01:21
333
原创 疯狂Java笔记之面向对象的陷阱
instanceof运算符的陷阱instanceof是一个非常简单的运算符。instanceof运算符的前一个操作数通常是一个引用类型的变量,后一个操作数通常是一个类(也可以是接口,可以把接口理解成一个特殊的类),他用于判断前面的对象是否是后面的类或其子类,实现类的实例。如果是,则返回true,否则,返回false.String obj="Java";obj instanceof Math上面程序
2017-08-21 20:50:00
364
原创 疯狂Java笔记之表达式中的陷阱
关于字符串的陷阱JVM对字符串的处理首先看如下代码:String java=new String("HelloJack");上面创建了两个字符串对象,其中一个是“HelloJack”这个直接量对应的字符串对象,另一个是由new String()构造器返回的字符串对象。对于Java程序中的字符串直接量,JVM会使用一个字符串池来保存它们:当第一次使用某个字符串直接量是,JVM会将它放入字符串池进行缓存
2017-08-21 01:05:08
248
原创 疯狂Java笔记之Java的内存与回收
Java引用的种类1.对象在内存中的状态对于JVM的垃圾回收机制来说,是否回收一个对象的标准在于:是否还有引用变量引用改对象?只要有引用变量引用对象,垃圾回收机制就不会回收它。也就是说,当java对象被创建出来之后,垃圾回收机制会实时的监控每个对象的运行状态,包括对象的申请,引用,被引用,赋值等。当垃圾回收机制实时的监控到某个对象不再被引用变量所引用时,垃圾回收机制就会回收它所占用的空间。基本上,可
2017-08-18 15:53:00
613
原创 疯狂Java笔记之常见java集合的实现细节
Set和Map1.Set和Map的关系首先Set是一种集合元素无序,不可重复的集合。而Map则代表一种有多个key-value对组成的集合,Map集合类似于传统的关联数据。看起来他们没哟什么关联,实际上Set和Map是有莫大的关联的。可以说Map是Set集合的扩展。当我们只看Map的Key时,会发现所有的key不能重复,key之间没有顺序。也就是说将Map所有的key集合起来就组成了一个set集合。
2017-08-17 10:40:28
217
原创 疯狂Java笔记之对象及其内存管理
1.实例变量和类变量Java程序的变量大体可分为成员变量和局部变量。其中局部变量可分为如下二类。形参:在方法签名中定义的局部变量,由方法调用者负责为其赋值,随方法的结束而消亡。方法内的局部变量:在方法内定义的局部变量,必须在方法内对其进行显式初始化口这种类型的局部变量从初始化完成后开始生效,随方法的结束而消亡。代码块内的局部变量:在代码块内定义的局部变量,必须在代码块内对其进行显式初始化。这种
2017-08-15 15:27:45
223
原创 Android Flexboxlayout使用详解
对于学习React Native或者前端的同学肯定对Flexbox 的有所了解,因为这是前端领域CSS的一种布局方案,现在google也开源了类似前端Flexbox的项目叫Flexboxlayout,这样android也可以用Flexboxlayout实现类似前端Flexbox的布局。首先Flexboxlayout有5大布局属性分别是flexDirection,flexWrap,justifyCon
2017-07-27 00:35:36
1370
原创 高仿网易严选底部弹出菜单
在网易严选的看东西的时候在商品详情页里看到他的底部弹出菜单,本能反应是想用DottomSheetDialog或者PopupWindow来实现,可是发现实现不了他那种效果,于是就自己模仿一个像严选这样的底部弹出菜单。不管是DottomSheetDialog或者PopupWindow他们的阴影背景都是全部覆盖的,这就造成除了菜单内容的View之外其他都是阴影的,而严选不是这样的。唠叨到此,首先展示效果图
2017-06-24 22:39:32
1464
原创 淘宝开源库VLayout实践
最近淘宝出了vlayout,刚开始看淘宝的文档的时候还是有点懵,后来自己也总结规划了一下,写了一个比较好看的demo,顺便在这里总结一下。VLayout是什么,说白了就是用一个原生RecycelerView加上VLayout来实现在一个页面上比较复杂的布局并且有一个比较好的复用,在RecyclerView里同时有GridLayout布局,瀑布流布局,浮动布局等VLayout提供的九大布局,这也是淘宝
2017-05-18 19:34:43
1516
原创 高仿京东金融的数值滚动尺
以前博客讲的大部分都是静态的自定义View的编写,其实无非就是“画画”画出一个好看的效果,而这篇博客写的是写一个动态的自定义控价,这里不仅需要”画”,还要各种事件和计算,废话不说现在就讲讲自定义数值滚动尺,这个用的还是满广的,例如京东金融的通过滚动尺选择金额等,而这次就是高仿京东金融的数值滚动尺。首先看看下效果图,如下 - 首先先给你们各个变量的含义,以免在后面的讲解中不知变量的意思,代码如下
2017-05-15 16:03:57
414
原创 教你实现最简单的QQ消息item侧滑菜单
这次跟大家介绍怎么简单的实现类似QQ消息Item的左右滑动菜单的实现。首先见效果图先: 这就实现了ListView或RecyclerView加载的item的View实现侧滑菜单。至于这么实现,很简单就是通过继承HorizontalScrollView,再判断滑动的距离以滑到对应的View或菜单。具体如下: 首先,在item的界面布局方面如下:<?xml version="1.0" encodin
2017-04-16 23:21:05
1243
原创 android蓝牙4.0的知识要点
这次主要讲解蓝牙4.0的基本要点,作为自己的备忘录记录下来吧。首先普及一下蓝牙4.0又称低功耗蓝牙,基于Gatt协议来实现。而蓝牙4.0一下的是传统蓝牙,基于socket方式来实现。所以4.0以上的蓝牙具有传输速度更快,覆盖范围更广,安全性更高,延迟更短,耗电极低等等优点。一个BLE终端可以包含多个Service, 一个Service可以包含多个Characteristic,一个Characteri
2017-03-13 23:07:41
368
原创 基于豆瓣和妹子的api用React Native写的demo
最近一直在学React Naitve,可以说React Native的确有他自身强大的地方,不管是运行效率还是热更新都和一般的h5有的一比,当然以为面世的时间还不算太久,版本更新又十分的快,所以坑也多,对于一般的移动开发者来说学习成本也蛮大的, 个人觉得用React Naitve做混合开发,把一些需要经常变化的模块用react native开发还是一个不错的选择。demo就是已React Nait
2017-01-24 11:00:34
842
原创 一个漂亮的干货集中营客户端的生成,集合了干货api的大部分功能
好像好久没有更新了,这次给大家带来的是自己完全用一个全新的方式练手开发的客户端,而后台接口用的是干货集中营的API,所以在这里要谢谢daimajia,因为他的贡献所以我们才可以有好的api进行练手。这是一个漂亮的Gank客户端,里面的功能包含了干货集中营的api所提供的大部分功能。功能如下:可以查看每一天提供的Android,ios,休息视频等相关的技术干货,还有一张高清的妹子图在等着你哦除此之
2016-12-23 18:03:20
2710
原创 高仿QQ运动的周报界面
这次高仿的是QQ运动的周报界面的网图。这个控件刚开始的时候以为代码量不大,没想到一路下来界面代码在加上动画代码还是蛮多的。好了老规矩先上图: 效果还是和qq的才不多吧。 1. 首先我把各个变量都贴出来以便在后续中你们可以更好理解代码的意思: //屏幕的宽度 private int mScreemWidth; //屏幕的高度 private int mScreemHi
2016-10-22 16:18:07
2132
1
原创 模仿企鹅FM播放主页面滑动动态改变各视图的大小
国庆的一个任务就是把自己之前写的代码搬到博客。这次给各位带来的是通过滑动来动态改变各个View的大小进而达到企鹅FM播放页面的滑动效果(仅仅是滑动效果),老规矩看图先: 首先看看主界面的xml布局:<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/ap
2016-10-05 00:27:53
928
1
原创 自定义天气显示温度变化的LinearChart控件
这次发表的是前几个月搞定的一个自定义控件,那时自己在写一个小的查看天气的软件,在这过程中就涉及了显示天气变化的折线图,一开始想用一些画图框架来解决问题,不过考虑到就只用到LineChart折线图这一个控件就要导一个库有点太浪费了,所以就自己自定义简易版LineChart算了。好了不说闲话老规矩,先发张效果图先:这就是这个自定义控件的最终效果,当然颜色你可以自己设置。 首先初始化自定义控件的各个变量
2016-10-04 16:30:19
605
原创 模仿QQ运动item的界面
首先按照老规矩,无图无真相嘛,先看看先: 是不是很像呢,那具体是实现是怎样的呢,即使概括的来说就是 1.计算各个变量的值(记得是会随整个View的大小变化而变化)。 2其次利用好canvas.translate()这个方法,计算好大小移动canvas的原点。 3最后就是调用api提供的各种方法画图就是了。 这么说是不是太过于简略了呢,好,现在就来看看那具体的吧。首先看看xml有什么参数吧
2016-09-25 18:32:30
371
原创 高仿支付宝9.9.2版本生活模块界面来讲解CoordinatorLayout,AppBarLayout,CollapsingToolbarLayout
首先先看看仿制的效果先,如下图: 是不是很像支付宝的效果呢,我们今天就要通过讲解android5.0新出的控件CoordinatorLayout,AppBarLayout,CollapsingToolbarLayout来实现这个效果。在讲解之前先看看界面布局文件,在一个一个讲讲怎么实现吧:<android.support.design.widget.CoordinatorLayout
2016-09-16 22:51:27
2521
6
原创 android自定义钟表
android自定义钟表首先看看效果图先然后看看自定义的属性 <resources> <!--钟表整体颜色--> <attr name="color" format="color"/> <!--数字大小--> <attr name="numSize" format="dimension"/> <!--中心外圆半径--> <attr nam
2016-09-11 19:03:00
405
TA创建的收藏夹 TA关注的收藏夹
TA关注的人