自定义博客皮肤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的博客

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

  • 博客(262)
  • 资源 (1)
  • 论坛 (2)
  • 收藏
  • 关注

转载 47 个反编译工具

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

2021-06-03 16:16:40 6

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

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

2021-04-08 15:20:38 61

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

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

2021-03-29 17:51:17 167

原创 2020 年终总结

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

2021-02-16 17:27:34 108 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 66 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 39

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

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

2021-01-01 18:35:28 214

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

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

2020-12-31 17:49:38 131

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

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

2020-12-23 17:12:51 159

原创 认识函数式编程

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

2020-12-16 11:11:49 21

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

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

2020-12-14 14:09:12 2358 3

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

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

2020-12-06 20:46:19 124

原创 解决: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 284

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

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

2020-09-18 10:55:50 212

原创 由浅入深知单例

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

2020-09-18 10:52:26 62

原创 记录常用 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 65

原创 摩托车提速方法

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

2020-07-15 20:00:13 348

原创 设计模式 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 186

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

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

2020-06-17 16:48:24 3362

原创 分享几个可以提高工作效率的 Chrome 插件

1、infinity新打开 Chrome 时,往往界面不太好看,我们希望主页展示美观一些,也希望把一些常用的链接展示出来。 infinity 可以设置浏览器壁纸,可以直接搜索,也可以配置一些常用链接。下载链接:https://chrome.google.com/webstore/detail/infinity-new-tab-pro/nnnkddnnlpamobajfibfdgfnbcnkgngh?hl=zh-CN2、一键管理扩展我们往往会给浏览器扩展很多插件以方便使用,但同时启用太多扩

2020-06-11 11:24:21 239

原创 面向对象基本特性:封装、继承、多态

1、封装就是把属性私有化,提供公共方法访问私有对象。2、继承当多个类具有相同的特征(属性)和行为(方法)时,可以将相同的部分抽取出来放到一个类中作为父类,其他类继承于这个父类。继承后的子类自动拥有了父类的属性和方法。3、多态多态,即多种形态,简单来说就是“一种定义,多种实现”。JAVA 语言中有方法重载和对象多态两种形式的多态。方法重载:在一个类中,允许多个方法使用同一个名字,但是方法的参数不同,完成的功能也不同。public class Person { public void eat

2020-05-12 11:46:28 140

原创 为什么应该面向接口编程

一、接口是什么?接口是一组规则的集合,它规定了实现本接口的类或接口必须拥有的一组规则。体现了自然界“如果你是……则必须能……”的理念。其特点是只能定义抽象方法,不可以定义具体的实现方法。举例:如果你是人就必须能吃饭,而不同的人吃饭的方式有所不同。public interface IPerson { void eat();}public class Adult implements IPerson { public void eat() { System.out.

2020-05-12 11:15:41 188

原创 电影推荐 - 实习生

一、说明今天看了由安妮 · 海瑟薇主演的一部电影《实习生》,感觉是一部不错的电影。以前看电影的时候大多是享受一时的愉悦,但今天突然想要将自己的感受记录下来,也希望自己以后能够养成观影记录的习惯。二、背景《实习生》是由美国华纳兄弟影片公司发行,由南希·迈耶斯执导,安妮·海瑟薇、罗伯特·德尼罗联袂主演的喜剧片。该片于 2015 年 9 月 25 日在美国上映。三、剧情简介70 ...

2020-05-01 23:19:34 446

原创 Dart const 与 final 的区别

一、共同点都是常量,一但赋值就不可修改。二、不同点const:编译时常量,其值在编译时就能确定。final:运行时常量,其值在程序运行时才能确定。三、什么是编译时常量其值在编译时就能确定。 无需重复创建实例,在内存中只有一份。对等Java 中的写法:// Java 写法:public class MyClass { public static final...

2020-04-14 11:56:11 468

原创 Flutter 优化:布局时尽量用 const

一、问题看到很多Flutter 构建 UI 时会比较多用到 const,为什么不直接创建实例,而要在前端加一个 const 呢 ?child: const Text('加 const');VSchild: Text('不加 const');二、尽量用 const的理由当我们调用 setState() 后,Flutter 会调用 build 方法,并且 rebuild ...

2020-04-13 19:34:02 1203

原创 详解 Flutter State 生命周期

一、说明我们在开发 Android 或 iOS 中经常会用到页面的生命周期。Android Activity 生命周期:onCreate onStart onResume onPause onStop onRestart onDestroyiOS ViewController 生命周期:viewDidLoad viewWillAppear viewDidAppea...

2020-04-13 15:54:57 1572

原创 Flutter SpUtil 坑记:刚启动应用时无法获取之前存储的值

一、问题说明一般在 App 启动页面会倒计时两三秒的时间后执行相应的导航操作(跳转主页面或用户登陆页面),执行导航的依据是什么呢,是本地存储的 token,如果有 token 且未过期的话就跳转 home,否则跳转登陆。我的本地存储用的是flustars 插件的 SpUtil,存储 token、获取 token、跳转导航等功能都非常正常。问题出在之后添加的一个功能需要在倒计时之前判断用户...

2020-04-13 10:15:02 2044

原创 解决:MAC 禁止 docker 开机自启

一、问题说明每次开机总是会自启动 Docker 容器,如果不经常用到 Docker 的话,让Docker 常驻内存还是比较浪费资源的,就想着禁止其自启动。刚开始想着是通过“系统偏好设置 --> 用户与群组 --> 登陆项”禁止其开机自启动,之后发现这儿根本没有 Docker 容器这一项,一直也想不出怎样禁止其开机自启动。二、解决方案点击 Preferences 菜单 取...

2020-04-10 09:38:46 4742 3

原创 解决:Flutter Column 套 ListView 不显示

一、问题说明将 ListView 放到 Column 内部后无法显示 ListView 内容。二、解决方案将 ListView 用 Expand 包裹起来。

2020-04-04 22:40:22 3065

原创 Flutter 倒计时功能

一、说明要实现一个类似上图中滑动列表项倒计时功能,其中剩余时间是需要每分钟更新一次。二、功能实现class ItemOrderWidget extends StatefulWidget { final OrderEntity order; ItemOrderWidget({ Key key, this.order, }) : super(key: ...

2020-04-02 18:04:39 1493

原创 Flutter 跳转地图软件调起导航:百度、高德、腾讯、苹果

一、说明我们在应用开发中经常需要用到地图导航功能,基本上使用导航功能分为两类:第 1 类:App 集成导航功能这种方式的优点是可以进行深度导航定制,比如出行或外卖软件会有自己的定制,上面会有司机或骑手的小图标,但是集成开发成本也是比较高的。第 2 类:跳转第三方地图软件这种方式是比较简单的一种,把目的地传给第三方导航软件,比如百度地图,它会为你提供导航功能,这种方式开发成本低,...

2020-04-02 17:26:30 5209 11

原创 Flutter 自定义数字增减器组件

一、效果说明要实现以下的效果:点击加减可以增减内部的数字。二、代码示例class NumChangeWidget extends StatefulWidget { final height; int num; final ValueChanged<int> onValueChanged; NumChangeWidget({Key key, th...

2020-04-02 16:52:25 1243

原创 解决:Flutter 自定义 Dialog 不显示布局问题

一、问题场景尝试自定义一个 Dialog,但是不显示设置的布局,主要代码如下:class MyDialog extends Dialog { @override Widget build(BuildContext context) { return Material( type: MaterialType.transparency, child:...

2020-04-02 16:37:17 339

原创 Flutter 修改生成的 APK 名称

一、问题场景我们在开发完 Android 项目后会进行打包操作,如果不进行任何配置的话,生成的包名会是 app-release.apk。我们一般都会配置成我们想要输出的名称,但是 Flutter 怎么配置呢?二、解决思路1、如 Android 原生一样配置applicationVariants.all { variant -> variant.outputs.eac...

2020-04-01 17:27:51 3585

原创 解决:Flutter 不识别 iPhone 测试机

一、问题场景我的 Flutter IDE 选择的是 Android Studio,通过数据线插入测试机后 AS 的设备显示位置并未出现测试机,尝试重新插拔和重启 AS 均未能成功。二、解决方案在 ios 位置右击 选择 Flutter 选择 Open iOS module in Xcode执行完以上步骤后会打开 XCode,这个时候 XCode 会去检测真机并尝试连接,在手机...

2020-04-01 14:58:25 1079

原创 解决:ERROR: for nginx  Cannot start service nginx: Ports are not available: listen tcp 0.0.0.0:80

一、问题场景在 Mac 上安装 docker 后执行以下命令:docker-compose up提示以下错误:ERROR: for nginx Cannot start service nginx: Ports are not available: listen tcp 0.0.0.0:80: bind: address already in use二、问题原因通过...

2020-04-01 14:35:09 8812

原创 解决:The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 7.0, but the range ...

解决方案:将下述内容添加在PodFile的最下方,重新执行Pod install。post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.bu...

2020-03-28 17:48:08 19924

原创 解决:Podfile is out of date. This can cause a mismatched version of Flutter to be embedded in your app

一、问题场景在 Flutter 打包安装到模拟器时,提示以下错误:Warning: Podfile is out of date This can cause a mismatched version of Flutter to be embedded in your app, which may result in App Store submission rejection or...

2020-03-28 15:08:48 2189

原创 解决:Warning: CocoaPods minimum required version 1.6.0 or greater not installed.

一、问题场景Flutter 编译打包到模拟器时,提示CocoaPods 版本低,需要升级到至少 1.6.0 以上。二、详细提示信息Warning: CocoaPods minimum required version 1.6.0 or greater not installed. Skipping pod install. CocoaPods is used to retri...

2020-03-28 14:56:31 1531

原创 解决:setState() called after dispose()

一、问题场景网络请求成功前退出了页面,该 State 被从对象树卸载掉,而这时回调了网络请求的方法,方法中带有 setState 的调用,也就导致了该问题。二、问题原因State 对象被从对象数卸载释放之后再次调用 setState 就会报setState() called after dispose()。二、解决方案State 的 mounted 源码: /// W...

2020-03-28 11:24:35 3073

GprinterSDKForAndroid.zip

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

2019-08-13

Eric_HYD的留言板

发表于 2020-01-02 最后回复 2020-01-02

在源码阅读上有什么值得分享的经验吗

发表于 2019-06-03 最后回复 2019-06-04

空空如也

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

TA关注的人 TA的粉丝

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