自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小成的博客

勿忘初心,勿忘心安

  • 博客(95)
  • 资源 (26)
  • 问答 (1)
  • 收藏
  • 关注

原创 数据结构之二分搜索树增删改查和遍历实现

1. 概念是指一棵空树或者具有下列性质的二叉树:1. 若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值;2. 若任意节点的右子树不空,则右子树上所有节点的值均大于它的根节点的值;3. 任意节点的左、右子树也分别为二叉查找树;4. 没有键值相等的节点。2. 构建一个二分搜素树节点 public class TreeNode<E exte...

2018-08-29 15:07:00 432

原创 数据结构之递归实现

1. 概念解释:程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。2...

2018-08-29 00:01:42 2212

原创 超详细的Glide源码解析

1. 简单使用Glide.with(this).load(url) .placeholder(R.mipmap.ic_launcher) .error(R.mipmap.ic_launcher) .centerCrop() .skipMemoryCache(tr...

2018-08-19 22:38:27 5356 1

原创 Java-堆排序

1.概念 是一种树形选择排序,在排序过程中,将待排序的记录r[1..n]看成是一颗完全二叉树的顺序存储结构, 利用完全二叉树中的双节点和孩子节点之间的内在关系,在当前无序的序列中选择关键字最大或最小的记录。2.思路 实现堆排序需解决两个问题: (1)如何将n 个待排序的数建成堆; (2)输出堆顶元素后,怎样调整剩余n-1 个元素,使其成为一个新堆。...

2018-04-01 16:54:42 104

原创 Java-基数排序

1.桶式排序概念 有限个数字m,每个数字的大小都在1与n之间,则我们可以假设有n个桶,遍历m个数字, 将其存入对应的桶中(如数字的值为3,就存入3号桶,桶的值对应存入数字的个数)2.基数排序概念 基于桶式排序,将要排序的数字一位一位的比较,经历多次桶式排序,得出最终的序列 如果要排序的元素可以分成多位,并且每一位都在一个固定的范围内,则可以用这种排序方法,...

2018-03-31 00:02:41 193

原创 Java-希尔排序

1. 基本概念 基本思想:算法先将要排序的一组数按某个增量d(n/2,n为要排序数的个数)分成若干组,每组中记录的下标相差d, 对每组中全部元素进行直接插入排序,然后再用一个较小的增量(d/2)对它进行分组,在每组中再进行直接插入排序, 当增量减到1时,进行直接插入排序后,排序完成。2. 算法分析 1、将包含n个元素的数组,分成n/2个数组序列,第一个数据...

2018-03-30 17:34:34 144

原创 Java-归并排序

1.原理/思路 归并排序的设计思路是:将待排序的数组分为两个字数组,分别对它们按同样的方式进行排序,最后将两个有序子数组 归并成一个有序数组。2.分析做法1.将当前序列一分为二,求出分裂点mid = (left + right) / 2;2.对子序列arr[left,mid]递归,进行归并排序,结果放入data[left,mid]中;3.对子序列arr[mid+1,righ...

2018-03-30 00:31:57 146

原创 快速排序(面试必备,多种解法)

1.原理/思路快速排序一般基于递归实现。其思路是这样的:1.选定一个合适的值(理想情况中值最好,但实现中一般使用数组第一个值),称为“枢轴”(pivot)。2.基于这个值,将数组分为两部分,较小的分在左边,较大的分在右边。3.可以肯定,如此一轮下来,这个枢轴的位置一定在最终位置上。4.对两个子数组分别重复上述过程,直到每个数组只有一个元素。5.排序完成。2.分析做法1.附设...

2018-03-29 23:52:02 374

原创 Java-插入排序

1.原理 把n个待排序的元素看成一个有序表和无序表。一开始有序表只包含一个元素,无序表中包含n-1个元素。 排序过程中每次从无序表中取出第一个元素,把它依次与有序表中的元素进行比较。然后把它插入到有序表的适当位置, 形成新的有序表。 通俗的讲:假设第一个元素是有序的,后面的元素往前插入,依次进行比较,小的往前挪,大的往后挪,找到合适的位置插入。 打个形象的比方就是打扑克牌时的摆牌。...

2018-03-29 23:11:50 226

原创 Java-选择排序

1.原理 每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕。 也就是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。2.思路 给定数组:int[] arr={里面n个数据};第1趟排序,在待排序数据arr[1]~arr[n-1]中选出最小的数据, 将它与arr[0]交换;第2趟,在待排序数...

2018-03-29 21:20:48 116

原创 Java-冒泡排序

1.原理比较两个相邻的元素,将值大的元素交换至右端。2.思路依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复第一趟步骤,直至全部排序完成。分析:N个数字要排序完成,总共进行N-1趟排序,每i趟的排序次数为(N...

2018-03-29 20:59:45 214

原创 scheme唤醒外部APP

1. 跳转原理使用 scheme 的方式去实现跳转,先整理一下思路,首先如果要外部能唤醒 App ,那么 App 肯定要先注册一个全局的事件监听吧。然后,应该有一个页面来处理接受事件,然后解析出具体的参数,根据参数跳转具体的页面,就是这么简单。2. 目标APP注册这里需要使用到 Android Activity中的 <intent-filter> ,现在可以...

2018-03-17 20:51:19 2867

原创 HTTPS单双向验证

Https单向和双向认证

2018-03-15 10:56:37 266

原创 android原生与js互调

1.初始化1.布局中添加webview控件2.让webview支持jswebView.getSettings().setJavaScriptEnabled(true);3.加载网页webView.loadUrl(url);4.让webview加载网页id_webview.setWebChromeClient(new WebChromeClient());2.原

2018-01-19 22:30:13 4562

原创 内存优化小结

内存优化小结

2017-11-21 14:49:53 614

原创 图片压缩小结

图片压缩小结

2017-11-17 16:46:49 288

原创 Dagger2+Rxjava2+Retrofit+MVP小案例

Dagger2+Rxjava2+Retrofit+MVP小案例

2017-11-01 20:20:18 725

原创 Dragger2使用

dragger2简单使用

2017-10-27 14:39:02 947

原创 Android Design Support Library使用

1. 添加依赖compile 'com.android.support:design:25.1.1'2. Snackbar介绍SnackBar通过在屏幕底部展示简洁的信息,为一个操作提供了一个轻量级的反馈,并且在Snackbar中还可以包含一个操作,在同一时间内,仅且只能显示一个 Snackbar,它的显示依赖于UI,不像Toast那样可以脱离应用显示。它的用法和Toast很相似

2017-10-24 19:37:03 532

原创 MVVM简单例子

概述 MVVM是一种架构模式,而DataBinding是一个实现数据和UI绑定的框架,是构建MVVM模式的一个工具。

2017-10-22 23:02:00 2453

原创 DataBinding使用介绍

DataBinding一些使用介绍

2017-10-22 21:50:20 379

原创 Rxjava2 Retrofit2 和 mvp再封装

这个框架还是挺好用的,不过我技术比较渣,只能封装成这样了,望大牛指点。

2017-10-18 22:02:48 484

原创 App首页常见底部Path按钮(一分钟学会使用)

虽然说App底部Path按钮显示使用越来越少见,不过因为项目需要可以写写

2017-10-14 22:37:55 2957

原创 仿微信朋友圈拍照上传

模仿微信朋友圈发布动态,输入文字支持文字多少高度自增,有一个最小输入框高度,输入文字有限制,不过这些都很easy!

2017-10-12 22:23:09 2247

原创 常用测量工具使用(五分钟学会使用)

尺子和圆环工具都是自定义的,不过都是网上找的,自己改吧改吧项目主要技术点直尺工具的使用 圆环工具的使用

2017-10-11 22:03:21 2382

原创 基于七牛播放器的直播

这个播放器是用的七牛的播放器,直播一般都是需要后台先推流,然后根据后台给的播放地址开始直播,我这里只是一个演示,自己在网上找了一个地址,可以直接播放。

2017-10-10 22:31:11 1818 1

原创 仿小米计步折线图

项目用到的技术点mvp简单应用自定义控件使用1. ScrollView的自定义 因为我们需要的是折线图可以左右滑动,但是我们需要实时计算滑动距离,所以需要自己定义,代码比较简单/* * ScrollView并没有实现滚动监听,所以我们必须自行实现对ScrollView的监听, * 我们很自然的想到在onTouchEvent()方法中实现对滚动横轴进行监听 */public clas

2017-10-01 20:06:53 942

原创 基于VideoView的自定义控制面板的视频播放器

项目用到的技术点和亮点VideoView封装视频播放工具类自定义视频控制面板手势识别器的使用1. VideoView封装视频播放工具类 视频播放这些其实都挺简单的,VideoView这个类都提供了相应方法,详细见代码 代码都比较简单,不过需要注意的是要在主线程中更新视频面板的UI信息。/***************************************************

2017-09-23 22:19:41 3434 2

原创 语音播放与录音 (五分钟学会用 非常全面)

项目用到的技术点和亮点语音录音 (单个和列表)语音播放(单个和列表)语音录音封装语音播放器封装语音列表顺序播放语音列表单个播放 复用问题处理因为安装原生录音不能录mp3格式文件 而mp3格式是安卓和ios公用的,所以我们需要的是能直接录取mp3文件或者录完的格式转成mp3格式 下面添加这个库 能直接录mp3文件,我觉得是最方便的 compile ‘com.czt.mp3recor

2017-09-19 23:53:00 5362

原创 电话,手机,微信账号,邮箱正则表达式校验

正则表达式用好了真的挺强大手机号校验电话校验邮箱校验微信账号校验1. 手机号校验 /** * 校验规则: * 手机号为11位 * 首位只能为1 * 第二位只能是3-9数字 * 后面9位可以是任意数字 * @param phoneNum * @return */ public boolean che

2017-08-11 15:14:26 3709

原创 RecycleView的优雅使用

recycleView出来也有一段时间了,虽然说也存在一些缺点和不足,但是总的来说是比listView强大很多,说说recycleview的优点吧集成了ListView和GridView的所有功能,还支持瀑布流功能支持条目插入,删除动画,移动动画支持拖拽排序,侧滑删除,实现比较简单封装了viewholder的回收复用通过布局管理器就能控制列表的横纵向局部刷新方便1. RecycleVi

2017-08-03 15:50:00 491

原创 RxJava+Retrofit+okhttp+mvp+butterknife实现的简易开源项目

首先介绍下该项目用到的技术点和亮点(大神请绕道,小弟菜鸡)1. Rxjava+Retrofit+okhttp搭建的网络框架2. mvp设计模式3. butterknife注解方式查找控件,减少findViewById冗余代码4. Glide图片加载框架5. Recyclerview结合SwipeRefreshLayout实现列表和下拉刷新6. 封装了ListView和GridView,Re

2017-02-12 22:19:00 3738 5

原创 数据结构之链表实现

分析:链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)。单链表是链表中结构最简单的。一个单链表的节点(Node)分为两个部分,一个是数据域,一个是节点域。双向链表可以从两个方向遍历1. 单向链表1)定义一个节点class Node<E> { ...

2018-08-28 22:37:58 417

原创 数据结构之栈和队列的实现

1. 分析:1. 栈的特点是先进后出2. 栈就好比一个箱子,先放进去的东西,被压在了箱子底部,需要上面的东西拿出来之后下面的东西才能拿出来。3. 队列的特点是先入先出4. 队列就好比排队买票,先排队的先买票,我可不会给你插队的5. 队列(Queue)是限定只能在一端插入、另一端删除的线性表。允许删除的一端叫做队头(front),允许插入的一端叫做队尾(rear),没有元素的队列称为“空...

2018-08-28 22:08:32 246

原创 数据结构之可变长度数组-仿ArrayList实现

分析:1. 实现一个能自动扩容的Array,基于数组实现2. 有增删改查操作3. 类似一个Arraylist结合,支持范型1.构造函数private E[] mDatas;private int size;public Array(int capacity){ mDatas = (E[]) new Object[capacity]; size = 0...

2018-08-28 21:36:11 434

原创 自定义View系列之源代码下载

1. 自定义View系列自定义View实战之开关按钮实现自定义View实战之仿土豆Loading实现自定义View实战之渐变,可拨动,带动画圆环控件实现自定义View实战之饼状图效果实现自定义View实战之仿QQ小红点实现自定义View实战之仿雷达蜘蛛网实现自定义View之钟表盘实现2. 自定义ViewGroup系列自定义ViewGroup之自定义布局的实现...

2018-07-22 17:39:13 324

原创 自定义ViewGroup之游标卡尺的实现

效果图预览 1. 分析1. 游标卡尺嘛首先得绘制一个尺子吧2. 有了尺子不得绘制刻度线3. 绘制具体刻度值4. 还要绘制能拨动的按钮,不然怎么叫游标卡尺5. 拨动尺子的时候应该是能实时看到数据2. 技术实现原理1. 尺子组成是一个长长的进度条加上带刻度线和刻度值的数据2. 进度条可以用canvas.drawRect画一个矩形3. 刻度线和刻度值分别用canvas...

2018-07-11 23:11:58 2267

原创 自定义ViewGroup之仿奥运五环的实现

图片预览 1. 分析和实现原理1. 自定义一个圆环2. 自定义ViewGroup,然后添加圆环3. onMeasue和onLayout处理4. 绘制文字2. 绘制圆环//平移坐标系到中心点canvas.translate(mCenterX,mCenterY);mPaint.setColor(mRingColor);//两种思路 画圆 或者画圆环canvas...

2018-07-11 22:22:09 405

原创 自定义ViewGroup之流式布局的实现

效果图预览1. 分析1. 流式布局就是一行可能有多个控件超过一行自动换行 2. 在onMeasure中计算子控件的宽度,如果子控件的宽度已经超过父控件的宽度了就自动换行,高度累加。3. onLayout中控制每一个子控件的左上右下的布局2. onMeasure处理 //记录每一行的宽度,width不断取最大宽度但是不能大于行的宽度 int lineWidth = 0;...

2018-07-11 21:58:48 490

原创 自定义ViewGroup之自定义布局的实现

图片预览 1. 分析1. 自定义简易FrameLayout 分别左上,右上,左下,右下4个子View2. 自定义简易LinearLayout,实现横向和纵向布局3. 自定义简易RelativeLayout,实现layout_alignParentXXX方法2. 实现原理1. 自定义ViewGroup主要是复写onMeasure测量每一个子View的宽高,复写onLayo...

2018-07-11 21:33:30 3444 1

自定义View系列源代码

自定义圆环,钟表,饼状图,雷达蜘蛛网,流式布局游标卡尺

2018-07-22

scheme实现唤醒外部app

scheme方式实现唤醒外部app 支持webview,浏览器链接地址 支持app唤醒目标app

2018-03-17

android原生与js互调

android原生与js互调 android原生与js互调 android原生与js互调

2018-01-19

Java设计模式代码

Java 设计模式例子 Java 设计模式例子 Java 设计模式例子

2018-01-02

MVVM简单例子

MVVM简单例子 MVVM简单例子 MVVM简单例子 MVVM简单例子

2017-10-23

App首页常见底部Path按钮

虽然说App底部Path按钮显示使用越来越少见,不过因为项目需要可以写写

2017-10-14

仿微信朋友圈 输入框支持自适应高度

模仿微信朋友圈发布动态,输入文字支持文字多少高度自增,有一个最小输入框高度,输入文字有限制,不过这些都很easy!

2017-10-13

仿微信朋友圈上传图片

模仿微信朋友圈发布动态,输入文字支持文字多少高度自增,有一个最小输入框高度,输入文字有限制

2017-10-13

常用测量工具

尺子和圆环工具都是自定义的,不过都是网上找的,自己改吧改吧

2017-10-12

基于七牛的视频直播

这个播放器是用的七牛的播放器,直播一般都是需要后台先推流,然后根据后台给的播放地址开始直播,我这里只是一个演示,自己在网上找了一个地址,可以直接播放。

2017-10-10

仿小米运动折线图

仿小米运动折线图 仿小米运动折线图 仿小米运动折线图 重要事情说三遍

2017-10-01

仿小米折线图

自定义的仿小米运动的折线图 自定义的仿小米运动的折线图 自定义的仿小米运动的折线图 重要事情说三遍!!!

2017-10-01

原生自己定义的视频播放器

原生自己定义的视频播放器 基于VideoView 自定义控制面板 手势识别器 进度调节 亮度调节 声音大小调节 其实第三方Vitamio实现效果更好 不过能自己写的东西为何不自己写

2017-09-24

基于VideoView的自定义控制面板的视频播放器

1. VideoView封装视频播放工具类 2. 自定义视频控制面板 3. 手势识别器的使用 视频播放这些其实都挺简单的,VideoView这个类都提供了相应方法,详细见代码 代码都比较简单,不过需要注意的是要在主线程中更新视频面板的UI信息

2017-09-23

语音录制与播放 史上最全

语音录音 播放语音 单个多个列表录音 顺序播放 1. 语音录音 (单个和列表) 2. 语音播放(单个和列表) 3. 语音录音封装 4. 语音播放器封装 5. 语音列表顺序播放 6. 语音列表单个播放 复用问题处理

2017-09-19

Rxjava+Retrofit+okhttp+mvp实现的开源小项目

Rx,Retrofit,okhttp,mvp,glide,注解实现的开源项目

2017-02-14

登录 mvp小demo

登录 mvp小demo

2017-02-12

定时器使用

定时器使用

2016-11-29

OrmLite实现数据库增删改查操作

OrmLite 数据库操作

2016-10-29

RxJava Retrofit OkHttp Demo

RxJava+Retrofit+Okhttp封装的网络请求框架

2016-10-19

RxJava RetrofitDemo

Rxjava Retrofit 链式请求网络

2016-10-15

RxJavaDemo

RxJava RxAndroid实践练习

2016-10-14

RecyclerView结合SwipeRefreshLayout的使用

RecyclerView的使用 添加删除 事件回调监听 瀑布流

2016-10-13

ExpandableListView结合CheckBox实现单选操作

ExpandableListView结合CheckBox实现单选操作

2016-10-11

Google下拉刷新demo

下拉刷新 工具类 简单 易用

2016-10-11

非常好用非常简单的轮播图框架

非常简单实用的轮播图框架 何必自己造轮子

2016-10-10

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

TA关注的人

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