自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Eric的博客

大事上方向正确,小事上一丝不苟 !

  • 博客(282)
  • 资源 (1)
  • 收藏
  • 关注

原创 解决:代码中动态获取尺寸与 AndroidAutoSize 设置的尺寸不一样

AndroidAutoSize 是字节出品的一套自动屏幕适配方案,我们在开发过程中可以很容易的去适配各种屏幕。但应用这套开源库后也存在一个问题:我在 xml 中给 view1 设定尺寸为 200dp,又在代码中动态给view2 设置尺寸为 200dp,但是实际的效果却是不一样长。

2022-12-15 22:57:37 78

原创 解决:小米手机设置全屏后屏幕上方有黑条问题

解决小米手机全屏后,屏幕上方存在黑条问题。

2022-11-27 16:21:16 301 2

原创 Android Library 库直接拿到 Context

我们写底层库的时候经常需要用到 Context,但怎样拿到这个 Context 呢?往下看......

2022-09-21 20:03:13 481

原创 开源库 Gson 怎么读

我们在做 Android 开发的时候经常会用到 Gson 这个开源库,但是 Gson 应该怎么读呢?

2022-08-30 16:03:23 501

原创 解决:java.lang.IllegalArgumentException: Unable to create call adapter for class java.lang.Object

Retrofit 请求网络时报错:java.lang.IllegalArgumentException: Unable to create call adapter for class java.lang.Object说没有添加 CallAdapter。

2022-08-26 17:34:38 363 1

原创 解决:ARouter 报错 There is no route matched

解决:ARouter 报错 There is no route matched

2022-08-26 16:34:56 221

原创 解决:接入 DoKit 时报错:java.lang.NoSuchMethodError: No static method getAppSignatureMD5()

接入 DoKit 时报错:java.lang.NoSuchMethodError: No static method getAppSignatureMD5()

2022-08-23 16:24:57 56

原创 解决:Android debug 系统源码时行号对应不上

一、问题说明我们在开发过程中经常需要去查看系统的源码,可能大多时候只需要阅读一下就行,有时候为了更好的理解,我们需要去 debug 一下,但是会出现 debug 的行号和运行的代码不一致的情况。二、问题原因这是因为很多手机厂商重新定制了系统源码,你电脑上指定版本 SDK 的源码和你自己手机上的并不完全一致。三、解决方案用 Android Studio 的 Device Manager 下载一个同你的 compileSdk 和 targetSdk 版本一致的谷歌虚拟机,将应用运行上去再次

2022-05-20 16:06:45 380 1

原创 解决:RecyclerView 瀑布流偶现间距太大

一、问题说明正常应该是这样的但有时候打开会变成这样:对比正常图和异常图,明显页面边距和 item 边距都要大不少。比较奇怪的是直接点击上面的 tab 定位到该 fragment 会出问题,如果左右滑动 ViewPager 到该 fragment 就没事。二、解决方案经过一顿排查,终于发现是某些时机下重复设定 ItemDecoration 导致间距直接 double 了。// addItemDecoration 前加上这句判断if (recyclerView.i

2022-05-16 13:49:33 294

原创 解决:Android Lambda 造成内存泄露

一、问题说明class MyActivity : Activity() { override fun onWindowFocusChanged(hasFocus: Boolean) { super.onWindowFocusChanged(hasFocus) if (hasFocus) { // startCheckClipboard 中存在耗时操作 CommandManager.startCheckClipboard { showCo

2022-03-15 09:50:27 3025 2

原创 解决:AppBarLayout 出现黑边问题

解决 AppBarLayout 出现黑边问题。

2021-12-22 15:23:47 1378

原创 解决:Paging3 PagingDataAdapter 删除 item

一、问题说明Paging 3 可以很方便的管理数据分页。我们项目中有一个特殊需求:删除指定的 item。但是发现 adapter 并未提供相应的支持。二、解决方案adapter.snapshot().toMutableList().removeAt(position)adapter.notifyItemRemoved(position)搞定!...

2021-10-29 19:00:11 2361 4

原创 解决:CoordinatorLayout 嵌套 RecyclerView 再嵌套 RecyclerView 悬浮联动失效

一、问题说明CoordinatorLayout 嵌套 RecyclerView 滑动联动没问题,但是在 RecylerView 中再嵌套一层 RecyclerView 就会出现不联动的问题。二、问题解决给最内层的 RecyclerView 设置属性:nestedScrollingEnabled <androidx.recyclerview.widget.RecyclerView android:layout_width="match_parent" .

2021-09-18 16:32:05 355

原创 记录:TextView 首行缩进指定宽度

// 第一个参数为第一行缩进宽度,第二个参数为其它行缩进宽度val what = LeadingMarginSpan.Standard(width, 0)val ss = SpannableString("hello world")ss.setSpan(what, 0, ss.length, SpannableString.SPAN_INCLUSIVE_INCLUSIVE)titleView.text = ss...

2021-09-13 15:36:45 424

原创 了解 Android 内存泄露

一、说明看文章之前,可以预想一下,你想从这篇文章中了解什么呢?什么是内存泄露 内存泄露有什么危害 怎样检测内存泄露 怎样解决内存泄露本文主要想说明什么是内存泄露、怎样检测和解决内存泄露。希望大家在看完该文后能对内存泄露有一个全面的了解。二、什么是内存泄露内存泄漏是指程序已经不会再使用的内存对象,由于垃圾回收时无法识别其是否为无用的垃圾对象,不能及时地将其回收,一直保留在内存中占用存储空间,不释放给其他对象。举个例子:茅坑只有那么那么五六个,但有些总喜欢占着茅坑不拉屎,这样就

2021-09-06 16:26:41 423

原创 分享一个 Android 尺寸限制组件:限制最大高度、按宽高比限制宽度或高度

一、说明你是否有遇到过以下需求:底部弹窗的高度为自适应,但最大不能高于 200dp,如果能有一个 maxHeight 属性该多好。但这个属性貌似只在 TextView 有发现,其它 View 就不支持了。 图片的宽度为屏幕宽度,图片的高度为按设计图尺寸自适应。 或者图片的高度固定,按一定比例自适应宽度。以上的这些需求,Android 原生没有直接的属性支持。当然,你也可以每次去计算,但这样太费事了,如果能封装一个组件达到一劳永逸是不是会方便很多呢。二、实现逻辑1、在style.xml.

2021-08-05 20:12:48 1165

原创 解决:Type com.alibaba.android.arouter.routes.ARouter$$Group$$home is defined multiple times

一、问题场景项目中有用到阿里的 ARouter 组件,定义路由的时候添加了一个 scheme://home/categories,结果一直报该错误:Type com.alibaba.android.arouter.routes.ARouter$$Group$$home is defined multiple times项目中之前也有用到过scheme://home/mine 这样的路由是没有问题的。比较奇怪的是为什么这个就会有问题呢?二、问题解决换成scheme://home2/..

2021-08-04 11:43:21 4610

原创 解决:Failure [INSTALL_FAILED_TEST_ONLY]

一、问题场景我用 Android Studio 在 VIVO Y85A 手机上调试应用时,一直提示安装失败:failed to install build/outputs/apk/debug/debug.apk: Failure [INSTALL_FAILED_TEST_ONLY]二、解决方案在 gradle.properties 中添加:android.injected.testOnly=false搞定!...

2021-07-28 13:54:35 133

原创 解决:RecyclerView 滑动后布局错乱

一、问题说明我的需求是要做一个类似这样的列表,整体是一个 RecyclerView,每个 item 内部会有一个流式布局,在流式布局内部会动态添加 TextView,TextView 的大小是自适应的。滑动后会出现以下布局错乱问题:由图可以看出,TextView 的背景丢了样式。二、问题解决分析应该是布局复用导致的布局错乱,由于我的列表数据不是很多,占用内存也不是很大,就先直接禁用掉 RecyclerView 的复用,禁用掉后再次滑动就不会存在错乱的问题了。我在网上搜索了禁用

2021-07-26 15:07:09 1829

原创 解决:底部 Dialog 不展示入场动画

一、问题说明遇到一个很奇怪的问题,dialog 入场动画一直展示不出来,但是出场动画可以正常呈献。我尝试了修改动画相关代码,也尝试调整 dialog 中的主题,但一直不行。经过长时间排查和对比,终于找到解决方案。二、问题解决解决方案:只需要给 dialog 的宽度减少 2 个 px 即可解决。三、问题分析如果你的视图部分的宽度本身不是占满全屏的,不会存在不展示入场动画的问题,但如果宽度是占满全屏的话就会不展示入场动画。靠,了解后真是想骂街!!!Android 为什么要这样

2021-07-23 15:00:20 725 2

原创 解决:Android 在 onMeasure 中获取不到 View 的尺寸

一、问题说明遇到这样一个需求:图片的宽度为接近屏幕的宽度,图片的高度要保持设计图的宽高比。看起来很简单的一个需求是吧!我的方案是:我尝试在 onMeasure 中获取 ImageView 的宽度,然后根据宽度和比率计算好 View 的高度,设置上去。问题:页面打开时 ImageView 的 visibility 为 visible 的话不会有问题;但如果为 gone 的话,即使你设置了 visible,在 onMeasure 中获取到尺寸也是 0。二、解决方案i

2021-07-23 10:59:35 310 1

转载 47 个反编译工具

JADX – Dex to Java decompilerDownloadBytecode ViewerDownloadApktoolDownloadClassySharkDownloadSmali/BaksmaliDownloadAndroguardDownloadEnjarify by GoogleDownloadEnjarify by StoryyellerDownloadAPK StudioDownloadApkToolPlus

2021-06-03 16:16:40 3713

原创 Android 动态设置 AppBarLayout 滑出屏幕

一、说明我们通常会用CoordinatorLayout +AppBarLayout +RecyclerView 来实现如下 material 风格的滑动效果。有时候我们希望用代码控制列表滑动到某个位置,同时希望AppBarLayout 自动折叠起来,这该怎么办呢?二、解决方案mAppBarLayout.setExpanded(false, false)搞定!...

2021-04-08 15:20:38 538

原创 解决:RecyclerView 瀑布流问题总结(换位置、顶部空白、闪烁)

一、说明最近在开发中第一次使用到了 RecyclerView 的瀑布流,过程中遇到一些问题,也花费了不少时间去调研解决方案,在此总结一下。二、问题问题 1:滑动时 item 变换位置开发完瀑布流基本功能后,发现长得还挺好看,但是上下滑动几次就会发现 item 的位置经常来回切换。解决方案:val lm = StaggeredGridLayoutManager(columnNum, RecyclerView.VERTICAL)lm.gapStrategy = StaggeredGr

2021-03-29 17:51:17 1926 3

原创 2020 年终总结

一、说明一年的时间过得好快,在这一年的时间里经历了不少事情,在此对自己做一下总结。二、工作1、换工作由于种种原因,离开了伴我成长4 年多的公司,去到了一家新的公司。可能有的人感觉在一家公司待了 4 年并不是很长,但是熟悉互联网技术行业的人应该了解,在一家公司待 4 年算是挺长的时间了。去到新公司,进入新的环境,认识新的伙伴,感觉自己适应的蛮好,工作中与伙伴配合也算默契,总体来说还不错。2、面试提到换工作就肯定不可避免的涉及面试。由于好久没有经历面试了,刚开始还是有一些紧.

2021-02-16 17:27:34 154 4

原创 Kotlin 坑记:传参命名与方法重名导致程序错误

一、问题说明首先看代码:class MyView : RecyclerView { private var mHeight: Int = 0 fun changeHeight(height: Int) { mHeight = height } fun print() { print(mHeight) }}fun main() { val view = MyView(context) vi

2021-02-03 16:09:48 353 2

原创 记录一些用到的 adb 命令

1、安装 apk 到手机adb install aa.apk参数:-r:覆盖安装 -s:将应用安装到 SD 卡 -d:允许降级覆盖2、将电脑上的文件复制到手机例:将文件复制到 SD 卡的根目录adb push aa.txt /sdcard3、将手机上的文件复制到电脑上例:将手机 SD 卡根目录下的 aa.txt 复制到电脑的某个目录下。adb pull /sdcard/aa.txt /Users/eric/Downloads 4、查看当前运行的 Activit

2021-01-05 15:39:17 98

原创 解决:Android base64 转 bitmap 出现黑色背景

一、问题场景将 png 图片bitmap 转为 base64,再将 base64 转为 bitmap 后,对比原图,透明部分出现了黑色背景。举个例子:有这样一张圆角的图片,图片的四个角是透明的。将其由 bitmap 转为 base64,再转为bitmap 后就会出现如下的情况:明显四个角的透明部分已经变为黑色。二、问题原因刚开始我也很纳闷,怎么同一张图,转为 base64 再转回图片就不一样了呢!后来发现是由于我将一张 png 的图片转回成了一张 jpg 的图片,..

2021-01-01 18:35:28 1614 1

原创 记录 Charles map local 的一个问题

一、问题说明用 Charles map local 后一直不生效,而且一直报错。按着网上的教程一遍遍尝试后依然不行。二、解决方案你需要用手机再请求一次才行,我之前改完 map local 以后总是习惯性通过 repeat 去测试,结果每次都不成功。So,切记:map local 只能用测试机发送请求,不能用 Charles 自带的 repeat 去测试。...

2020-12-31 17:49:38 737

原创 Android View 监听宿主生命周期

一、说明今天遇到一个需求:在自定义 View 中会有一个 Timer 定时任务执行更新 UI 操作,希望当页面退出时将定时任务停掉,否则可能由于定时任务无法释放导致内存泄露。可能有人会建议将在 Activity 的 onDestroy 中停掉定时任务,但这种方式是比较难以维护的,你需要要求每一个用你的自定义 View 的技术人员都记得去释放一下,这不太现实,最好的方式是你的自定义 View 可以自己监听生命周期并进行释放。二、解决方案方案 1:将生命周期传入将 Activity 的所

2020-12-23 17:12:51 835

原创 认识函数式编程

最近项目开发采用 Kotlin 语言,需要了解一些函数式编程的知识,也看了一些相关的文档,感觉阮一峰写的一篇认识函数式编程的文章不错,推荐一下:函数式编程初探

2020-12-16 11:11:49 48

原创 解决:Android Studio 提示 Failed to initialize editor

一、问题说明xml 文件提示Failed to initialize editor,无法看到实时布局的效果。尝试了重启 AS,clean rebuild 等办法都不行。二、解决方案关闭 AS 将项目下的 .idea 文件夹删除 重新打开 AS搞定 !...

2020-12-14 14:09:12 11361 7

原创 记录一次维修电动车遇到的坑

一、说明我的电动车电机坏了,需要到某牛的线下授权店更换电机配件。换一个电机七百多块钱,虽然感觉有些贵,但是为了继续使用,也只能忍痛更换。在更换的过程中维修人员几次提示我更换其它配件,刚开始没有觉得怎样,但是整个过程下来还是感觉略有些坑。二、要求更换的过程第 1 次:鼓刹在更换完电机后,维修人员说鼓刹不好了,旧的那个不好装上去,需要花费 120多,当时也没多想,觉得应该是真的如维修人员所说不好了,就直接答应更换了。第 2 次:轮胎说我的轮胎打过滋补液,换过去不太好,建议换一个轮胎,需.

2020-12-06 20:46:19 491

原创 解决:Android 修改 application_id 后再修改回来后无法打包运行

一、问题说明公司项目开发中为了去测试一个东西,需要将应用 applicationId 修改掉。具体为将com.sample.package1 修改为com.sample.package2。为了做到风险隔离,我直接新开了一个 test 分支,接着将build.gradle 中的 applicationId 修改掉,测试可以正常打包运行,但是切回原分支后却死活运行不起来,还报以下错误:Error while executing: am start -n "com.sample.packa...

2020-12-05 15:23:11 905

原创 10 分钟了解 Flutter 跨平台方案

一、目录跨平台:跨平台是什么,有哪些平台要跨,为什么要跨平台说说当下我们已知的一些跨平台方案,Flutter 对比这些方案有什么优劣了解 Flutter 是什么Flutter 特点Flutter 核心思想了解 Flutter 插件目前的发展状况和未来的发展前景如何,是否有可能替代当下,成为未来成为 Flutter 工程师需要具备的素质二、聊聊“跨平台”1、什么是跨平台跨平台概念是软件开发中一个重要的概念,不依赖于操作系统,也不依赖硬件环境。一个操作系统下开发的应用,放到另一个操.

2020-09-18 10:55:50 699

原创 由浅入深知单例

一、何谓单例“单例”这个词很好理解,就是说只能有一个实例,绝对不能有第二实例,否则就叫“双例”了。二、走进单例演进 1为什么一定要写单例呢,创建一个非单例类的实例,用的时候只用这个一个实例可以吗?class Dog { private String name;}public void main() { Dog d = new Dog;}如果多个类都会需要用这个实例,你需要走哪把这个实例带到哪儿呢,这样也太麻烦了。还有一点就是,你不能防止他人使用这个类的时候不小心多建了

2020-09-18 10:52:26 137

原创 记录常用 Git 命令

一、说明平常用Git 进行版本控制的时候大多通过可视化工具(SmartGit 或 SourceTree),但在一些情况下用命令方式更加方便。在这儿记录一些用到的 Git 命令。二、命令记录clone 代码git clone <url>创建本地仓库// 进入仓库目录下后执行以下命令git init配置远程仓库地址// 添加git remote add origin <url>// 修改:git remote set-url origin.

2020-08-11 15:46:08 102

原创 摩托车提速方法

1、减重重量越轻越省劲,提速更快,极速更高。可以把不用的一些配件去掉,或者可以换一些碳纤维的材料。2、空气滤芯长期不更换的话可以能所堵塞,导致空气进入不够流畅,更好的进气,才能更充分的燃烧,从而爆发更大的动力。3、改装排气筒更大的排气可以让发动气更多的排出气体,也可以燃烧更多的汽油,从而提供更好的动力。4、传动装置较大的后链轮或较小的前链轮可以带来更大的加速度。5、好的机油好的机油可以降低车量内部负荷。6、胎压提高胎压可以降低摩擦力。7、链条润滑及时给

2020-07-15 20:00:13 936

原创 设计模式 UML 汇总

目录一、创建型1、单例模式2、简单工厂3、工厂方法4、抽象工厂5、建造者模式6、原型模式二、结构型1、适配器模式2、装饰器模式3、代理模式4、外观模式5、桥接模式6、组合模式7、享元模式三、行为型1、策略模式2、模板方法模式3、观察者模式4、迭代器模式5、责任链模式6、命令模式7、备忘录模式8、状态模式9、访问者模式10、中介者模式11、解释器模式一、创建型1、单例模式2、简单工厂

2020-06-25 21:35:22 329

原创 解决:Git 切换分支后将修改带到新分支问题

一、问题说明在开发分支进行着功能开发,并有着未提交的修改项,这个时候想切换到其它分支做一些修改操作,如果直接切换就会将这些未提交的修改一起带到新分支,就可能会有问题,我们不希望将这些修改带到其它分支,又希望切换回来的时候依然可以操作这些内容,怎么办呢?二、解决方案方案 1:commit 后再切分支你可以先将当前分支的内容 commit 一下,这样切换分支后就不会有任何影响了。方案 2:stash 功能:找个地儿先存放一下有的时候我们一个功能没有开发完并不想将半个功能提交到记录中,该怎

2020-06-17 16:48:24 6430 5

GprinterSDKForAndroid.zip

现在佳博官方的 SDK 下载链接暂时打不开,为了方便开发者下载,特在此上传资源方便开发同学使用

2019-08-13

空空如也

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

TA关注的人

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