自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 android NumberPicker 全面解析

NumberPick全面解析 NumberPick全面解析 构造方法解析 第一 :setWillNotDraw(!mHasSelectorWheel); 第二:看mHasSelectorWheel赋值的地方: 然后再整体看一下这个构造方法的全部逻辑: updateInputTextVie...

2018-08-11 16:41:54 4314 0

原创 android:在有EditText的Activity上,控制自动显示或者隐藏软键盘

但凡是界面上有EditText,就必然会使用到软键盘。而软键盘相关的,一向都很恶心! 假如有这样一个页面,中间是一个EditText,底部有一个按钮,如何让页面在EditText可用的时候,自动弹出软键盘;在EditText不可用的时候,不弹出软键盘? 页面可以参考android手机的...

2017-09-18 15:33:24 690 0

原创 java:List自定义排序

通过实现Comparable<T>接口,重写POJO的compareTo(T other)方法实现排序。 比如:某个List的排序需要根据其中POJO的某个字符串类型字段是否匹配特定字符串,进行降序排列: 代码如下:/** * Created by cat on 2017/9/4...

2017-09-04 12:29:55 610 0

原创 java:string2hexString 中文字符转码问题解决

java 中提供了一些字符串转码的工具类,比如:Base64,UrlEncoder & UrlDecoder。但是这些类,真的非常有局限性,转码之后的字符串,往往不能被当成文件路径识别。 于是将 字符串转成16进制的字符串就显得非常有必要了。因为16进制的字符串就是数字以及英文字母a-f...

2017-08-25 19:21:21 6112 0

原创 java 字符串排序

字符串排序 需求如下: 给联系人排序, 按照姓名来排序. 要求小写字母排前面,大写字母排后面. 看到这个,我脑海里预想的排序结果是这样的 [aaa,aab,doc,zz,Apple] 也就是说 z 是大于 A 的,在这种需求下. 但是,我看到为手机联系人的排序不是这样的,是a > A &g...

2020-05-18 21:55:26 26 0

原创 android: LiveData的一点注意事项
原力计划

LiveData里面设置的数据貌似不能被清空。不能将其看做一个容器,没有对应的remove(element)的方法。 背景:Activity 里面有一个以上的 Fragment, 其中一个,叫做PassiveFragment。这个Fragment 一般不会显示出来,只有两种情况下回显示出来: 1...

2020-04-04 20:52:06 77 0

原创 c++11 std 之美

第一次感觉到了程序之美. 就是下面这个简单的代码. #include <map> #include <set> #include <string> #include <iostream> #include <vector> #includ...

2020-01-20 11:58:20 141 4

原创 c++ 数组,函数指针

先看一个极其复杂的函数声明: std::string (*(*returnFunction(std::string (*(*pf)(std::initializer_list<std::string> list))[5]))(std::initializer_list<std::...

2019-12-28 14:41:52 42 0

原创 Segmentation fault (core dumped)

c++ 中经常出现 这个错误[ Segmentation fault (core dumped) ],很类似java中经常出现的空指针异常。其实,c++ 的这个错误,很多时候就是空指针异常。 下面看一段代码: int main() { int a = 13; int b ...

2019-12-20 11:44:43 41 0

原创 java 两个线程接力跑

假设有这样一个场景,有一个任务有100个步骤。希望用两个线程进行接力完成。也就是第一个步骤是线程1去做,做完了,通知线程2去做第二个任务;线程2做完第二个任务了,再通知线程1去做第三个任务。以此类推,直到完成全部的任务。 (没想到有什么实际场景需要这样做~) 实现思路是这样的: 首先让一个线程先...

2019-12-11 22:25:35 59 0

原创 android viewpager2+tablayout+ConstraintLayout的坑

viewpager2 出来有一段时间了,不过好像还没有正式版。决定尝试一下。 使用要先导入依赖: implementation 'androidx.viewpager2:viewpager2:1.0.0-rc01' implementation 'com.google...

2019-11-10 20:26:09 721 2

原创 android:自定义横向滑动的 ViewGroup

效果图: 大概就是这样子的,然后可以左右滑动。 原来是想做成ViewPager的那种效果的,但是感觉那种更不实用。 这个效果很类似系统控件 HorizontalScrollView 了。 关键代码还是测量,布局,触摸事件拦截,触摸滑动。 完整代码: public class Horizontal...

2019-11-05 00:45:24 35 0

原创 android recyclerview grid 分割线

recyclerview 系统提供了默认的分割线。调用很方便。 不过,这里的系统默认分割线其实只针对类似 listview/或者是横向listview这种场景去使用的。 对于 gridview 模式下,或者是瀑布流模式下,使用默认的分割线就不能达到预期效果了。 针对这个问题,我参考了系统默认分割线...

2019-10-20 20:21:36 209 0

原创 kotlin :小结

对kotlin 的学习决定告一段落。 目前,学习了 kt 的基本语法,不包括 反射注解。对 dsl 也是有点陌生。其他的语法都大致了解了。 不得不说, kt 相比 Java 其实做了很大的改动。 如果你是一个新手,也许能大致看懂 kt 代码,但是是完全写不出 kt 的代码的,这是我现在的感觉。 当...

2019-10-09 20:35:35 30 0

原创 kotlin的 dsl 与 java 原生实现的对比与思考

看 kotlin 实现了一段 html 构建器的 dsl 代码,非常简短: fun main() { println("table = ${createTable()}") } fun createTable() = table { tr { ...

2019-10-06 21:41:09 43 0

原创 kotlin: 再看 lambda

不得不说,kotlin 里面提供了非常多的语法糖,尤其是 lambda这块。 对于lambda,有普通的,还有带接收者的。 看下面这段代码: fun main() { val str = buildString { append("Hello ") ...

2019-10-06 10:57:39 37 0

原创 kotlin : lambda 作为参数及返回值

作为参数: fun main() { println("duck".filter { it in 'a'..'e' }) println("hello world!".filter()) } fun...

2019-09-26 21:52:31 58 0

原创 kotlin : 高阶函数概览

按照定义,高阶函数就是以另一个函数作为参数或者返回值的函数。在Kotiin中, 函数可以用lambda或者函数引用来表示。 因此,任何以 lambda 或者函数引用作为参数的函数,或者返回值为 lambda 或函数 引用的函数,或者两者都满足的函数都是高阶函数 。 来看一段代码: fun m...

2019-09-25 23:52:38 45 0

原创 kotlin: with 与 apply

zz kotlin 中有两个通用的扩展函数 with和apply。 fun az(): String = with(StringBuffer()) { // 通过 with ,将第一个参数作为lambda 的 this 对象 for (c in 'A'..�...

2019-09-22 11:25:28 81 0

原创 kotlin : flatMap 与 rxJava flatMap 对比

先看一段代码: val strings = listOf("abc", "de") strings.map { s -> s.toList() } strings.flatMap { s -> s.toSet() }.r...

2019-09-22 01:16:41 364 0

原创 kotlin lambda 表达式概览

先看一段代码: fun main(args: Array<String>) { val sum = { a: Int, b: Int -> a + b } println(sum) println(sum(1, 2)) println({ ...

2019-09-21 15:14:12 28 0

原创 kotlin 类委托

kotlin 提供了一个很方便的语法去实现“装饰者”模式。 装饰者模式叫做“是你还有你,干活的还是你”。 Java API 中对装饰者的典型实现有 buffer流。比如:FilterInputStream,BufferedInputStream. 简单来说,实现装饰者的基本步骤是: 继承目标...

2019-09-21 12:57:12 93 0

原创 kotlin:精湛的递归

首先来看一段代码: // kotlin class Sum(val left: Expr, val right: Expr) : Expr fun eval(e: Expr): Int = when (e) { is Num -> { ...

2019-09-16 23:46:00 121 0

原创 Android: Fragment 再次踩坑之回退与前进

比如一个 Activity 里面包含3个fragment,通过底部导航栏进行切换。类似微信的界面。 然后,每个 fragment 里面点击一些按钮又会进入到子 fragment 里面。 默认的预期肯定是,从 子 fragment返回之后,显示上一个。 主界面本身的3个fragment的返回就退出 ...

2019-09-09 00:27:01 221 0

原创 android: mqtt 浅析

由于项目中需要使用到 mqtt 协议进行数据通信,所以,我这边就去了解了一些,并做了一个简单的实现。 关于前置内容: Mqtt实战项目 点评:这个博客很清晰,代码也是可以直接运行的 hivemq 点评:做了一些介绍,但是作用不太大 eclipse paho 实现的 mqtt 开源库 api 点...

2019-09-08 13:50:43 285 0

原创 Android:浅谈 mvp-clean 架构

官方示例:todo-mvp-clean 官方对 clean 的解读:the-clean-architecture mvp-clean 可以认为是 对 mvp 的再次分层。不过就我个人而言,我认为 clean 是一种清晰的思想;而 mvp 不是。 对比 mvp-clean 与 mvp 的示例代码...

2019-09-03 23:14:15 243 0

原创 android:浅谈 mvp 架构

虽然谷歌继 mvp 之后,又推出了 mvvm 架构。不过,从官方示例仓库来看,谷歌是比较喜欢 mvp 架构的。因为看其介绍,后面的其他示例几乎都是基于 mvp 架构的代码。 官方示例代码仓库:todo-mvp 话说这个仓库出来很早了,从提交日志可以看到 在 2015-10 就开始了,然后也是在...

2019-09-01 20:16:33 121 0

原创 android view canvas 绘制导致的闪屏问题发现及解决

最近在做一个自定义进度条,为了能实现任意多边形的进度条,以及是否包含中心点位置。等各种骚操作。我使用了不少的 Path.Op的操作。只是显示的时候并没有什么毛病。但是调用进度更新的时候,界面会闪屏。 看一下效果先: 调用更新的代码如下: final RoundProgressBar bar = ...

2019-08-06 17:48:36 851 0

原创 我看 kotlin

kotlin 真的出来好久了,谷歌也是一直在不要命的宣传。不过覆盖率应该还是不到100%。 我对于kotlin是一直有关注。几乎是谷歌谷歌开始大力宣传的时候,我就开始关注了。那时候已经有博客开始科普这门语言了。 不过,我是尝试了几次,最终都放弃了。原因有二:第一,当时工作上用不上;第二:实在不喜欢...

2019-07-18 23:35:03 66 0

原创 知识就是力量趣闻

这是一个非常有意思的事情。刚刚结束。 背景,公司在做一个 app, 而我就是这个 app 的 Android 开发。 之前我们这个 app 里面接入了一个 sdk 。那个 sdk 是混合开发的,显示出来的内容基本都是在WebView里面的。而且他们 sdk 有一个很牛逼的功能,就是点击一个按钮,就...

2019-05-27 15:40:30 128 0

原创 android WorkManger 使用攻略

文章目录`WorkManager` 使用攻略导入依赖库最简单的`WorkerManager`添加一些配置选项监听`Worker`的执行情况关联多个任务一起执行取消一个未完成的任务执行周期性任务执行“特殊”任务自定义`WorkManager`初始化参数 WorkManager 使用攻略 WorkMa...

2019-05-24 16:23:13 537 0

原创 c 如何定义与使用字符串数组[字符串数组作为实参以及形参的表示]

c 里面字符串其实是字符数组。不过,只是知道这个还是很难精确表述字符串以及字符串数组。 一般形式的操作是这样子的: char arr[ROW][LENGTH]; char *ptr[ROW]; for (int i = 0; i < ROW; ++i) { ...

2019-05-19 22:15:39 2785 0

原创 c 指针与数组陷阱

#include <stdio.h> #define SIZE 5 int main(void) { char *strings[SIZE]; char (*str)[SIZE]; printf("size of str = %zd, size ...

2019-05-16 01:00:15 49 0

原创 c 字符输入与验证,毁人不倦

蛤蛤蛤铪蛤铪蛤。 文章目录蛤蛤蛤铪蛤铪蛤。为了刚好的认识 `scanf()`,`getchar()`,输入行缓冲之间的坑。当然,主要是为了装逼。运行效果如下: 为了刚好的认识 scanf(),getchar(),输入行缓冲之间的坑。 我决定写一个练习题。 当然,主要是为了装逼。 编写一个提供加减...

2019-04-27 18:16:06 86 0

原创 c 对清除输入剩余字符 为什么是 【while( ( ch = getchar()) != '\n') 】的问题解释

对于行缓冲输入,只有读到换行符才会调用 getchar()函数。但是,’\n’明显也是一个字符。 那为什么 while ( (ch = getchar()) !='\n' ) ... 这样做有效? 很简单,最后一次的字符是'\n', 导致循环的条件不满足...

2019-04-27 15:56:00 1146 0

原创 tree 命令实用

今天全编了项目,生成了好几个 apk文件,但是不知道分别在什么路径下。如果打开对应的module去找肯定能找到。 但是,这样比较麻烦。 我第一想法是,写一个脚本,遍历目录,然后输出对应的文件路径即可。 但是,既然shell已经提供了那么多命令,就算没有直接的命令,组合一下应该能完成这个简单的需求。...

2019-04-19 00:08:23 77 0

原创 Java ArrayList toArray(T[] a) 解惑

先看一个小的代码片段 ArrayList<Integer> arrayList = new ArrayList<>(); Collections.addAll(arrayList, 11, 21, 31, 41, 51); ...

2019-04-16 16:17:02 1626 10

原创 Java迭代器 Iterator 浅析

Iterator<E>是一个接口,所以具体的实现需要看其中的实现类。下面就挑选其中比较简单的一个实现类来分析一下。 java.util.AbstractList.Itr 分析 // java.util.AbstractList.Itr private class Itr impleme...

2019-04-16 14:59:59 459 0

原创 android 拦截子 view 的触摸事件

使用场景: 比如微信里面的这种多选状态,点击头像是不能跳到个人详情页面的,但是正常聊天状态下,是可以的。 然后这个,怎么实现比较好呢? 比如布局是这样的。 abc_item.xml <FrameLayout ....> <TextView ... /> <Im...

2019-04-15 10:52:31 1942 0

原创 git 随笔 修改本地某笔提交记录

比如我现在执行 git log --oneline 看到的效果是: 1ef5721 (HEAD -> master) 6.16.11 a44a935 6.11.10 28eddec 6.16.9 eeef048 6.11.8 ede1ebe 6.16.7 73f569d 6.16.6 然后...

2019-04-14 17:11:19 510 0

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