自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(209)
  • 资源 (9)
  • 收藏
  • 关注

原创 玩转Kotlin--彻底弄懂Lambda和高阶函数

3语法3规定Lambda表达式语法: 1 lambda 表达式总是被大括号括着; 2 其参数(如果有的话)在 -> 之前声明(参数类型可以省略); 3 函数体(如果存在的话)在 -> 后面在 Kotlin 中有一个约定,如果函数的最后一个参数是一个函数,并且你传递一个 lambda 表达式作为相应的参数,你可以在圆括号之外指定它if the last parameter of a

2017-10-16 22:48:54 16752 6

原创 GreenDao保存List<String>类型数据

**在上一章中介绍了如何简单使用GreenDao,并创建了User类来保存一些简单的数据。 但是假如在User中有一种List类型的数据也需要保存到数据库中,该如何处理呢??**答案很简单,可以转换一下思路,遍历List数据,然后将所有的String对象都append到一个StringBuilder中,然后保存在数据库中即可。 事实上,GreenDao已经为我们考虑到了这种情况,因此才有了 Pr

2017-06-21 11:12:17 11455 6

原创 自定义ViewGroup实现多个单页面上下滑动效果

阅读过自定义ViewGroup实现仿淘宝的商品详情页的童鞋,应该都了解了ViewGroup中onMeasure、onLayout、onTouchEvent等相关方法的使用。在介绍仿淘宝商品详情页时,我们提到过现在网上很多实现方法是使用ScrollView嵌套两个ScrollView。而我也提到过这样实现的缺陷,很难进行扩展。而使用自定义ViewGroup的话就可以根据自己的需要扩展功能了。今天我们介

2016-12-30 16:33:59 1822 9

原创 You need to use a Theme.AppCompat theme (or descendant) with this activity解决方法

当我的MainActivity继承自v7包中的ActionBarActivity或者AppCompatActivity时,如果在style.xml文件中指定MainActivity所使用的样式如下: @color/colorPrimary @color/colorPrimaryDark

2016-03-25 23:40:53 28779 5

原创 Android在ScrollView中嵌套ViewPager以及ListView的可能出现的问题以及解决方案

我们在实际开发一个款Android App时,经常会遇到如下图所示的需求:从上面gif图片可以看出,在一个页面的最上方有一个首页轮播的效果,在首页轮播的下方又会有一个ListView或者是GridView来显示我们的网络请求数据。对于上述需求,我们很容易想到先使用ViewPager的来实现首页轮播的效果,然后在下方添加一个ListView或者GridView并将数据通过自定

2016-03-17 18:14:58 9334 16

原创 自定义ViewGroup实现仿淘宝的商品详情页

最近公司在新版本上有一个需要, 要在首页添加一个滑动效果, 具体就是仿照X宝的商品详情页, 拉到页面底部时有一个粘滞效果, 如下图 X东的商品详情页,如果用户继续向上拉的话就进入商品图文描述界面:刚开始想拿来主义,直接从网上找个现成的demo来用, 但是网上无一例外的答案都特别统一: 几乎全部是ScrollView中再套两个ScrollView,或者是一个LinearLay

2015-07-23 14:28:45 32732 74

原创 每每聊到线程Thread

进程和线程进程所谓计算机程序 Program,其实就是通过执行一系列指令来完成某一个任务。当你启动一个程序时,操作系统(OS)会将其加载到内存中,并在内存中申请一块固定地址的命名空间(address space),并在此命名空间内执行相关指令。聪明人应该已经听出来了,这不就是"进程 Process" 嘛。没有错,某种程度上我们确实可以将进程理解为一个程序的。线程线程就是在进程内部,一系列可执行的独...

2023-06-01 22:24:08 1108

原创 Vsync 来龙去脉

假如没有Vsync之前在Android 上屏流水账和不同视角下的Android上屏 中已经介绍过View的绘制会经过Measure、Layout、Draw这3个阶段,而这3个阶段的工作都是由CPU来负责包完成。另外CPU还会负责一些用户输入、View动画等事件,这部分工作都是在UI线程中完成。当CPU绘制完成之后,会在RederThread线程中将这部分数据提交给G...

2022-05-26 23:17:22 1908

原创 不同视角下的Android上屏

在电影《金刚川》中,导演使用了一种特殊的拍摄手法---对同一时间维度上的事情进行不同视角的重复播放。虽然有拼凑时长的嫌疑,但实际上,这一手法在艺术体系中有名有据,叫做「复调叙事」。看似是重复,实则是力度更深的铭记,希望观众们不要忘记惨烈的过去。在Android 上屏流水账这篇文章中介绍了Android View显示到屏幕上所经历的流程。这篇文章通过「复调叙事」这一手法...

2022-05-21 13:38:37 421

原创 Android使用SSL自签名证书

一般情况下公司都是通过CA机构来购买SSL证书,但是这种证书费用普遍比较贵,所以在debug环境下可以考虑使用自签名证书。这篇内容将介绍Android如何使用自签名证书,主要分为以下4个步...

2021-11-08 21:35:10 5278

原创 做个人吧,写点Testable代码,好吗!

标题所说的Testable实际上指的是Unit Testable,也就是可单元测试,或者是易书写单元测试的代码。注:不知道单元测试(Unit Test)是什么的,请自行Google需求解析...

2021-10-10 23:40:41 478

原创 Thread疾风传·螺旋丸还是须佐能乎

在上一篇的路漫漫其修远兮,吾将上下而求“锁”中,我向大侠请教了几个线程相关的题目。可是很遗憾,始终没有寻得自己想要的结果。有不少小伙伴在看了文章之后,也对文中提到的问题表现出了一定的兴...

2021-03-20 22:28:30 298

原创 路漫漫其修远兮,吾将上下而求“锁”​

日前面试一精神小伙,观其神态从容、举止自信。料其必学富五车,才高八斗。问其乐观锁、悲观锁、可重入锁、乃至读写锁,无不妙语连珠、出口成章。心生疑惑,欲以考题难之。一则辨其真伪,明足以察秋毫之...

2021-03-17 23:22:17 215

原创 工作中遇到的疑难问题--"闪退"

最近在实现一个自动化测试功能时,经常碰到"闪退"现象。这里总结下问题结果的整个过程。分析日志起初怀疑只是项目中的某段代码逻辑有问题,导致系统crash。所以只要找出cras...

2021-03-09 22:38:35 441

原创 Java的foreach有啥不同

陈述事实现象foreach循环从JDK 5开始,Java可以使用foreach对数组或者实现了Iterator的集合进行遍历。对上述代码进行反编译,可以得出如下字节码:可以看出,在编译时期...

2021-02-25 23:05:14 165

原创 OkHttp框架中Proxy的那点事儿(一)

在OkHttp框架中,已经集成好了网络请求代理Proxy的功能,我们只需要调用如下API,即可实现使用代理地址访问目标服务器:OkHttpClient.Builder builder =...

2020-12-29 23:50:00 7066 3

原创 OkHttp与HTTP协议

OkHttp,从名字也能感觉到这套框架似乎与http协议有着千丝万缕的关系。事实上也确实如此,OkHttp所做的各种操作都是建立在http协议基础之上的。因此在理解并自己手写OkHttp...

2020-12-10 23:01:30 2112 1

原创 Java中合理使用局部变量替代成员变量、静态变量

故事起因一个Java类中可以存在多种形式的变量,可以是最一般的成员变量、或静态变量、或临时变量。如下图:publicclassVariableDemo{staticin...

2020-10-11 21:50:39 773

原创 一个 int 值,只能表示一个数值吗?

正常情况下一个 int 就是代表一个数值,或者一种状态。但是Google和Oracle的工程师似乎特别喜欢用1个 int 类型来表示多种状态,源码中到处都能看到这种使用方式。线程池Thr...

2020-06-06 18:16:25 1579 1

原创 GreenDao在Android项目中的实践总结

文章目录:1 GreenDao 基本使用2 GreenDao 多表之间的关联3 GreenDao 保存List类型数据4 GreenDao 版本升级基本使用1 引入GreenDao在p...

2020-05-29 20:26:00 380

原创 作为一个32岁工程师,我已不再焦虑。你呢?

故事总得有个开头"嗡~嗡!"手机震动了两声,应该是一条短信通知,顺手拿起手机撇了一眼What ? 眼睛一闭一睁《Android进阶课程》已经更新到第18篇了!人生第326...

2020-05-25 12:03:44 1161 1

原创 阿里3轮面试都问了RecyclerView

阿里面试总共4轮,其中有3轮面试都问到了RecyclerView的问题。面试的点各不相同,有原理、嵌套问题、有缓存实现,但是最终都是殊途同归,所有的问题都汇集在如何对RecyclerV...

2020-05-16 22:01:56 1039

原创 RecyclerView.ItemAnimator实现动画效果

Item动画来源在RecyclerView的源码中,有一个ItemHolderInfo.java。其源码如下:ItemHolderInfo主要是用来表示RecyclerView中item...

2020-05-12 23:49:05 1525

原创 RecyclerView.ItemAnimator源码解析

RecyclerView动画的核心执行类ItemAnimator,当继承一个ItemAnimator时,有如下几个方法需要被实现:通过实现以上几个接口方法就能实现不同的动画效果,以上几个...

2020-05-08 23:05:17 456

原创 Java 线程池实践出真知

线程池是Java工程师实现并发编程的一大利器,能够有效限制系统中执行线程的数量,重复利用已创建线程,减少资源浪费。但是!线程池真正的难点在于实际使用阶段,主要有以下几个痛点:如何合理配置...

2020-05-05 21:48:47 528

原创 漫画Java线程池的工作机制

线程池结构图线程池是一套围绕着核心线程、非核心线程、等待队列的任务调度框架。默认情况,线程池主要结构如下:corePoolSize核心线程数当前线程池中运行的线程数量还没有达到 core...

2020-04-28 01:24:20 308

原创 Java命令行工具之 jstat

jstat 是JDK中提供的一个命令行工具,主要用来打印JVM 性能数据相关的统计数据。主要包含以下几个方面:垃圾回收(GC)方面数据编译(Compilation)相关数据类加载信息(C...

2020-04-24 17:07:26 639

原创 彻底弄懂Lambda和高阶函数

Lambda是什么简单来讲,Lambda是一种函数的表示方式(言外之意也就是说一个Lambda表达式等于一个函数)。更确切的说:Lambda是一个未声明的函数,会以表达式的形式传递。为什...

2020-04-20 23:27:35 938

原创 不要让你的Java对象"逃逸"了!

经常会有面试官会问一个问题:Java中的对象都是在"堆"中创建吗?然后跟求职者大谈特谈"逃逸分析",说通过"逃逸分析",JVM会将实例对象...

2020-04-19 22:30:31 345

原创 Java虚拟机究竟是如何处理SoftReference的

但凡是写过几行java代码的,都知道java中的引用分为4种:强引用、软引用、弱引用、虚引用。其中广大开发者最热衷的莫过于 软引用 了。因为它能保证在内存足够时,我们创建的对象完好的存活在内存中。同时当内存不足时,则将软引用指向的对象交由GC回收。抛个砖但是Java工程师不能认为SoftReference就是万无一失的保险锁,并且肆无忌惮的使用。被 软引用 对象关联的对象会自动被垃圾回收器...

2020-04-09 18:09:21 428

原创 如何在Flutter中使用GraphQL

什么是GraphQL这篇文章主要是看一下如何在Flutter项目中使用GraphQL,如果不清楚GraphQL是什么,建议先看下官网对其介绍:https://graphql.org/ht...

2019-11-23 23:59:03 881

原创 如何在Flutter项目中使用GraphQL

什么是GraphQL这篇文章主要是看一下如何在Flutter项目中使用GraphQL,如果不清楚GraphQL是什么,建议先看下官网对其介绍:https://graphql.org/https://www.howtographql.comGraphQL体验先介绍一个免费试用GraphQL语法的网站: https://countries.trevorblades.com/打开此链接,默认...

2019-11-23 22:53:56 1949

原创 More than one file was found with OS independent path 'META-INF/proguard/androidx-annotations.pro'

今天在项目中引入了一个cache image的库 cached_network_image 1.1.3。可以引入之后,程序无法编译通过,提示:More than one file was found with OS independent path 'META-INF/proguard/androidx-annotations.pro解决方案很简单,在项目android目录app下的 bu...

2019-11-19 17:25:53 227

原创 Flutter踩坑记录之setState

这篇文章主要受以下这篇文章的启发:How to refresh the content of a Dialog via setState?在上面链接中的这篇文章中,主要介绍了在Flutter中使用setState刷新Dialog的问题,并提供了一种解决方案。这篇文章大部分内容翻译自这个链接,另外除了坐着提出的方案之外,另外再介绍一种更简单实用的解决方案。学习到的内容:如何在Flutter...

2019-11-18 12:24:33 5284

原创 Flutter使用Stream更新Widget UI

通过之前的两节课,相信你应该已经掌握了Stream的使用。这节课我们来看下如何使用在Flutter中使用Stream来更新Widget UI。不过在这之前,我们可以先看下Flutter常规刷新界面的操作,通过对比我们能了解Stream的优势。setState当我们在Studio中创建一个Flutter项目时,Studio会默认给我们创建如下代码从图中红色框的指示可以看出,在 Floati...

2019-11-05 21:00:21 1204

原创 如何使用Dart的Stream(二)

上一节主要介绍了什么是 Stream,以及Stream的一些简单交互。

2019-11-02 20:11:08 1168

原创 如何使用Dart的Stream(一)

Stream 诞生2018年,谷歌推出了Dart中最重要的一个特性-- Stream。官方对其介绍是:Widgets + Streams = Reactive Flutter App简单来说就是,Stream被创建的初衷就是为了实现Flutter的响应式编程。Stream 简介Stream(流) 的作用与RxJava、RxJS,或者是Android中 Live Data 非常相似。...

2019-10-28 21:23:41 2791 1

原创 关于Dart List,你必须知道的几个方法

forEach()遍历List中的每一个元素List<int> list = [19, 20, 12];list.forEach((f) => print('$f is ${f > 18 ? 'bigger' : 'smaller'}' + ' than 18'));打印结果19 is bigger than 1820 is bigger than 1812...

2019-09-21 09:51:34 6915

原创 从0开始搭建Flutter开发环境

准备工作Mac OS之所以选择在Mac上开发,是因为它同时支持Android和IOS系统,对Android Studio和xCode等IDE使用者也比较友好另外, Mac OS已经内置了...

2019-09-14 10:10:01 367

原创 安利一波Flutter

"一套代码,多平台运行"一直是当今互联网喊得比较响亮的口号。各种跨平台方案也是如雨后春笋般涌现,比如H5,Week等。其中最经典的莫过于React Native。但是,由...

2019-09-13 00:00:52 153

优化对Private方法进行单元测试Demo

不要对private方法写UnitTest code。这说明调用这个private方法的public接口做了太多它不该做的事情

2018-09-07

GreenDaoDemo

GreenDao的详细实用案例,包含List<String>类型的保存,已经多表之间的关联

2017-06-21

主题切换应用

http://blog.csdn.net/zxm317122667/article/details/52688882 一步一步教你实现主题切换 注意:需要先运行并安装压缩包中的BlackTheme和WhiteTheme两个应用,最后在运行安装SwitchThemeDemo

2016-09-28

MaterialPullToRefresh

自定义FrameLayout,实现下拉刷新 带水波纹的下拉刷新MaterialPullToRefresh http://blog.csdn.net/zxm317122667/article/details/52094048

2016-08-02

Picasso实现下载图片进度提示

http://blog.csdn.net/zxm317122667/article/details/51814095

2016-07-03

MyPopListButton

Android自定义Button结合PopupWindow和ListView实现顺序显示下拉菜单控件 http://blog.csdn.net/zxm317122667/article/details/50929798

2016-03-19

Scrollview_ViewPager_ListView

Scrollview中嵌套ViewPager和ListView的问题和解决方案

2016-03-17

自定义ImageView,实现点击之后算出点击的是身体的哪个部位

自定义ImageView,实现点击之后算出点击的是身体的哪个部位

2015-08-13

自定义VIewGroup实现仿淘宝商品详情页

仿照X宝的商品详情页, 拉到页面底部时有一个粘滞效果,如果用户继续向上拉的话就进入下一页

2015-07-23

空空如也

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

TA关注的人

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