自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

开发简记

大部分文章都在:https://www.jiangkang.tech

  • 博客(48)
  • 收藏
  • 关注

原创 Flutter-使用http请求数据并展示

关注 https://github.com/jiangkang/flutter-system 了解更多Flutter相关的知识不能进行网络请求的APP不是一个真的APP,Flutter目前在网络请求上还没有非常可靠的开源库(没有令人满意的),暂时用http来实现一下简单的网络请求吧。效果图数据模型/// Model:图片列表响应class ImageResponse { fin...

2019-07-30 21:51:01 1382

原创 Flutter-实现图片圆角的几种方式

关注 https://github.com/jiangkang/flutter-system 了解更多Flutter相关的知识图片圆角在开发中还是非常常见的,用Flutter实现圆角还是非常简单的,目前了解的大概有下面这几种:通过Card的shape属性通过Container的decoration直接使用ClipRRect效果图通过Card的shape属性Card( ...

2019-07-30 21:50:01 20693 1

原创 【Flutter】GridView使用之总结篇

GridView的几种使用方式GridView.count(@required int crossAxisCount)GridView.extent(@required double maxCrossAxisExtent)GridView(@required this.gridDelegate,List children)GridView.builder(@required this.g...

2019-07-10 21:29:44 1582

原创 【Flutter】GridView的使用之GridView.extent

想了解更多关于Flutter的知识,可以关注:https://github.com/jiangkang/flutter-systemhttps://jiangkang.tech在上一篇文章 GridView.count 中讲过 GridView.count的用法,这里讲一下GridView.extent的用法。GridView.count 是在交叉轴上创建固定个数的Item,cross...

2019-07-06 23:55:22 2118 2

原创 【Flutter】GridView的使用之GridView.count

GridView属于一种比较常见的布局,这里有必要说一下他的常见用法。简单使用class GridViewDemo extends StatelessWidget { @override Widget build(BuildContext context) { return Padding( padding: const EdgeInsets.all(10), ...

2019-07-06 22:50:56 6636 2

原创 【Flutter】Text的使用

想了解更多关于Flutter的知识,可以关注:https://github.com/jiangkang/flutter-systemhttps://jiangkang.tech文本作为UI最基本的元素,最基本的用法有这些:字体文字大小、颜色一些常用样式,比如倾斜,加粗,下划线,删除线等文字超出边界之后如何显示文字的单行,多行控制富文本的显示文字渐变,阴影文本点击事件...

2019-07-06 20:19:55 304

原创 【线程基础】多个线程,顺序输出

【线程基础】多个线程,顺序输出问题描述解题思路代码问题描述有三个线程:一个线程只可以输出:0,3,6,9…一个线程只可以输出:1,4,7,10…一个线程只可以输出:2,5,8,11…现在要求调度三个线程,使这些数字按照顺序依次输出,如0,1,2,3,4…解题思路找规律:很明显是等差数列 (n % 3)线程调度的方法:锁 + notifyAll代码class Compu...

2019-06-21 22:15:33 380

原创 Gradle 库依赖关系的管理

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

2018-07-01 13:38:06 812

原创 Android里的SparseArray

除了我们常用JDK提供的容器以外,Android还提供的自己的容器类,如SparseArray就是其中比较常见的一个类。特点SparseArray是一个整形到对象的映射;在整形到对象的映射这方面,它比HashMap在内存上更有效率;因为它避免了自动装箱的key,它的数据结构不依赖一个额外的Entry对象它把映射关系存储在两个数组中,用二分查找算法查找元素;这种实现不宜用在含有...

2018-03-29 23:08:43 2684

原创 Application启动流程

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

2018-03-27 22:20:58 2594

原创 聊一聊BlockingQueue

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

2018-03-27 13:20:12 1334

原创 聊一聊Vector与Stack

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

2018-03-27 12:26:44 6283

原创 设计一个FrameLayout(Kotlin)

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

2018-03-25 21:29:56 2794

原创 Android SQLite 简单的使用步骤

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

2018-03-25 20:26:12 2613

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

问题WebView页面图片无法显示; log报错:chromium: [INFO:CONSOLE(0)] "Mixed Content: The page at xxx was loaded over HTTP原因如果不单独设置,WebView是不支持在Https域名下加载Http资源的。设置办法: //允许混合模式(http与https) if (Bu...

2018-03-20 16:35:08 3985

原创 Handler使用场景以及源码分析

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

2018-01-15 20:51:15 570

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

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

2018-01-12 18:20:59 788

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

涉及到的HeaderAccept-RangesRangeIf-RangeContent-RangeAccept-Ranges:表示自身支持范围请求(partial requests),字段的具体值用于定义范围请求的单位。当客户端发现Accept-Ranges时,可以尝试继续中断了的下载,而不是重新下载。语法:Accept-Ranges: bytesAccept-

2018-01-08 17:59:45 1007

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

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

2018-01-03 16:30:16 384

原创 巧用Gradle Wrapper 解决实际问题

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

2017-12-29 11:33:43 2300

原创 今天上班忘带Android数据线了

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

2017-12-29 11:32:51 375

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

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

2017-12-29 11:30:50 6904 5

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

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

2017-12-29 11:28:42 995

原创 Java Web:从Servlet开始

开发环境MacJDK 1.8IntelliJ Idea 2017.2.2 旗舰版Tomcat v9下载和安装Tomcat 9直接去官网下载下载地址:http://tomcat.apache.org/download-90.cgitomcat官网截图.png这里,我下载的是core zip包,下载完成之后,解压。启动方法:在/bin/目录下有几个shell脚本和

2017-09-25 20:29:28 214

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

由于公司出图都是按照IOS的标准来,每次开发完之后,UI总是坐过来调整UI参数,还是非常的费时的,故整理下平时遇到的一些适配问题TextView的高度为啥总是比标注的要大?打开手机设置的“显示布局边界”功能,可以看到TextView上下都有一部分空白,虽然字体大小一样,但是和上下控件之间的边距会变大,对像素敏感的UI就过来了。image.png解决办法:在xml文件里加上一句and

2017-09-25 20:29:25 458

原创 使用Loader获取Android联系人列表

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

2017-09-23 17:12:11 560

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

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

2017-09-23 17:08:51 391

原创 Android中 不那么常用但非常重要的控件属性

android:inputType参数类型说明android:inputType="none"--输入普通字符android:inputType="text"--输入普通字符android:inputType="textCapCharacters"--输入普通字符android:inputType="textCapWords"--单词首字母大小android:inputType="textCa

2017-05-16 11:47:38 337

原创 RxJava实例-用debounce实现的简单即时搜索

效果图debounce.gif说明运用debounce操作符进行文本搜索,输入单个字符并不会触发搜索,而是在等待一定时间后才触发搜索。debounceimage.png上面这个图并不是很直观,换一个图image.pngdebounce的意思是“去除抖动”,debounce操作符对源Observable每产生一个结果后,如果在规定的间隔时间内没有别的结果产生,则把这个结果

2017-05-16 09:43:27 1090

原创 RxJava实例-按钮点击数累加

RxJava实例RxJava实例-线程切换效果图点击累加.gif说明在一定时间内(3s),对点击按钮的次数进行累计,每点击一下,输出一条log,当时间到时(3s),会输出这段时间内点击的次数buffer操作符实现这种效果的办法当然有很多种,这里用RxJava的buffer操作符来简单写一个demo。image.png这张图简单明了,不用多说。实现方式之前参考的代码用的是

2017-05-16 09:43:24 1123

原创 Android分享---调用系统自带的分享功能

实现分享功能的几个办法1.调用系统的分享功能2.通过第三方SDK,如ShareSDK,友盟等3.自行使用各自平台的SDK,比如QQ,微信,微博各自的SDK这里就记录下第一种办法。分享文本信息 Intent textIntent = new Intent(Intent.ACTION_SEND); textIntent.setTy

2017-05-16 09:43:22 2046 1

原创 Handler简单分析-runOnUiThread,view.post()

网上有很多关于Handler的帖子,但是看了那么多,不自己亲自分析一下,还是虚得很哪些地方用到了Handler?1.runOnUiThread(Runnable action)我们在Activity中写处理逻辑的时候,经常会用到这个方法,用来保证代码在UI线程中执行。来看看它是怎么实现的: /** * Runs the specified action on the UI th

2017-05-16 09:43:19 358

原创 机器学习-kNN实现简单的手写数字识别系统

不积跬步,无以至千里功能利用k-邻近算法,实现识别数字0到9开发环境MacPython3.5(Anaconda)PILnumpy数据集和项目源代码Github:https://github.com/jiangkang/KMachineLearning.git数据集下面是32*32的黑白图像32* 32像素数据集为了方便处理,提供了文本文件文本数据数

2017-05-16 09:43:16 244

原创 Java中的synchronized

最近发现自己对synchronized不怎么熟悉,就在网上找了下相关文章,做个笔记,文末有参考的文章链接作用1.修饰一个代码块,被修饰的代码块称为同步语句块,起作用的范围是{}大括号括起来的代码,作用的对象是调用这个代码块的对象。2.修饰一个方法3.修饰一个静态方法,synchronized修饰的静态方法锁定的是这个类的所有对象4.修饰一个类修饰一个代码块一个线程访问一个对象中的

2017-05-16 09:43:14 165

原创 利用Guetzli批量压缩图片

今天玩了下谷歌的开源图片压缩工具Guetzli,发现单张图片压缩效果还是不错的,就写了个简单的python脚本,批量压缩图片前提条件1.安装好Guetzli,可以使用命令行工具2.python环境简单的代码# -*- coding: utf-8 -*-import osdir_name = "你选择的图片文件夹"def get_file_name(file_dir):

2017-05-16 09:43:11 759

原创 机器学习— 获取数据,绘制图表

获取数据用requests,请求网络数据,然后写入csv文件。import requests#从远程获取数据url = "http://aima.cs.berkeley.edu/data/iris.csv"response = requests.get(url)#写入文件local_file = open("iris.csv","w")local_file.write(respo

2017-05-16 09:43:08 1415

原创 Android中的SystemClock

三个时间1.currentThreadTimeMillisReturns milliseconds running in the current thread.2.uptimeMillisReturns milliseconds since boot, not counting time spent in deep sleep.3.elapsedRealtimeReturns mil

2017-05-16 09:43:06 500

原创 机器学习-从kNN开始

import numpy as npimport operatordef createDataSet():#数据集 group = np.array([[1.0,1.1], [1.0,1.0], [0,0], [0,0.1]]) #标签 labe

2017-05-16 09:43:03 297

原创 gradle命令报错Unsupported major.minor version 52.0的解决办法

原因Java版本低,需要使用Java8为什么Android Studio里配置的gradle参数可以运行,点击build,run也可以运行,gradle命令行就不行?两者使用的Java环境不一样。Paste_Image.pngPaste_Image.png怎么解决?下载Java8;配置java环境变量(Mac,Window各自google一下如何设置)注意:下载jdk,

2017-05-16 09:43:00 2041

原创 Android开发中那些常见到让人忽视的基础知识

Android版本和API Level对应表Paste_Image.pngAndroid支持库(Android Support Library)来由:许多情况下,某项功能可能对应用开发者很有用,但是添加到 Android 框架却并不合适。例如,某个应用可能仅需要用于特定用例的某项功能,如在不同版本的 Android 系统之间顺畅切换。为了解决这一问题,Android SDK 添加

2017-05-16 09:42:57 487

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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