自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

IT小蔡的博客

https://github.com/aLittleGreens

  • 博客(43)
  • 资源 (9)
  • 问答 (3)
  • 收藏
  • 关注

原创 Android相机预览方向

以前对Camera了解的不是太深入,最近有需求把人脸识别 集成到项目,必然会与Camera打交道,需要一些坑,与大家分享一下。一、预览方向 Camera.CameraInfo info = new Camera.CameraInfo();  首先理解一下 info.orientation  官方解释官方定义:orientation表示相机图像的方向。它的值是相机图像顺时针旋

2017-08-08 17:38:08 5478

原创 Dart中的异步编程(二):Stream

Stream 顾名思义就是流,简单理解,其实就是一个异步数据队列而已。我们知道队列的特点是先进先出的,Stream也正是如此。Stream 分为两种,单订阅流(single subscription) 和 广播流(broadcast)。单订阅流单订阅流的特点是只允许存在一个监听器,即使该监听器被取消后,也不允许再次注册监听器。如何创建StreamStream.periodicperio...

2019-11-29 09:23:40 910

原创 Dart中的异步编程(一):futures, async, await

一、为什么要用异步?异步操作让您的程序在等待另一个操作完成的同时完成工作。下面是一些常见的异步方式。通过网络获取数据。IO操作要在Dart中执行异步操作,可以使用Future类和async和 await 关键字何为Future呢?future表示异步操作的结果,可以有两种状态:uncompleted or completed.uncompleted :当你调用异步函数时,...

2019-11-27 16:51:40 922

原创 ConstraintLayout 布局应用

ConstrainLayout官方文档https://developer.android.google.cn/reference/android/support/constraint/ConstraintLayout.html目录ConstraintLayout常用标签1、相对位置约束2、Circular positioning (Added in 1.1) 圆形定位3、D...

2019-07-07 01:05:28 494

原创 总结 Kotlin常用的高阶函数(forEach,map,flatmap,fold,reduce,filter,takeWhite,let/run,also/apply,with,use)

/** * 遍历函数 */fun forEach() { val arr = intArrayOf(1, 2, 4, 6) arr.forEach(::println)}/** * 对集合每一个元素做变换 */fun map() { val arr = intArrayOf(1, 2, 4, 6) arr.map { "$it ...

2019-06-14 12:36:32 2448

原创 基于RxJava2实现的RxBus

基于Rxjava2编写,代码注释很多,直接上代码首先我们先介绍怎么使用,然后上源码源码地址订阅事件 2个观察者订阅同一个事件,TAG是事件对应的key值 rxManager = new RxManager(); rxManager.on(TAG, new Consumer<Integer>() { @Overr...

2019-01-10 17:26:38 492

原创 建造者模式(Builder模式)

Builder模式介绍  Builder模式是一步一步创建一个复杂对象的创建型模式,适合于一个具有较多的零件(属性)的产品(对象)的创建过程,它允许用户在不知道内部构建细节的情况下,可以更精细地控制对象的构造流程  因为一个复杂的对象有很多属性,如汽车,有车轮、方向盘、发动机,还有各种小件。装配过程比较漫长也复杂,对于这种情况,为了在构建过程中对外部隐藏实现细节,可以用Builder模式,...

2018-09-12 22:36:47 460

原创 工厂方法模式

工厂方法模式定义定义一个用于创建对象的接口,让子类去决定实例化哪个类。工厂方法模式是一种结构简单的模式,其在我们开发中非常常见,使用场景在任何需要生成复杂对象的地方,都可以使用工厂方法模式,简单实现现有一些水果加工厂,不同的工厂,加工不同的水果。 一、多工厂方法模式1、抽象产品类 public abstract class Fruit { publ...

2018-09-11 19:24:17 188

原创 从源码角度分析UI绘制流程(上)

Activity如何加载布局的?我们定位到Activity.javaAvtivity调用setContentView,public void setContentView(@LayoutRes int layoutResID) {getWindow().setContentView(layoutResID);initWindowDecorActionBar();}publ...

2018-08-29 15:39:29 189

原创 java 线程池梳理

一、什么是线程池:线程池是 在一个多线程应用池的程序中创建一个线程集合,然后再执行新任务的时候可以重用这些线程而不是重新开启一个线程(提高线程复用,降低性能开销)。线程中线程的数量通常完全取决内存大小和应用程序的需求。线程池的每个线程都有分配任务,一旦任务完成了,就回到池子里等待下一次的分配任务。二、为什么要使用线程池:(线程复用) 重用线程池中的线程,减少因对象创建,销毁所带来的性能...

2018-05-24 16:43:26 609

转载 HTTP协议其实就是这么简单

一、HTTP简介1.http协议介绍HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。HTTP是基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS...

2018-05-03 11:49:02 23834 7

转载 Java对象克隆(Clone)及Cloneable接口、Serializable接口的深入探讨

Part I没啥好说的,直接开始Part II吧。 Part II谈到了对象的克隆,就不得不说为什么要对对象进行克隆。Java中所有的对象都是保存在堆中,而堆是供全局共享的。也就是说,如果同一个Java程序的不同方法,只要能拿到某个对象的引用,引用者就可以随意的修改对象的内部数据(前提是这个对象的内部数据通过get/set方法曝露出来)。有的时候,我们编写的代码想让

2017-09-29 11:58:05 318

转载 HashMap 主要特点和关键方法源码解读

点击查看 Java 集合框架深入理解 系列 什么是 HashMapHashMap 的特点HashMap 的 13 个成员变量HashMap 的初始容量和加载因子HashMap 的关键方法HashMap 的 4 个构造方法HashMap 中的链表节点HashMap 中的添加操作HashMap 中的哈希函数 hashHashMap 中的初始化扩容方法 resizeHashMap 的获取方法 g

2017-09-28 18:28:19 273

原创 利用ItemDecoration给RecyclerView的item添加标题

先看效果项目地址/* * Created by IT小蔡 on 17-7-19 下午4:14 * Copyright (c) 2017. All right reserved * * Last modified 17-7-19 下午4:14 */package cyk.com.doublegangedrecyclerview.itemdecoration;import andro...

2017-07-19 20:19:50 3552

原创 自定义图片、文字组合控件

效果 package yu.cai.myview.widget;import android.content.Context

2017-07-06 15:09:47 525

原创 自定义控件实现验证码

有注释,请看详情新建valus/attr.xml package yu.cai.myview.widget;im

2017-07-04 20:05:17 285

原创 前端、后台、终端交互之编码格式

楼主上周项目遇到一个小问题,具体是这样,因项目需求 我需要上传本地图片到服务器,图片命名方式要求含有中文(用于检索),然后后台提供接口给前端,前端来把照片展示出来,当图片不含中文时,一切正常,当图片含有中文,前端那边就会报404.  周一上午研究了一下 找到了原因及解决办法浏览器会自动对中文进行URL编码我意识到是不是 URL编码有问题导致,我试着 用 java api进行

2017-06-19 16:54:30 2780

原创 Git的详细使用

Git 是一个开源的分布式版本控制工具,这里主要讲解一下它的基本用法。1、安装GitGit安装包下载地址 https://git-for-windows.github.io/ 下载比较慢比较慢也可以去我的百度云下载 链接:http://pan.baidu.com/s/1b7i0Ia 密码:au0e虽然Android Studio也支持以图形化的形式操作Git,但本篇文章只要交大...

2017-06-12 15:04:50 530

原创 SQLite如何升级数据库

熟悉SQLite的同学都知道 我们继承SQLiteOpenHelper 要重写两个方法 @Override public void onCreate(SQLiteDatabase db) { //第一次创建数据库恩文件时候才会执行,之后不会再执行 } @Override public void onDowngrade(SQLiteDatabase db, int oldVersion,

2017-06-06 16:38:47 1234 2

原创 将SQLite数据库保存在sdcard路径下

要想操作数据库,首先我们要获取一个事务SQLiteDatabase public SQLiteDatabase getWritableDatabase() { synchronized (this) { return getDatabaseLocked(true); } } private SQLiteDatabase

2017-06-06 10:56:41 3114

原创 探讨数据库存放在包名路径下还是sdcard路径下遇到的Bug

说一下我使用数据库所遇到的问题,可能会对你有所帮助。去年一个项目中我用的数据库sdk是Realm,使用起来很方便。它直接可以指定数据库的存放位置File databaseFile = new File("/sdcard/mst/MstDatabase");RealmConfiguration configuration = new RealmConfiguration.Builder(dat

2017-06-05 18:33:33 429

原创 浅谈 mvc、mvp

一、MVC全名是Model View ControllerView:对应于布局文件 Model:业务逻辑和实体模型 Controllor:对应于Activity 将业务逻辑、数据、界面显示 分离的方法来组织代码,将业务逻辑聚集到一个部件里面,在改进、和定制化界面及用户交互的时候,不用重新编写业务逻辑。其中M层处理数据、业务逻辑等;V层处理界面显示的结果;C层祈祷桥梁的作用,来控

2017-05-03 17:39:01 781

转载 Android中的windowSoftInputMode属性详解

这篇文章主要介绍了Android中的windowSoftInputMode属性详解,本文对windowSoftInputMode的9个属性做了详细总结,需要的朋友可以参考下首先,我们从这个属性的名称中,可以很直观的看出它的作用,这个属性就是来设置窗口软键盘的交互模式的。    android:windowSoftInputMode属性一共有9个取值,分别是: 

2017-03-31 10:34:49 297

原创 基于ListView实现头部、底部视差效果

 /** * Created by IT小蔡 on 2017-3-29. */public class ParallaxListView extends ListView { private ImageView headImageView; private ImageView footImageView; private int maxHeight; ...

2017-03-30 11:02:18 364

原创 采用双缓存实现画图板

本例实现 当用户在屏幕上移动时,即可在屏幕上绘制任何图形。所谓双缓存其实很简单,当程序需要在指定的View上绘制时,程序并不直接绘制在View上,而是先绘制在内存中的一个Bitmap(这就是缓存)上,等到内存中的Bitmap绘制好后,再一次性的将Bitmap绘制到View上。下面开始自定义一个View /** * Created by IT小蔡 on 2017-3-29. *...

2017-03-29 10:20:35 546

原创 自定义 ToolBar 实现标题栏

一 、自定义ToolBar前 ,先贴一下style ,相信大家一定和我一样感到既陌生又熟悉 @color/colorAccent @color/colorAccent @color/colorAccent #fff @color/white f

2017-03-17 18:13:57 3405 1

原创 FragmentTabHost+ViewPager+Fragment实现底部Tab导航

一、传统实现导航栏有4种方式1、TabHost + Activity (淘汰)2、RadioButton +VIewPager/Fragmnet (比较繁琐)3、FragmentTabHost+ViewPager/Fragment4、BottomNavigationView + VIewPager/Fragmnet 二、我们先用FragmentTabHost +Fragme...

2017-03-16 12:01:38 709

转载 View绘制详解,layout过程

1.View中的layout2.在ViewGroup中对View进行排列3.以LinearLayout为例来看看layout过程4.根布局的layout1.View中的layout要说layout过程,首先我们得先来看看View中的layout方法,如下:[java] view plain copy

2017-03-02 18:23:24 299

原创 模仿苹果虚拟悬浮按钮(自动靠边、可浮现任何界面上)

  由于最近小蔡的手机音量键坏了,调节音量有点麻烦,突发奇想,想自己实现一个快捷键来调节音量,总结出一般本章,分享给大家。首先 按钮要想实现悬浮在任何界面,那么必须是要写在服务里面的,使用定时器,2.5s不触摸后,背景变淡下载地址 清单文件中加权限 <uses-permission android:name="android.permission.SYSTEM_...

2017-01-12 18:39:31 7409 5

原创 倒计时CountDownTimer 源码分析

CountDownTimer 是 android sdk中os包下的一个 抽象类 这个类是通过handler来实现一个倒计时的操作。在倒计时期间会定期调用用户实现的回调函数。拿来用作倒计时非常方便。1、首先看一下如何使用public class MyCountDownTimer extends CountDownTimer { public MyCountDownTime

2017-01-11 17:26:55 713

原创 装饰者模式

前言:我曾经以为男子汉应该用继承去处理一切,后来我领教到运行时扩展,远比编译时期的继承威力大的多。装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。编辑以下情况会使用到Decorator模式1. 需要扩展一个类的功能,或给一个类添加附加职责。2. 需要动态的给一个对象添加功能,这些

2017-01-05 09:42:38 336

原创 Android 与 JavaScript 互调

做混合开发的同学,肯定了解 Android 与JS互调,本文只是Android 与 JavaScript 互调的简单使用,大神请忽略。阅读完本文,你应该可以学会,如何通过Android调用JS方法,JS调用Android的方法。Android代码@SuppressLint("SetJavaScriptEnabled")public class MainActivity extends

2017-01-04 11:35:51 302

原创 观察者模式

参考 Head First (原创、总结) 大家好!我说IT小蔡,最近由于项目部紧张,空闲之余我在阅读>这本书,以后每学习一种设计模式我都会在这里分享给大家,虽然都是很老是知识,但都是我双手打出来的,非常感谢大家的拜读,希望在以后共同学习,一起进步。观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都能收到通知并自动更新。(一只穿云箭,千军万马来相见)。

2016-12-28 18:33:00 461

原创 策略模式

本篇博客来源于 Head First (原创总结)策略模式 :定义了算法类,分别封装起来,让它们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。 Joe在公司上班,要设计一款鸭子游戏,游戏中会出现各种类型的鸭子,(游泳,呱呱叫...) ,Joe很容易的就想到了 设计一个superClass ,  让各种鸭子集成这个超类就好了。1、现在有新的需求,为了击败竞争对手,项目

2016-12-26 20:08:28 312

原创 ActiveMQ+MQTT协议 实现Android推送(根据订阅主题可实现点对点、集群推送)

   最近功能要做一个推送的功能,在不用第三方推送的前提下,考虑了 MQTT协议实现推送,听说它的效率比RabbitMQ高一些,参考了网上的代码,总结一下,写了一个demo服务端我用的是java代码实现的我的服务器版本是 apache-activemq-5.14.1 public class MqttBroker { /** * 发送消息 ...

2016-12-02 17:59:34 5035

原创 AlarmManager实现定时器、闹钟

AlarmManager的使用机制有的称呼为全局定时器,有的称呼为闹钟。通过对它的使用,个人觉得叫全局定时器比较合适,其实它的作用和Timer有点相似。都有两种相似的用法:(1)在指定时长后执行某项操作(2)周期性的执行某项操作AlarmManager对象配合Intent使用,可以定时的开启一个Activity,发送一个BroadCast,或者开启一个Service.//操作:发送一个广播...

2016-12-02 15:12:57 533

原创 OnTouchListener()的onTouch(View v, MotionEvent event)事件以及按键onKeyDown()事件

以前没有太在意 touch(事件)返回值,今天写onTouch事件让控件随着手指移动时,发现 只执行了MotionEvent.ACTION_DOWN , MOVE和UP事件都没有执行,辗转反侧,发现是返回值得问题.查看super.onTouch()是空的,所以就只有 true或false两种状态当return false时,就是不消费事件,通知系统不关心这一次touch事件,事件会传给

2016-11-23 10:42:43 1929

原创 ImageView ScaleTypes属性

1、CENTER_CROP 等比例放大或缩小(图片不会比变形,使得图片长(宽)等于或大于View的长(宽) )2、FIT_XY 图片会铺满整个空间,(图片会 拉伸、变形)3、CENTER    按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截取图片的居中部分显示4、CENTER_INSIDE  将图片的内容完整居中显示,通过按比例缩小或原来的size使得图片长/宽等

2016-11-15 14:45:44 373

转载 Android系统证书platform.x509.pem,platform.pk8转换为.keystore文件

上篇文章,有提到修改系统时间需要系统签名,这篇文章将如何用Android系统签名工具签名我们在进行Android开发的时候,如果开发的是系统应用,都需要系统的签名才能正常运行。而系统应用一般是把代码统一放到系统代码库中跟随系统一起编译。而如果我们想用Android Studio单独开发某个应用而使用系统签名的时候,有两种开发的方式,一种是编译完成后,使用SignApk.jar来进行

2016-11-09 10:10:07 14515 3

转载 Android蓝牙开发浅谈 __ 耳机录音

转自http://blog.chinaunix.net/uid-27875-id-4424430.html对于一般的软件开发人员来说,蓝牙是很少用到的,尤其是Android的蓝牙开发,国内的例子很少     Android对于蓝牙开发从2.0版本的sdk才开始支持,而且模拟器不支持,测试至少需要两部手机,所以制约了很多技术人员的开发,刚巧这段时间公司有蓝牙开发的需求,我看了很多国内

2016-11-03 18:17:36 7391

java线程池封装

java线程池封装,可自定义线程优先级,使用方便。。。

2018-05-24

Android 用AIDL和Messager的方式 实现 跨进程通信

Android 进程间通信实现方式aidl 或者 messager,客户端可传递(基础数据,序列化对象)到服务端,服务端处理后,返回结果给客户端

2017-10-19

基于ListView实现头部、底部视差效果

基于ListView实现头部、底部视差效果

2017-03-30

模仿苹果虚拟悬浮按钮(自动靠边、可浮现任何界面上)

模仿苹果虚拟悬浮按钮(自动靠边、、倒计时背景变暗、可浮现任何界面上)

2017-01-12

mqtt协议实现 Android推送(服务端、客户端代码)

利用mqtt协议实现 Android端推送

2016-12-05

基于activemq实现Android推送(服务端+客户端)

基于activemq实现Android推送(服务端+客户端)

2016-12-02

apacheq服务器

2016-12-02

TextureView 实现相机的预览 、拍照、自动聚焦、人脸识别

TextureView 实现相机的预览 、拍照、自动聚焦、人脸识别

2016-11-18

Android购物车

简单实现购物车逻辑

2016-11-17

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

TA关注的人

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