姜康的技术博客

用技术解决实际问题

Gradle 库依赖关系的管理

查看库依赖关系 列出指定module的依赖关系 ./gradlew -q moduleName:dependencies > outfile.txt 列出多个指定module的依赖关系 ./gradlew -q dependencies...

2018-07-01 13:38:06

阅读数 297

评论数 0

Android里的SparseArray

除了我们常用JDK提供的容器以外,Android还提供的自己的容器类,如SparseArray就是其中比较常见的一个类。 特点 SparseArray是一个整形到对象的映射; 在整形到对象的映射这方面,它比HashMap在内存上更有效率; 因为它避免了自动装箱的key,它的数据结构不依赖一...

2018-03-29 23:08:43

阅读数 2063

评论数 0

Application启动流程

先对整体有了一个基本的认识之后,再去看细节 谈到Android Application的启动流程,很多文章都是各种源码类和方法的一堆调用关系,这样的文章就算看一百遍,也只是云里雾里。源码得看,但是最好不要一下子深陷到源码的细节之中,不可自拔。这里站在前人的基础之上做一个总结。 在说应用...

2018-03-27 22:20:58

阅读数 1391

评论数 0

聊一聊BlockingQueue

BlockingQueue,也叫阻塞队列,本身是一个继承自Queue的接口,并在Queue的基础上支持了两个附加操作: 获取元素时,等待队列为非空 存储元素时,等待空间变得可用 这些方法有4中形式: 抛异常 ,如 add/remove/element; 返回特殊值(null或者fals...

2018-03-27 13:20:12

阅读数 1164

评论数 0

聊一聊Vector与Stack

Java Collection系列下面有List,Set,Queue等,而Vector属于List下面的一个实现。 特点 Vector本质上是一个可变数组 在Vector创建之后,其size可以增加和减少 线程安全的 在非多线程的情况下建议使用ArrayList 简要分析 先看一下有哪...

2018-03-27 12:26:44

阅读数 2040

评论数 0

设计一个FrameLayout(Kotlin)

拆零件,然后再把零件拼装回去,来来回回对其结构也就熟悉了 FrameLayout的特点 子View按照添加顺序层叠显示 FrameLayout的尺寸与其最大子View(可见的)的尺寸相等(加上padding值) 如果要让GONE的子View参与计算,则需要把setMeasureA...

2018-03-25 21:29:56

阅读数 2025

评论数 0

Android SQLite 简单的使用步骤

Android开发过程中可以用SQLite储存结构化数据,如联系人信息之类的。 由于SQLite的操作API是相当底层的,因此开发者需要花费很多时间去手动处理SQL查询语句,一旦数据结构改变就得相应的更新SQL语句,这个过程非常耗时,也容易出现错误。 同时,开发者不得不写很多样板代码来转换SQ...

2018-03-25 20:26:12

阅读数 1816

评论数 0

WebView HTTPS页面引用HTTP资源的问题

问题 WebView页面图片无法显示; log报错: chromium: [INFO:CONSOLE(0)] "Mixed Content: The page at xxx was loaded over HTTP 原因 如果不单独设置,WebView是...

2018-03-20 16:35:08

阅读数 1947

评论数 0

Handler使用场景以及源码分析

路漫漫其修远兮,吾将上下而求索 Handler的使用场景 子线程操作完成之后,通知主线程执行操作 首先在主线程创建一个Handler实例 private val MSG_WHAT: Int = 1000 private var mHandler = object : Hand...

2018-01-15 20:51:15

阅读数 428

评论数 0

自定义View-画一个会动的太极图

效果 步骤分解 像太极图这种比较规则的图形,一般就是用数学知识进行图形分解,分成一个个基本图形,比如线段,圆,矩形,扇形,多边形等,然后一步步绘制出来即可。 - 分解太极图 @Override protected void onDraw(Canvas canva...

2018-01-12 18:20:59

阅读数 445

评论数 0

多线程下载,断点续传技术要点---Http Header

涉及到的Header Accept-Ranges Range If-Range Content-Range Accept-Ranges: 表示自身支持范围请求(partial requests),字段的具体值用于定义范围请求的单位。当客户端发现Accept-Ranges时,可以尝试继...

2018-01-08 17:59:45

阅读数 458

评论数 0

算法:字符串处理-判断两个字符串是否互为“形变词”(判断两字符串中字符种类和出现次数是否均相同)

对于两个字符串A和B,如果A和B中出现的字符种类相同,且每种字符出现的次数相同,则A和B互为形变词 问题输入字符串A与B,检查两个字符串是否互为形变词算法1思路:利用固定大小数组存字符出现的次数,字符的ASCII值作为数组下标,遍历A,存入数据,遍历B,如果值为0,则表示A中无此字符或者B中该字符...

2018-01-03 16:30:16

阅读数 114

评论数 0

巧用Gradle Wrapper 解决实际问题

关于gradle,会遇见哪些问题? 国内gradle下载太慢,项目初始化时间长 jenkins中关于gradle的环境配置麻烦 新手配置gradle麻烦 gradle wrapper我们执行build任务的时候,可以用两种方式gradle build和./gradlew buildgradle b...

2017-12-29 11:33:43

阅读数 615

评论数 0

今天上班忘带Android数据线了

真正不需要数据线,就可以Debug

2017-12-29 11:32:51

阅读数 269

评论数 0

Android 语音播报实现方案(无SDK)

类似支付宝收款时候的语音播报功能:当别人扫描你的收款码,你收到钱之后,就会听到“支付宝到账12.55元”的语音播报。

2017-12-29 11:30:50

阅读数 4282

评论数 5

用OpenCV-Python 完成简单的图像读取,显示

利用OpenCV Python 入门:简单的图像读取,显示,转换

2017-12-29 11:28:42

阅读数 361

评论数 0

Java Web:从Servlet开始

开发环境 Mac JDK 1.8 IntelliJ Idea 2017.2.2 旗舰版 Tomcat v9 下载和安装 Tomcat 9 直接去官网下载 下载地址:http://tomcat.apache.org/download-90.cgi tomcat官网截图.png 这里,...

2017-09-25 20:29:28

阅读数 120

评论数 0

关于Android屏幕适配的一些细节

由于公司出图都是按照IOS的标准来,每次开发完之后,UI总是坐过来调整UI参数,还是非常的费时的,故整理下平时遇到的一些适配问题 TextView的高度为啥总是比标注的要大? 打开手机设置的“显示布局边界”功能,可以看到TextView上下都有一部分空白,虽然字体大小一样,但是和上下控件之间的边...

2017-09-25 20:29:25

阅读数 309

评论数 0

使用Loader获取Android联系人列表

换一种方式获取Android联系人列表吧,别再用depressed的方法了,用简单的办法获取联系人列表,并把结果封装成标准json返回

2017-09-23 17:12:11

阅读数 385

评论数 0

利用系统相机拍照,摄像,从系统相册中选择图片

打开系统相册,选择照片; 打开系统相机,拍照; 打开系统相机,摄像

2017-09-23 17:08:51

阅读数 176

评论数 0

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