自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 Kotlin MVVM协程分享(二)

基于Kotlin MVVM架构设计实战分享以及MVVM的相关源码解析

2023-10-30 16:35:10 174

原创 Kotlin MVVM协程分享(一)

并且在无参函数中添加了一个Person类型的参数(Kotlin中很多语法如协程等都会在对应的函数中添加参数来实现某些功能),通过这个对象来访问对应的非私有成员变量及函数。这就是它的闭包原则。​ 可以看到我们定义的Person类对象扩展函数反编译后并不是在对应的类中创建函数,而是在创建的文件类对象中创建静态方法。​ Kotlin中的顶层函数其实就是将对应的函数包裹上一层类,并将函数转成对应类的静态方法,如。协程没有直接和操作系统关联,但它不是空中楼阁,它也是跑在线程中的,可以是单线程,也可以是多线程。

2022-12-21 10:22:35 337 1

原创 Android参照View源码实现长按效果

项目需要实现长按事件响应,又不想更改现有的onTouch事件逻辑去使用Gesture识别类,故此参照了View的源码实现LongClick的逻辑,自己实现了符合项目需求的长按功能。具体看View的源码:可以看到在ACTION_UP事件中移除了长按回调(这里我之前想自己通过增加逻辑判断来实现同意的效果,结果很不理想,于是再次回到源码找答案!)。其中的 attachInfo.mHandler.removeCallbacks(action); getRunQueue().removeCallback

2022-01-14 14:53:44 2362

原创 动画插值器源码分析

注:本文结合《Android动画分析(ValueAnimator)》一文阅读效果更佳在构建动画插值器的时候出现了数据明显的跳动,怀疑和底层源码有关系:设置一系列的动画帧值:将这些关键帧值转换成KeyframeSet对象,按照时间保存键值对:根据fraction取值,在fraction≥1时将直接去KeyframeSet的最后值,并且fraction不会保证一定会达到取值区间的两端,这个是数据跳动的根本原因!!否则就会在区间对比(会用到Interpolator插值器)并取值估值器会根据动

2021-12-28 12:04:42 950

原创 Android动画分析(ValueAnimator)

动画创建先看入口函数:参数很熟悉了,具体看里面做了什么,其实也很简单,创建一个实例对象,并将参数设置到对象中。第一个参数暂时先不看,看第二个参数,**anim.setObjectValues(values)**重点是 valuesHolder.setObjectValues(values);这里把输入的参数值传给了 KeyframeSet这个类,这个类很重要!在KeyframeSet 里面,将所有的参数值保存到一个 Keyframe数组中,这个Keyframe可以类比Map,键值对保存

2021-12-28 12:03:20 2305

原创 ListView多线程图片回调采坑

最近发现之前项目在使用ListView加载多图片的时候,图片出现了闪烁错误的现象!不过凭着多年的开发(被坑)经验,老夫对此毫不在意,甚至露出了轻蔑的笑容!简单!加Tag就行!分分钟写完代码,大概是这样的:自信满满的跑程序,发现大部分情况下确实正常,符合自己的预期,但是还是会偶尔的出现一两次的闪烁现象。这……难道是哪里的打开方式不对?开始各种查代码,整理思路,思考出现问题的原因。就在我百思不得其解的时候,突然想起我现在修改的是回调函数的代码,调用好像是在多线程调用的(因为项目写完有些时候了)

2021-12-01 19:32:01 1796

原创 百度地图导航采坑——Engine init failed

最近在做百度地图相关项目,其中涉及到定位和导航两个不同业务模块的整合。其中定位是之前的,导航是最近新增加的。!!!注意:按照官方文档来是完全不够的,一定要根据Demo的实际使用来导入使用众所周知,百度地图开发平台的文档简直不忍直视,要啥啥没有,完全只能参照着Demo进行一步步排错。由于之前项目中依赖了百度定位的包,BaiduLBS_Android.jar ,这东西是最坑的!! 没有之一!! 它会根据你选择的功能不同包含不同的类,但同时官网也没有给出具体哪些类在哪些功能中是有重复出现的,这就会导致

2020-07-03 11:31:04 1544

原创 依赖了包含aar包的库后出现Failed to resolve库解决办法

最近在项目中发现一个问题,如果某个module中依赖了aar库,然后app依赖了这个module生成的aar包的时候,当build工程的时候,会出现failed to resolve这个错误。只要在app的build.gradle中加入下面代码就可以解决了:repositories { flatDir { dirs project(':targetsdk').file('libs') } } 上面代码中的“targetsdk“替换成module的名字

2020-07-03 11:28:54 1295

原创 Android有虚拟导航栏时遮挡底部UI解决

这样设置就行了。记录一下~

2020-07-03 11:25:45 1231

原创 Manifest合并报错

在项目build过程中出现了manifest合并失败的错误,其中原因是依赖的项目在Manifest文件中也提供了provider,因此需要将重复属性替换掉,如下图所示:特此记录一下~

2020-07-03 11:18:45 487

原创 Activity启动流程分析——基于API 29

activity启动流程整体如图所示整个过程涉及到的主要类名已经在图中标红显示了,中间还有一些没标红但同样很重要的类,这些类咱们都会通过代码逐一分析其在Activity启动中的作用。启动activity后实际上是Instrumentation对象(顺便提一句,咱们重写Activity生命周期的回调方法就是通过这个对象来调用的)来执行execStartActivity操作,如下图所示:那么这个Instrumentation对象是怎么来的呢?看源码:上面代码中的data.instrumentati

2020-06-03 16:32:48 345 2

原创 JavaScript ES6之前的隐藏bug

最近在学习前端相关的知识,对于JS的语法也是有了一定程度的了解。其中发现了一个比较有意思的bug,便记录下来。相关代码贴在文末!首先在html中写5个按钮,并在其内添加多选框,具体的可以参考文末的代码,当我在使用for循环对这些按钮进行遍历设置点击事件监听的时候,发现页面上的按钮怎么也点不动,毫无反应,如下图所示:这是为什么呢?其实原因也很简单,我这里是写了5个按钮,那么 allButtons.length的值为5,如下图代码所示,当循环结束的时候,代码给第5个button设置了点击事件,此时的

2020-05-29 15:07:47 190

原创 Attempt to invoke method ‘ androidx.fragment.app.FragmentManager.isDestroyed()‘ on a nullpoint 问题解决

适配androidX中的问题解决

2020-05-14 09:24:37 3385 10

原创 VS Code的第一个Flutter程序

“下载安装以及配置Flutter开发环境参照之前的文章”打开vscode,使用快捷键command+shift+p打开命令面板,输入flutter,选择New Project,新建一个flutter项目即可:新建完成之后,vscode会新建一个窗口以及工作区和文件夹,如果你是像我一样设置了不同工作区以及对应的扩展(如:flutter扩展仅对我设置的flutter工程文件夹有效),那么你新建的...

2020-04-14 20:52:09 312

原创 Mac下Flutter开发工具VS Code配置使用

下载安装VS Code官网地址根据系统安装对应版本,win10参照之前的文章。Mac下直接下载解压,将解压出来的软件放入应用程序中即可。初次打开软件如下图所示,会是全英文展示(想学英文的朋友可以试试就这样用下去~当然我不想),这里介绍一个快捷键command+shift+p 打开强大的vs搜索框(官方称之为命令面板),搜索Configure display language,其实默认就有...

2020-04-14 11:12:32 424

原创 Win10环境下Flutter的环境安装教程

  前两天打渔晒网差不多了,今天开始安装Flutter环境。目前手上只有一台公司的x240,配置较低,试试看吧。系统配置下载安装Flutter SDK  既然是安装Flutter SDK,当然还是要去Flutter官网啦!附上官网地址:https://flutter.dev/  让我们开开心心的点击开始吧!嗯,在经历了漫长的等待和龟速下载,就像下面这样:  我隐约感觉事情不对劲,果...

2020-04-06 14:51:26 350

原创 初识VSCODE

初识VSCODE背景由于工作原因,本人一直在使用AndroidStudio做开发,但是由于AS的高内存占用,配置一般的电脑使用起来比较吃力。而最近疫情影响,在老家只有一台8g内存(还是自己掏钱升级过的)ThinkPad X240,AS一开,什么都不干电脑内存就占了百分之五十多,一旦编译运行起来,网页都不敢多开几个。实在是玩的不尽兴。契机作为一名移动开发,Flutter大半年前就吸引着我,之...

2020-04-04 18:21:09 150

空空如也

空空如也

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

TA关注的人

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