- 博客(11)
- 收藏
- 关注
原创 TreeMap源码分析
TreeSet、TreeMap概述与HashSet及HashMap类似,TreeSet是基于TreeMap实现的,所以分析TreeMap即可。 TreeMap是基于红黑树实现的,元素是根据key的自然顺序排列的,也可以在构造器中传入Comarator来指定排序器。 containsKey、get、put、remove操作都是log(n)时间复杂度的,要注意排序的规则要与key的equals一致,
2017-11-27 16:15:40 203
原创 HashMap源码分析
HashSet、HashMap概述分别实现了Set和Map接口,底层用哈希表来存储,迭代时是无序的。 add、remove、contains、size方法是常数时间的,遍历是O(N+M)的(N表示桶数,M表示元素个数)。 都是非线程安全的,类似的也可以用Collections.synchronizedSet转化为线程安全的容器。 HashSet实质上也是基于HashMap来实现的,只是map中
2017-11-27 16:14:48 195
原创 LinkedList源码分析
LinkedList概述LinkedList是一个双向链表,每个节点持有next和prev的引用,该类实现了List和Deque接口。与ArrayList类似,这个容器也不是线程安全的,可以通过Collections.synchronizedList来转换。通过iterator获得的迭代器也是fail-fast的。源码分析构造器 // 头结点 transient Node<E> f
2017-11-27 16:13:36 212
原创 Android开源控件viewbadger的原理及使用
viewbadger是github上的一个开源控件,能够以一个小徽章的样式附着在某个view上,通常用于显示未读消息数,典型的如微信、QQ、微博等,地址为:https://github.com/jgilfelt/android-viewbadger。下图为项目主页给出的样式图,可见还是能满足各种需求的。viewbadger继承自textview,使用起来很简单,项目主页给出的Sam
2016-08-23 23:35:13 3196
原创 仿微信聊天界面——键盘与面板的切换
如果认真留意的话会发现,正常情况下,安卓版本的微信打开表情面板的高度总是能保持和键盘的高度一致(IOS的好像不一致),这样用户在进行键盘和面板的切换时能得到较好的用户体验。此外,微信也做了一定的处理,保证键盘和面板的切换比较流畅,不会出现跳动的现象。从这些细节可以体现出微信的用户体验还是做得很好的。首先上两张图感受一下: 第一张是把面板的高度写死,并且在面板和键盘的切
2016-08-07 12:28:06 8712 4
原创 高仿微信摇一摇功能
网上也有一些仿微信摇一摇的,但大部分都不完整。今天就自己动手来仿一下。有图的当然先上一下图: 触发摇一摇后手机还有音效和震动效果,gif展示不出来。另外在设置界面还能更改背景图,设置音效的开关,点击更换后打开一个图片选择器,这里不会讲这个选择器,有兴趣的可以参照鸿神的博客,我的大部分也是参照那上面来
2016-07-27 16:05:34 1764 1
原创 修改源码自定义SwipeRefreshLayout样式——高仿微信朋友圈下拉刷新
通过修改源码的方法,自定义SwipeRefreshLayout样式,高仿了微信朋友圈下拉刷新。上一篇文章里把SwipeRefreshLayout的原理简单过了一下,大致了解了其工作原理,不熟悉的可以去看一下:http://blog.csdn.net/u011443509/article/details/52017355上一篇里最后提到,SwipeRefreshLayout的可定制性是比较差的,看源码会发现跟样式相关的几个类都是private的而且方法是写死的,只暴露出了几个颜色设置的方法。这样使得Swi
2016-07-25 18:01:02 18066 14
原创 Android下拉刷新控件SwipeRefreshLayout源码浅析
简要分析SwipeRefreshLayout的源码,了解其原理和绘制流程,提供了自定义样式的思路。
2016-07-25 00:05:01 4760
原创 JAVA学习笔记——JAVA中的IO流
本文内容主要根据慕课网的《文件传输基础——JAVA IO流》课程整理而成。(链接:http://www.imooc.com/learn/123)一. 文件的编码问题: 新建一个文本文件,输入“联通”后保存,再打开会出现乱码。而输入“联想”再打开时则不会出现乱码。原因: 文本文件是字节序列,如果在中文机上直接创建文本文件,该文本文件只认识ANS
2016-02-29 20:48:10 638
原创 C++学习笔记(杂)
花了一个礼拜多把PAT Basic Level的题全刷完了,之前只有C的基础,刚开始接触C++,刷题过程中遇到了一些小问题,记录一下。1. 用cin来输入时,是自动以空格或回车来分割的,要读入空格,需要使用getline(cin, 变量名)。2. 输出格式控制:要使输出的位数固定为n,左端补领时,可以用cout要使输出的小数位数固定为n,可以用cout3.sort的用法为sor
2015-10-15 14:40:27 613
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人