- 博客(45)
- 资源 (1)
- 收藏
- 关注
原创 一种移动端简单的检测图像中身份证(银行卡)的方式
一种简单的检测图像中身份证(银行卡)的方式客户端检测身份证、银行卡之类的功能应该是很常见的,一般都是采用集成第三方OCR sdk来完成信息的采集。但是如何只是初步识别相机镜头中到底包不包含身份证,然后检测到后自动裁剪身份证卡片区域上传到服务器上,并不需要识别具体信息,这个功能用sdk做的话,显然有些大材小用了(其实就是产品提的奇葩需求)。怎么办?自己动手,丰衣足食。1、提取卡片区域要检测相机的镜头中有没有身份证。首先要把图像中的卡片区域给找出来。只有正确的找到卡片所在区域,才能进一步提取卡片的特征。如
2020-06-13 20:01:51
1708
原创 Java重写hashCode和equals的一般约定
Java重写hashCode和equals的一般约定一、 重写 equals的一般约定二、 重写hashCode一些技巧三、 SampleEffictive Java中第8、9条关于重写eqauls和hashCode的一般通用约定。一、 重写 equals的一般约定自反性,对于任何非null引用x,x.equals(x)必须返回为true;对称性,对于任何非null引用x和y,当且仅当y...
2019-09-11 15:58:11
571
原创 Android自定义View--圆弧百分比View
Android自定义一个环形百分比图项目中有需求,要实现一个环形百分比图,就像这样这还不简单,利用Android Canvas的drawArc方法,绘制每一段圆弧就好了,于是三下五除二就撸出了第一版代码。class PieView1 @JvmOverloads constructor( context: Context, attrs: AttributeSet? = nul...
2019-08-26 21:45:18
694
3
原创 记录NestedScrollView的一个小坑
记录一个NestedScrollView的小坑 需求是这样的要实现上面一个banner,下面是一个TabLayout+Fragment+RecyclerView的布局,然后要求页面上滑时Tab要吸顶,然后列表滚动。这应该是很常见的一个布局了。看到这个需求自然第一时间就想到了NestedScrollView,只需要重写onNestedPreScroll,然后在里面做一下判断,当向下滑动距离小于顶...
2019-08-14 16:19:56
1483
2
原创 Android自定义View-画一个Chrome浏览器Logo
画一个Chrome浏览器Logo一 准备工作自定义View如题,用自定义View来绘制一个Chrome浏览器的Logo,就是这个其实这个就是最终完成的作品,看上去还不错吧。这篇文章就手把手教你怎么用自定义View实现Chrome浏览器的Logo的绘制。一 准备工作现在网上下载一张谷歌浏览器的图标备用,然后用PS或者其他的颜色吸管工具,把Logo的颜色吸取到。这里为了简单,我们就把Logo...
2019-07-13 01:22:36
555
原创 Android中获取屏幕信息的几种方式
Android中获取屏幕信息的几种方式方案一方案二方案三Note:以下方案中的this均指Activity。方案一 WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE); //windows manager可以通过getSystemService获取,也可以在Activi...
2019-07-10 23:18:18
4121
原创 Android SparseArray和LruCache
Android SparseArray和LruCache一 HashMap二 SparseArray三 LinkedHashMap四 LruCache一 HashMapHashMap是数组和链表的结合体,被称为链表散列.HashMap插入的时候,1、先根据 key 计算出 hashcode static final int hash(Object key) { ...
2019-07-10 23:10:54
257
原创 数据结构之二叉搜索树(Binary Search-Tree)
二叉搜索树1、定义2、查找3、插入4、删除1、定义二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。2、查找3、插入4、删除...
2019-07-03 22:47:33
385
原创 Android Animation和Animator之Interpolator
Interpolator插值器LinearInterpolatorAccelerateInterpolatorAccelerateDecelerateInterpolatorBounceInterpolatorOvershootInterpolatorAnticipateOvershootInterpolatorCycleInterpolatorPathInterpolator插值器先上图吸引...
2019-07-02 00:21:36
611
原创 自定义View没有调用onDraw
文章目录自定义View没有调用onDraw总结一下自定义View没有调用onDraw 我们在自定义View的时候有时会发现,重写的onDraw没有生被调用?这是为什么呢?大概率是因为你的自定义View继承自ViewGroup或者其子类,并只重写了onDraw方法。 原因是ViewGoup以及子类默认关闭自动渲染,onDraw()方法不会被调用;View默认开启主动渲染, onDraw()...
2019-07-01 17:54:52
1304
原创 Android Animation和Animator
Android Animation和Animator一、一个很蠢的Bug二、Animation2.1 TranslateAnimation平移动画2.2 RotateAnimation旋转动画2.3 ScaleAnimation缩放动画2.4 AlphaAnimation透明度动画三、Animator前言:写这一篇文章的目的是记录一个自己犯下的一个蠢萌的问题,顺便复习一下Animation和A...
2019-06-30 00:43:34
1812
原创 Android SpannableString的用法
Android SpannableStringSpannableString用法ForegroundColorSpanBackgroundColorSpanRelativeSizeSpanAbsoluteSizeSpanStrikethroughSpanUnderlineSpanClickableSpanURLSpanImageSpanStyleSpanSubscriptSpanSuperscri...
2019-06-28 18:57:15
509
原创 ViewsFlipper--最易用的的仿淘宝、京东消息轮播控件
ViewsFlipper--最易用的的仿淘宝、京东消息轮播控件1-Demo2-如何使用3-API说明4-实现思路5-未来的改进方向1-Demo2-如何使用在XML中设置如下。其中flipDuration表示动画时长, flipInterval是轮播间隔时间,flipInterval一定要大于flipDuration,否则会抛出异常。 <fresh.lee.viewsflipp...
2019-06-28 11:57:00
1326
4
原创 数据结构之二叉树(Binary-Tree)
二叉树1、二叉树构建2、二叉树遍历2.1 前序遍历2.2 中序遍历2.3 后序遍历2.4 层序遍历3 源码 二叉树应该是数据结构中最基本的数据类型了,由二叉树又延伸出二叉搜索树(排序二叉树,BInary Search Tree)、平衡二叉树(AVL-Tree)、红黑树(Red-Black Tree)等。本篇文章主要讲一下二叉树的构建,以及二叉树的遍历。后续文章会详细讲一下排序二叉树、平衡二叉树...
2019-06-25 00:12:55
393
原创 Algorithm之排序算法
常见算法之排序算法1、冒泡排序(Bubble Sort)2、选择排序(Selection Sort)3、插入排序(Insert Sort)&& 希尔排序(Shell's Sort)4、快速排序(Quick Sort)5、归并排序(Merge Sort)6、基数排序(Radix Sort)7、桶排序(Bucket Sort)8、堆排序(Heap Sort)9、外部排序(Externa...
2019-06-15 00:30:02
633
原创 Java Thread中start()和run()方法的区别
1、run()Thread的run()方法来自于Runnable接口,Thread的子类应该重写该方法,调用run()方法,只是相当于调用一个类中的一个普通方法,会在本线程中执行run()的方法体,不会开启另外一个线程!2、start()执行Thread的start()方法,会开启一个新的线程,在新的线程里面执行run()方法。(If you directly call run() met...
2018-11-29 11:18:37
314
原创 Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null obje
Attempt to invoke virtual method ‘boolean java.lang.String.equals(java.lang.Object)’ on a null object reference记录一个很sb的问题,问题出现原因,在xml文件中的<View xxxx/>不小心写成了<view xxxx/>于是疯狂找问题出在了哪里...
2018-09-29 16:03:19
1427
2
原创 ScrollView嵌套类似NonScrollListView,防止ListView自动获取焦点
问题:在ScrollView嵌套RecyclerView或者NonScrollListView时,RecyclerView或者NonScrollListView总是自动获取焦点,导致进入该页面时显示位置不正确(顶端没有完全显示)解决方案:在ScrollView下面的LinearLayout加上android:descendantFocusability="blocksDescendants"...
2018-09-18 16:17:48
307
原创 android 给ListView的divider设置左右padding
android 给ListView的divider设置左右padding解决方案1、利用inset xml标签,在res/drawable文件夹下新建listview_divider.xml文件<?xml version="1.0" encoding="utf-8"?><inset xmlns:android="http://schemas.android.com...
2018-08-21 17:22:05
1380
原创 Android 下拉回弹BounceScrollView,同时去除EdgeEffect
接上一篇文章, ScrollView有了下拉和上拉的弹性回弹,这个时候发现有时候下拉的时候界面UI会变得很丑,不想让ScrollView下拉怎么办? 简单啊,只需要在下拉到顶部的时候判定一下,然后maxOverScrollY不改动的直接传给super.overScrollBy就可以了。 @Override protected boolean overScrollBy(int d...
2018-08-17 00:03:26
1496
原创 Android 下拉回弹BounceScrollView
Android的ScrollView默认是没有弹性回缩的,不像iOS拉到底部会再向下滑动一段距离然后像弹簧一样回退回来,Android的ScrollView拉到底部就是死板的一下子卡住了,给人很不爽的感觉。然后就想拓展一下ScrollView,让ScrollView在拉到底部或者顶部时能弹性回缩。 于是就先在网上找了一下,好多都是在onTouchEvent做处理,一看就感觉很麻烦,然后就很欣喜的...
2018-08-16 23:20:51
2570
原创 android:给TextView增加类似pressed的自定义状态
最近再写一个需求,就是有一个多种状态的文本,每种状态都对应一个背景色。最初就是用本方法,每次都是代码手动改变TextView的backgroundDrawable,不胜繁琐 。然后就想有没有类似Button的pressed和focus类似的,能不能自定义状态,然后写一个selector,让textView的background能根据状态自动改变。 于是乎就在网上找了一下,功夫不负有心人,还真找到...
2018-08-13 23:15:51
1377
原创 android 消息垂直滚动轮播控件
android 消息垂直滚动轮播控件类似淘宝首页的那种消息垂直滚动的控件,实现也很简单,网上也有很多例子,不过网上大多数的例子都是利用android的原生控件ViewFlipper,这个控件我也用了,最后发现很坑爹,有很多问题。 先说使用ViewFliper遇到的问题。首先一个就是ViewFlipper在手机锁屏然后再开屏之后有时候不再自动滚动,看了ViewFlipper的源码就知道,Vie...
2018-07-21 20:19:31
6572
2
转载 java final和static关键字
java final和static 关键字final可以修饰:属性,方法,类,局部变量(方法中的变量)final修饰的属性的初始化可以在编译期,也可以在运行期,初始化后不能被改变。final修饰的属性跟具体对象有关,在运行期初始化的final属性,不同对象可以有不同的值。final修饰的属性表明是一个常数(创建后不能被修改)。final修饰的方法表示该方法在子类中不能被重写,fin...
2018-07-11 11:05:37
208
原创 Android getRotationMatrix和getOrientation原理
Android中SensorManager.getRotationMatrix和getOrientation函数原理解释
2017-03-09 10:43:17
7118
转载 eclipse c/c++点击运行时提示Program file does not exist
eclipse c/c++点击运行时提示Program file does not exist
2016-07-21 09:21:26
21050
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人