自定义博客皮肤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: 源码浅析系列[Handler,Looper,Message,MessageQueue]

对之前的分析做一个整理: android: Handler 源码浅析 [Handler,Looper,Message,MessageQueue] [android: Looper 源码浅析 [Handler,Looper,Message,MessageQueue]](https://blo...

2019-03-17 12:09:43

阅读数 140

评论数 0

原创 android: Message 源码浅析 [Handler,Looper,Message,MessageQueue]

其中Message源码是最简单的。 首先,该类实现了接口Parcelable,也就表示,Message是一个可序列化对象。 然后构造方法里面没有任何逻辑,仅仅是构造出一个Message对象。Message里面还有一个很常用的方法obtain()。 /** * Return a n...

2019-03-17 12:04:28

阅读数 48

评论数 0

原创 android: Handler 源码浅析 [Handler,Looper,Message,MessageQueue]

在 android中,Handler是非常重要且常用的对象。往往用来处理异步回调。很多系统实现都使用到了Handler。比如AsyncTask,IntentService,HandlerThread 等。 先给出一个简单是使用示例: // Handler 使用示例 ### // MyActivi...

2019-03-17 11:55:03

阅读数 60

评论数 0

原创 android: Looper 源码浅析 [Handler,Looper,Message,MessageQueue]

其实Looper的源码比较短,看起来还是比较容易的。 首先是构造方法。不过私有化了。 private Looper(boolean quitAllowed) { mQueue = new MessageQueue(quitAllowed); mThread = Thread.cur...

2019-03-17 10:52:42

阅读数 52

评论数 0

原创 android sqlite3 数据库升级,加字段

数据库升级,添加字段。 比如原本的表结构是这样的: CREATE TABLE group ( _uid NVARCHAR NOT NULL PRIMARY KEY _member NVARCHAR ); 对应的代码是: @Overrid...

2018-11-21 16:45:38

阅读数 1021

评论数 0

原创 android NumberPicker 全面解析

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

2018-08-11 16:41:54

阅读数 3993

评论数 0

原创 android zxing 解析二维码图片与生成二维码图片

关于生成二维码图片:Android下使用zxing包生成二维码里提供的QRCodeUtil就是一切了。非常的方便。 关于解析二维码图片,获取内容: public Result parseInfoFromBitmap(Bitmap bitmap) { int[] pixels = new...

2018-07-26 12:07:48

阅读数 534

评论数 0

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

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

2017-09-18 15:33:24

阅读数 597

评论数 0

原创 java:List自定义排序

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

2017-09-04 12:29:55

阅读数 558

评论数 0

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

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

2017-08-25 19:21:21

阅读数 5717

评论数 0

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

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

2019-12-28 14:41:52

阅读数 7

评论数 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

阅读数 5

评论数 0

原创 java 两个线程接力跑

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

2019-12-11 22:25:35

阅读数 13

评论数 0

原创 android viewpager2+tablayout+ConstraintLayout的坑

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

2019-11-10 20:26:09

阅读数 98

评论数 2

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

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

2019-11-05 00:45:24

阅读数 7

评论数 0

原创 android recyclerview grid 分割线

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

2019-10-20 20:21:36

阅读数 60

评论数 0

原创 kotlin :小结

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

2019-10-09 20:35:35

阅读数 16

评论数 0

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

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

2019-10-06 21:41:09

阅读数 19

评论数 0

原创 kotlin: 再看 lambda

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

2019-10-06 10:57:39

阅读数 14

评论数 0

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

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

2019-09-26 21:52:31

阅读数 11

评论数 0

原创 kotlin : 高阶函数概览

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

2019-09-25 23:52:38

阅读数 10

评论数 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

阅读数 38

评论数 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

阅读数 135

评论数 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

阅读数 8

评论数 0

原创 kotlin 类委托

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

2019-09-21 12:57:12

阅读数 18

评论数 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

阅读数 41

评论数 0

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

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

2019-09-09 00:27:01

阅读数 101

评论数 0

原创 android: mqtt 浅析

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

2019-09-08 13:50:43

阅读数 199

评论数 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

阅读数 87

评论数 0

原创 android:浅谈 mvp 架构

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

2019-09-01 20:16:33

阅读数 59

评论数 0

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

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

2019-08-06 17:48:36

阅读数 367

评论数 0

原创 我看 kotlin

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

2019-07-18 23:35:03

阅读数 44

评论数 0

原创 知识就是力量趣闻

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

2019-05-27 15:40:30

阅读数 109

评论数 0

原创 android WorkManger 使用攻略

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

2019-05-24 16:23:13

阅读数 232

评论数 0

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

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

2019-05-19 22:15:39

阅读数 1334

评论数 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

阅读数 32

评论数 0

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

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

2019-04-27 18:16:06

阅读数 44

评论数 0

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

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

2019-04-27 15:56:00

阅读数 606

评论数 0

原创 tree 命令实用

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

2019-04-19 00:08:23

阅读数 44

评论数 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

阅读数 693

评论数 3

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