- 博客(26)
- 收藏
- 关注
原创 Android使用EasyRequest快速集成网络库
之前写过一篇《Android快速集成网络库功能》,思前想后感觉还是有点局限性,只限于接口端采用微服务架构且app端采用retrofit+okhttp+rxjava的网络框架,这对其它对接入单服务接口类型的app端,或者是采用其它网络框架的app端就不适用了,因此就有了这篇文章。我们还是采用跟一样的方案,可以使用不用的网络请求策略,才实现支持更换网络加载库,最终发起一个请求只需要一行代码,比如:微服务架构的接口:EasyRequest.getInstance().request(new EasyReq
2021-12-08 12:46:20 2345 1
原创 Android弹窗优先级管理高级应用
之前我写过一篇Android优雅实现弹窗优先级管理来介绍如何在android日常开发中管理多个弹窗的优先级,这个解决方案也被其他开发者所采用,在这里也感谢大家的认可。我们常说世界上唯一不变的就是变化,开发的业务场景也在不停地变化,所以之前的弹窗管理解决方案在某些业务上则有场景的限制了,比如Android优雅实现弹窗优先级管理更偏向于将各个自定义的Dialog(api上的Dialog)纳入管理,且每个Dialog需要实现我们约定好的“Dialog Interface”,这样的话某种意义上已经对自定义Dia
2021-11-20 11:52:10 2816
原创 Android通用PopupWindow的封装
日常开发中或多或少都会使用到PopupWindow,每次都需要自定义继承至PopupWindow的view,写多了不胜其烦,今天我们对PopupWindow做个封装,可通过链式构建,支持View方式或ViewDataBinding方式设置ContentView(类似的封装可看我的另外一篇文章Android通用Dialog的封装)。先看使用示例:1、通过View的方式构建,这里的SortingFilterLayout是我们自定义的一个Viewnew CommonPopupWindow.ViewBuil
2021-07-22 15:39:44 1070 1
原创 Android通用Dialog的封装
日常开发中或多或少都会使用到Dialog,每次都需要自定义继承Dialog,写多了不胜其烦,今天我们对Dialog做个封装,可通过链式构建,以ViewDataBinding方式设置ContentView(之后会扩展支持通过View方式设置ContentView,类似的封装可看我的另外一篇文章Android通用PopupWindow的封装)。先看使用示例:这里的layout_sorting_filter是我们自定义View的xml文件,LayoutSortingFilterBinding是对应的View
2021-07-22 15:34:45 1444 2
原创 Android封装RecyclerView的使用
android的日常开发中经常需要使用到列表控件,最开始的时候我们使用的是ListView,随着业务的复杂性上升,页面布局不再单一,ListView的局限性越发凸显,好在google为我们提供了使用更灵活,扩展性更强大的RecyclerView,相比ListView的布局单一,RecyclerView拥有更多的布局方式,如线性布局(竖直方向或水平方向),表格布局,瀑布流布局,翻页布局(类似ViewPager)等,且支持局部刷新。为方便我们快速使用,接下来我们对RecyclerView的使用进行简单的封装。
2021-05-11 11:29:36 925
原创 Android快速集成图片加载(支持更换图片加载库)
前言看这篇文章的或多或少都是平时开发有涉及到图片加载的,你可能是新手技术人员,也可能摸爬滚打多年的老司机,不管你是想知道怎么加载图片,还是想参考下如何快速集成,本文尽量都分享下自己的心得,如果能帮助到你的话,也算是自己的一份沉淀。话不多说,直接进入正文。1.为什么讲图片加载的集成呢?其实我们都知道,图片的加载无非就是将图片(图片源可以有多种,如网络图片,本地图片等)成功地显示在我们的图片容器上(如ImageView),本地资源图片很简单,可能直接setBackground就可以达到效果,但如果是网络图
2020-12-03 14:02:54 321
原创 Android优雅实现弹窗优先级管理
前言在日常的android开发中,我们或多或少都有做过应用内的一些弹窗,比如在应用的某些页面弹窗展示广告,弹窗通知消息等。你的app中使用弹窗是否比较频繁?你是否厌烦了每次敲击一大堆代码就为了展示一个弹窗?是否同个页面有多个弹窗且伴有优先级?…等等,那么,可能这篇分享会帮助到你。使用场景1. 普通场景弹窗任务只是展示一些内容,如文本、图片等信息,可能还要有点击事件等,如果对UI要求不是很严格,那么可以使用系统提供的AlertDialog,这里简单写个示范:AlertDialog.Builder b
2020-09-07 09:46:22 4382 6
原创 Activity跳转发生TransactionTooLargeException怎么办?
Activity跳转发生TransactionTooLargeException怎么办?
2022-01-20 18:24:49 2371
原创 Android开启定时任务通用的封装
最近接到一个需求,在特定条件下定时轮询接口查询相关信息,直到拿到想要的信息为止,为了方便以后使用,在这里做了一个封装,假设需要定时查询订单状态,先看使用方法:CustomTask<Long, Long> customTask = new CustomTask.Builder<Long, Long>() .delay(3000)//延迟3秒执行,根据需要自行更改 .interval(5000)//轮询间隔5秒,根据需要.
2021-09-27 09:45:44 639
原创 Okhttp上传图片失败,居然是服务端的锅?(二)
我们在Okhttp上传图片失败,居然是服务端的锅?(一)提到了在开发中使用Okhttp上传图片失败的场景并给出了解决方法。但是,我还是太天真了。在写Okhttp上传图片失败,居然是服务端的锅?(一)这篇文章的时候,由于我们的项目工程支付模块接入了第三方的银行卡开户这个流程,需要客户端将用户所填写的身份证信息和身份证照片(需先拍照后上传至我们自己的服务端拿到对应的图片url)提交到第三方中进行开户,而我们的客户端的debug包又支持切换不同的服务端环境,自然地我们在内网和外网环境最终拿到的图片url就不
2021-07-09 16:12:24 702
原创 Okhttp上传图片失败,居然是服务端的锅?(一)
OKhttp作为一款优秀的android网络框架,在我们的日常开发中经常使用到,我们除了用来发起get、post等请求,还可以用来上传文件,比如上传图片,正常来说其实是没什么问题的,但是可能会遇到上传图片失败的问题。我在近期的项目开发中也遇到了使用OKhttp上传图片失败的问题。项目工程由于历史悠久,迭代周期长达几年,起初网络库使用android内置的httpClient和HttpURLConnection,后来改成了Volley,再后来又换成了retrofit(原理上是通过Okhttp实现各种网络操作
2021-07-08 10:07:31 964 1
原创 java算法题-将数组分成和相等的三个部分
在leetcode(https://leetcode-cn.com/)上看到一道有趣的算法题:给你一个整数数组 A,只有可以将其划分为三个和相等的非空部分时才返回 true,否则返回 false。形式上,如果可以找出索引 i+1 < j 且满足 A[0] + A[1] + … + A[i] == A[i+1] + A[i+2] + … + A[j-1] == A[j] + A[j-1] + … + A[A.length - 1] 就可以将数组三等分。示例 1:输入:[0,2,1,-6,6,.
2021-04-29 16:55:41 670
原创 java算法题-最小差值 I
在leetcode(https://leetcode-cn.com/)上看到一道有趣的算法题:给你一个整数数组 A,请你给数组中的每个元素 A[i] 都加上一个任意数字 x (-K <= x <= K),从而得到一个新数组 B 。返回数组 B 的最大值和最小值之间可能存在的最小差值。示例 1:输入:A = [1], K = 0输出:0解释:B = [1]示例 2:输入:A = [0,10], K = 2输出:6解释:B = [2,8]示例 3:输入:A = [.
2021-04-29 16:50:07 609
原创 java算法题-山羊拉丁文
在leetcode(https://leetcode-cn.com/)上看到一道有趣的算法题:给定一个由空格分割单词的句子 S。每个单词只包含大写或小写字母。我们要将句子转换为 “Goat Latin”(一种类似于 猪拉丁文 - Pig Latin 的虚构语言)。山羊拉丁文的规则如下:如果单词以元音开头(a, e, i, o, u),在单词后添加"ma"。例如,单词"apple"变为"applema"。如果单词以辅音字母开头(即非元音字母),移除第一个字符并将它放到末尾,之后再添加"ma"。例如
2021-04-16 16:55:56 123
原创 java算法题-最大连续 1 的个数
在leetcode(https://leetcode-cn.com/)上看到一道有趣的算法题:给定一个二进制数组, 计算其中最大连续 1 的个数。示例:输入:[1,1,0,1,1,1]输出:3解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.提示:输入的数组只包含 0 和 1 。输入数组的长度是正整数,且不超过 10,000。这样的题你会怎么用java实现呢?分享一下我的解题思路:public int findMaxConsecutiveOnes(in
2021-04-16 15:28:35 495
原创 java算法题-在区间范围内统计奇数数目
在leetcode(https://leetcode-cn.com/)上看到一道有趣的算法题:给你两个非负整数 low 和 high 。请你返回 low 和 high 之间(包括二者)奇数的数目。示例 1:输入:low = 3, high = 7输出:3解释:3 到 7 之间奇数数字为 [3,5,7] 。示例 2:输入:low = 8, high = 10输出:1解释:8 到 10 之间奇数数字为 [9] 。提示:0 <= low <= high <= 10
2021-04-16 15:23:14 1555
原创 java算法题-最长公共前缀
在leetcode(https://leetcode-cn.com/)上看到一道有趣的算法题:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入:strs = [“flower”,“flow”,“flight”]输出:“fl”示例 2:输入:strs = [“dog”,“racecar”,“car”]输出:""解释:输入不存在公共前缀。这样的题你会怎么用java实现呢?分享一下我的解题思路:public String long
2021-04-07 17:00:31 160
原创 java算法题-罗马数字转整数
在leetcode(https://leetcode-cn.com/)上看到一道有趣的算法题:罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是
2021-04-07 16:57:47 160
原创 java算法题-回文数
在leetcode(https://leetcode-cn.com/)上看到一道有趣的算法题:给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。示例 1:输入:x = 121输出:true示例 2:输入:x = -121输出:false解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输
2021-04-07 16:55:00 231
原创 java算法题-搜索插入位置
在leetcode(https://leetcode-cn.com/)上看到一道有趣的算法题:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0这样的题你会怎么
2021-04-07 16:51:49 91
原创 java算法题-加一
在leetcode(https://leetcode-cn.com/)上看到一道有趣的算法题:给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入:digits = [1,2,3]输出:[1,2,4]解释:输入数组表示数字 123。示例 2:输入:digits = [4,3,2,1]输出:[4,3,2,2]解释:输入数组表示数字 43
2021-04-07 16:48:40 125
原创 java算法题-删除有序数组中的重复项
在leetcode(https://leetcode-cn.com/)上看到一道有趣的算法题:给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是以“引用”方式传
2021-04-07 16:44:13 163
原创 java算法题-两数之和
在leetcode(https://leetcode-cn.com/)上看到一道有趣的算法题:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0,
2021-04-07 16:39:10 299
原创 java算法题-有效的括号
在leetcode(https://leetcode-cn.com/)上看到一道有趣的算法题:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s 判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = “()”输出:true示例 2:输入:s = “()[]{}”输出:true示例 3:输入:s = “(]”输出:false示例 4:输入:s = “([)]”输出:fa
2021-04-07 16:34:04 282
原创 Android快速集成网络库功能(rxJava+retrofit+okhttp)
这里写自定义目录标题前言新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入前言大家好! 。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Mar
2021-01-25 16:06:56 613 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人