自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 左右两侧两个RecyclerView互相联动,右侧是网格的布局,写出最流畅的列表

概述 最近做项目需要用到两个RecyclerView互相联动的功能,类似美团外卖的点餐列表,不同的是项目用到的右侧是点击分类,要想写出流畅的列表,就一定要考虑得非常的周全,那么左侧一个RecyclerView,右侧一个RecyclerView,尽量减少嵌套,对于如下这种布局我们可以考虑使用Gri...

2018-05-22 23:16:23

阅读数 4053

评论数 10

原创 微信小程序答题页实现——swiper渲染优化

前言 swiper的加载太多问题,网上资料好像没有一个特别明确的,就拿这个答题页,来讲讲我的解决方案 这里实现了如下功能和细节: 保证swiper-item的数量固定,加载大量数据时,大大优化渲染效率 记录上次的位置,页面初次加载不一定非得是第一页,可以是任何页 答题卡选择某一index...

2020-01-13 14:24:08

阅读数 141

评论数 0

原创 《漫画算法》笔记

一 算法概述 算法 一系列程序指令、用于解决特定的运算和逻辑问题 数学中的算法比如求1加到10000的解法,计算机领域算法可以应用在比如运算、查找、排序、最优决策、面试 数据结构 数据的组织、管理、和存储格式、目的是为了高效的访问和修改数据 线性结构:数组、链表、栈、队列、哈希表 树...

2020-01-06 18:29:23

阅读数 20

评论数 0

原创 Flutter text超出一行省略号及Expanded的坑

搞一个这样简单的布局: 就拿第二行来说吧,需要实现地址超出宽度后省略号显示,然后还需要显示一个箭头。 那大体思路就是这样的了: 写完搞定:但是报错:RenderFlex children have non-zero flex but incoming width constraint...

2019-12-26 09:58:41

阅读数 261

评论数 0

原创 flutter TapBar自定义indicator、固定宽度、圆角、改变indicator和text的距离

前言 最近开始搞flutter,然后想去使用TabBar,遇到了一些坑,记录一下。 分析过程 需求是这样: 需要处理这样几个细节: 下划线固定宽度 下划线圆角 下划线和文字的间距 两个文字之间的间距 然后在使用TabBar过程中: 下划线想固定25,indicatorSize...

2019-12-21 16:37:07

阅读数 133

评论数 0

原创 Java四大引用、了解一下。

前言 Java中的引用很多开发者可能都不太清楚具体是什么、我们来总结一下 强引用(Strong Reference) 我们平时最常用的那就是强引用: Object object = new Object(); 只要某个对象与强引用有关联,JVM必定不会回收这个对象,哪怕内存不足,抛出O...

2019-12-12 18:25:47

阅读数 25

评论数 0

原创 匿名内部类访问的局部变量为什么需要用final修饰?

前言 看到标题,有一种很熟悉的感觉,我相信只要有几个月开发经验的人,总会遇到一个问题:匿名内部类访问的局部变量,必须用final修饰,要不然编译不通过。很多人都知道需要加final,但是这是为什么呢? 原因 一句话解释:保持数据的一致性。 基本数据类型:保持值的一致性 引用类型:保持引用...

2019-12-12 16:39:55

阅读数 8

评论数 0

原创 Android 数据库总结

前言 Android的数据库是很方便的,但是很多的时候,Android程序员很少使用数据库,包括我在内,目前在我们的项目中还没用过数据库,但是不常用不代表不需要掌握,我们来大体总结一下 SQLite 给个链接:Android SQLite详解 再给个链接:SQLite常用语句 我自己基于...

2019-12-04 17:49:10

阅读数 18

评论数 0

原创 微信小程序rpx适配误差问题

在开发小程序的时候遇到了两个有关计算view高度发生的问题,解决也花了不少的时间,特此记录一下。 一、计算view高度和实际情况匹配不上 一个列表展开后显示若干卡片,我做了一个展开动画,需要计算总的高度。 // 卡片高度100 上下margin 各为8 height: 110rpx...

2019-11-29 15:52:06

阅读数 14

评论数 0

原创 Serializable和Parcelable总结

前言 Android开发中难免会遇到对象序列化的场景,比如说将对象从一个Activity通过Intent传到另一个Activity,比如说存储到本地等等。大体的总结一下序列化的知识吧。 Serializable 意为“序列化的”意思 什么是序列化 序列化:把对象转换为字节序列的过程...

2019-09-02 18:34:23

阅读数 13

评论数 0

原创 Java文件流使用总结

前言 其实对于刚学Java的人来说,对文件流的概念总是很模糊,我记得我当时就是懵懵懂懂,而且文件流操作伴随着一堆try-catch代码,乱七八糟的,看的头疼。今天来总结一下文件流相关概念吧 简述 Java读写文件流分为两大类:字节流、字符流 字节流:可以处理所有类型的数据,包括音频视...

2019-08-27 18:14:45

阅读数 25

评论数 0

原创 LruCache和DiskLruCache

前言 Android中的三级缓存主要就是内存缓存和硬盘缓存。 Lru(least recently used)意为最近最少使用算法,核心思想就是当缓存满时,会优先淘汰最近最少使用的缓存对象。 LruCache的使用 在Android中可以直接使用LruCache,算法原理是:把最近使...

2019-08-27 15:08:51

阅读数 12

评论数 0

原创 Bitmap内存优化

前言 Android开发中,Bitmap是我们经常会遇到的对象,尤其是在各种图片展示等界面,而且Bitmap的内存也是很大的,如何更好的使用Bitmap,是Android优化不可回避的问题 Bitmap的使用 // bitmap的构造方法参数很多,这是一个给native层调用的方法 ...

2019-08-26 15:30:03

阅读数 25

评论数 0

原创 简单说说Socket

前言 总结一下Socket的基本知识 TCP/IP协议 IP 提供了主机与主机间的通信 TCP 提供了进程与进程间的通信,让我们知道收到的数据是属于哪个进程 为了标识数据属于哪个进程,我们给需要进行TCP通信的进程分配一个唯一的数字来表示它,这个数字就是我们常说的端口号 在通...

2019-08-22 18:27:49

阅读数 15

评论数 0

原创 简单说说Http

前言 总结一下http的一些基础知识 http报文 // 格式大部分分为: // 起始行 // 头部 // 包体 // 注意格式中的空格、回车符、换行符 // 请求报文 <method> <request-url> <vers...

2019-08-21 18:33:54

阅读数 36

评论数 0

原创 自定义View-全新定制自定义View的尺寸

前言 完全自定义View的尺寸以及布局是与之前的不一样的,我们来总结一下 全新定制自定义View的尺寸 // 跟修改已有View的尺寸不一样的是: // 不需要调用super.onMeasure(), 完全自己计算 // onMeasure()中的两个参数是父View传...

2019-08-19 15:25:39

阅读数 39

评论数 0

原创 自定义View-布局基础

前言 自定义View的内容不光有绘制,还有布局,而且绘制是去调用已知的API,而布局就得需要我们去理解它内部的工作原理才能正确的去使用它,我们来总结一下吧 基本原理 // 测量阶段 // 从顶层的根View开始去测量和布局 // 子View的measure()方...

2019-08-16 16:05:22

阅读数 10

评论数 0

原创 自定义View-属性动画Property Animation进阶篇

前言 总结一下稍稍复杂的属性动画吧 TypeEvaluator 当我们需要用其他类型来做属性动画的时候,就需要用到TypeEvaluator ArgbEvaluator // 使用方法 ObjectAnimator animator = ObjectAnimator.ofInt...

2019-08-15 09:52:58

阅读数 26

评论数 0

原创 自定义View-属性动画Property Animation上手篇

前言 动画分为好几类,逐帧动画和补间动画就不说了,重点看一下属性动画吧 ViewPropertyAnimator // 使用方法 view.animate().tranlationX(500); // View中的比如setTranslationX()这些方法并没有动画 // 而vi...

2019-08-14 15:22:41

阅读数 16

评论数 0

原创 自定义View-绘制顺序

前言 Android里面的绘制都是按顺序的,先绘制的会被后绘制的盖住。我们要学会实现自己所需要的遮盖关系 super.onDraw() // 直接继承View的话,是无所谓的,因为onDraw()方法是空实现 // 继承某一个已知的控件,就有分别了 // super.onDr...

2019-08-13 16:48:17

阅读数 14

评论数 0

原创 自定义View-Canvas对绘制的辅助clipXXX()和Matrix

前言 裁剪和几何变换,说实话平时用到的也不多,但确实也是很有意思的内容,一起来看一下吧 范围裁切 // 裁剪一个矩形 canvas.save(); canvas.clipRect(left, top, right, bottom); canvas.drawBitmap(bitmap, ...

2019-08-13 15:27:03

阅读数 85

评论数 0

原创 自定义View-文字绘制

前言 文字绘制其实内容太细,而且可能不常用,确实我工作这么久,没用到过几次,这里就快速总结一下API,做下笔记吧。 绘制文字的方式: // 最基本的方法drawText(), 注意很重要的一点,x,y的坐标是指文字左下角的坐标 canvas.drawText(text, x, y, p...

2019-08-07 09:50:58

阅读数 24

评论数 0

原创 自定义View-Paint

前言 对于Paint,我们一般都知道一些简单的方法,比如setColor(),setStyle()等,其实它还有很多强大的功能,我们来总结一下吧 Paint的API大致分为4类: 颜色 效果 drawText()相关 初始化 颜色 // 1、基本颜色 canvas.drawC...

2019-08-02 18:00:33

阅读数 20

评论数 0

原创 RecyclerView中的EditText被软键盘遮挡的解决办法

问题来源 最近写发布器遇到一个恶心问题:在RecyclerView中的EditText被软键盘遮挡,这玩意儿弄了一上午 单纯的一个Item中只有一个EditText,弹起软键盘是完全没问题的 但是我的一个Item中上面是ImageView,下面是一个EditText,像这样: ...

2019-07-31 17:41:18

阅读数 712

评论数 4

原创 解决RecyclerView中多个EditText无法长按复制粘贴的问题

不搞长篇原理大论,亲测简单有效: // 重写adapter的此方法,然后调用viewholder中的edittext的setEanble方法 @Override public void onViewAttachedToWindow(SimpleViewHolder<PostPub...

2019-07-30 16:33:26

阅读数 26

评论数 0

原创 自定义View-绘制基础

前言 在Android中很重要的就是UI,我们来简单总结一下自定义View中的绘制问题 重写绘制方法:最常用的就是onDraw() 绘制的关键是Canvas(画布) 可以使用不同绘制方法来控制遮盖关系 // 先上一段简单的代码: @Override...

2019-07-29 17:40:25

阅读数 32

评论数 0

原创 Android的动画简单总结

前言 动画的开发是Android中很常用的知识 有不少人还停留在“网上随便找一些动画代码,能实现就好,但是不知道是到底是什么动画”的阶段 我们就来总结一下动画,从而去更好的掌握动画 动画主要分为两类: View动画(视图动画):逐帧动画、补间动画,仅对View进行变换 属性动画:不仅改变...

2019-07-25 14:53:04

阅读数 22

评论数 0

原创 简单的自定义View总结

自定义View在Android中是很重要的,总结一些简单自定义View的知识点吧 最简单用的就是在布局中定义属性: 1、我们需要再style.xml文件中生命我们的自定义属性: <resources> <declare-styleable name="...

2019-07-25 11:43:02

阅读数 20

评论数 0

原创 Activity四大组件总结

Activity Activity的生命周期:onCreate()->onStart()->onResume()->onPause()->onStop()->onDestory() 来一张经典图: Activity启动先执行onCreate()、onStar...

2019-06-29 18:20:04

阅读数 75

评论数 0

原创 Fragment懒加载实现以及遇到的坑

最近做项目用到了懒加载,记录一下吧 ViewPager+Fragment的组合,用了无数遍了吧,尤其在有很多个Fragment的情况下,我们没必要把每一个Fragment都加载出来。虽然预加载可以提升一些体验,但是把我们没有看到的页面数据也加载了,大大降低了性能,浪费初始化资源。 什么是懒加载...

2019-06-25 15:35:38

阅读数 66

评论数 0

原创 Java编程思想读书笔记——第十三章:字符串

第十二章 字符串 字符串是计算机程序最常见的行为,毋庸置疑 13.1 不可变String String对象是不可变的,String类中看起来会修改String值的方法,每一个都创建了一个全新的对象 // 这是一段简易代码 String q = "哈哈哈"; ...

2019-05-24 17:28:18

阅读数 77

评论数 0

原创 Java编程思想读书笔记——第十二章:通过异常处理错误

第十二章 通过异常处理错误 Java基本理念:结构不佳的代码不能运行 编译期间并不能找出所有错误,余下的问题必须在运行期间解决 12.1 概念 将执行过程中做什么事和出了问题怎么办的代码相分离 12.2 基本异常 抛出异常后 在堆上new一个异常对象 当前的执行路径被终止...

2019-05-16 00:16:52

阅读数 33

评论数 0

原创 Java编程思想读书笔记——第十一章:持有对象

第十一章 持有对象 Java类库提供了一套相当完整的容器来解决这个问题,基本类型是List、Set、Queue、Map 11.1 泛型和类型安全的容器 我们常用的ArrayList,一般使用泛型指定类型,如果不指定,那么就都是Object类,直接上练习 练习1:创建一个新类Gerbi...

2019-03-12 23:41:50

阅读数 144

评论数 0

原创 Android CardView使用clipChildren属性无效

控件超出父布局的这么一个需求 但是发现如果在CardView中使用此方法无效 解决方法: //在CardView和CardView的父布局中使用: android:clipChildren="false" // 在代码中设置,但是只支持5.0以上 if (Bui...

2019-03-08 15:01:45

阅读数 520

评论数 0

原创 Java编程思想读书笔记——第十章:内部类

第十章 内部类 将一个类的定义放在另一个类的内部,这就是内部类 内部类和组合是完全不同的概念,内部类了解外部类 10.1 创建内部类 创建就好,好像没啥可说的,直接来上练习: 练习1:(1)编写一个名为Outer的类,它包含一个名为Inner的类。在Outer中添加一个方法,它返回...

2019-02-21 23:52:00

阅读数 408

评论数 0

原创 产品发布流程总结

产品发布流程 无论我们在什么样的公司,一个合格规范的流程是很重要的。我们都知道现在的情况是,大公司重流程,小公司对流程很不重视,那么大体总结一下产品发布的基本流程: 首先,一个或者多个产品经理,去确定需求,需求定下来之后,出原型图和需求文档 项目组的全体成员参与需求评审会议,将最终的需求定下...

2019-02-03 01:26:58

阅读数 307

评论数 0

原创 手写死锁

死锁的概念:多个线程互相持有对方所需要的资源,导致这些线程处于等待状态。 死锁产生的必要条件: 互斥:一个资源只允许一个线程访问(厕所一个坑只能一个人上厕所) 占有且等待:一个线程占有资源,同时还有其他线程未得到满足,正在等待其他线程释放该资源(厕所坑里进了一个人,外面还有一个人等着里面的人...

2019-01-30 15:20:25

阅读数 217

评论数 0

原创 手写生产者—消费者模式

生产者—消费者模式是一个很好的并发的问题 先说几个基础的点: wait(), notify(), notifyAll()都是Object的函数 notify()仅仅通知一个线程,并且不知道通知哪一个线程,而notifyAll()会通知所有等待中的线程 在多线程共享的那个Object中使用w...

2019-01-23 17:44:17

阅读数 114

评论数 0

原创 使用Dialog状态栏变黑问题

在使用Dialog的时候遇到状态栏无故变黑的问题 Window window = getWindow(); WindowManager.LayoutParams lp = window.getAttributes(); lp.width = WindowManager.LayoutParams...

2019-01-23 15:04:45

阅读数 1503

评论数 0

原创 算法——浅谈冒泡排序

冒泡排序(BubbleSort) 冒泡排序是最简单不过的了,记得在大学的时候最初学的就是冒泡排序,今天总结一下这个是程序员就会写的冒泡排序: 冒泡冒泡,想象一下冒泡,比如说我们从小到大排序,肯定最大的往上冒,所以说我们通过for循环第一趟排序,那么最右侧一定是一个最大的,那么第一趟比较完成后,...

2019-01-11 17:49:35

阅读数 47

评论数 0

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