自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

csdn_aiyang的博客

业精于勤荒于嬉,行成于思毁于随。

  • 博客(214)
  • 资源 (17)
  • 问答 (1)
  • 收藏
  • 关注

原创 (七)RecycleView 性能提升、卡顿优化(绝对干货!!)

目录前言一、RecycleView 性能提升(1)卡顿原因:(2)优化提案:二、布局、绘制优化三、视图绑定与数据处理分离四、notifyxxx()局部刷新(1)常用的5个列表刷新(2)处理刷新闪烁问题五、改变mCachedViews的缓存六、共享RecycledViewPool(1)嵌套RecycleView卡顿原因(2)解决嵌套RecycleView卡顿七、惯性滑动延迟加载(1)快速滑动RecycleView卡顿原因:(2)解决快速滑动造成.

2020-07-15 20:39:05 3528

原创 Android View绘制及事件(五)View点击事件响应及分发过程详解

目录前言一、MotionEvent类二、事件传递对象的顺序三、事件传递过程的方法四、源码分析前言记得有人这样过说:View的事件传递和分发是个看起来简单、学起来也不难、讲起来却憋死个人、用起来又需要充实的知识和编程经验。没错,事件分发机制确实就只有几个函数而已,看起来好像也不难理解,实际学习也不难。那接下来我们一起梳理一下Android的事件分发机制的相关...

2019-05-09 18:22:59 1672

原创 Android性能优化(一)闪退治理、卡顿优化、耗电优化、APK瘦身

导语 自2008年智能时代开始,Android操作系统一路高歌,10年智能机发展之路,如今Android 9.0 代号P 都发布了,Android系统性能已经非常流畅了。但是,到了各大厂商手里,改源码自定系统,使得Android原生系统变得鱼龙混杂。另外,到了不同层次的开发工程师手里,因为开发技术的水平参差不齐,使得应用安装到配置极好的手机上,打开应用依然存在卡顿现象。最后,随着产...

2017-07-11 17:02:27 44476 10

原创 JAVA\Android 多线程看这一篇就够了

说到线程,就不得不先说线程和进程的关系。进程是系统的执行单位,一般一个应用程序即是一个进程,程序启动时系统默认有一个主线程,即是UI线程,我们知道不能做耗时任务,否则ANR程序无响应。这时需要借助子线程实现,即多线程。由于线程是系统CPU的最小单位,用多线程其实就是为了更好的利用cpu的资源。一、多线程创建方式//线程休眠1000毫秒,sleep使线程进入Block状态,并释放资源xx.start();//启动线程,run函数运行@Override@Override。

2017-03-23 13:24:42 26898 2

原创 Android 架构MVI、MVVM、MVC、MVP

简单了解一下MVI、MVC、MVP和MVVM。

2024-02-28 23:00:34 341

原创 Java CAS原子操作过程及ABA问题

CAS(Compare And Swap,比较并交换),通常指的是这样一种原子操作:针对一个变量,首先比较它的内存值与某个期望值是否相同,如果相同,就给它赋一个新值。CAS是一个不可分割的原子操作,并且其原子性是直接在硬件层面得到保障的。CAS是乐观锁的一种实现方式,Java原子类中的递增操作就通过CAS自旋实现的。CAS是一种无锁算法,在不使用锁(没有线程被阻塞)的情况下实现多线程之间的变量同步。

2024-01-18 19:39:19 368

原创 浅谈敏捷开发的思维

不是一种方法论也不是开发软件的具体方法更不是一个框架或者过程“敏捷”是一套价值观(理念)和原则,帮助团队在软件开发过程中更好地做出决策。简而言之,就是遵循了“敏捷”这一开发原则的开发方法。“敏捷并不意味着一味强调速度,而是轻量和高效。「百度百科」是这样说的敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。

2024-01-16 17:30:37 916

原创 Kotlin 同步与异步执行:run、runCatching、runBlocking 与 runInterruptible

run和runCatching是 Kotlin 标准库的一部分,可以在所有支持的平台上使用。runBlocking和runInterruptible是 Coroutines 的一部分。

2024-01-16 14:25:20 1064

原创 Android 开发规范(基础版)

style的name命名使用大驼峰命名法,几乎每个项目都需要适当的使用 styles.xml 文件,因为对于一个视图来说,有一个重复的外观是很常见的,将所有的外观细节属性(colors、padding、font)放在 styles.xml 文件中。项目的代码时间时间很长,经过太多人手,代码的规范性堪忧,目前存在较多的比较自由的「代码规范」,这非常不利于项目的维护,代码可读性也不够高。分析现有项目的代码的情况,输出的『定制化规范』文档,用于提高代码的可读性和可维护性。

2023-07-15 22:01:31 900

原创 Android 图片加载库改造

1、异步任务处理返回后,activity已经销毁,此时进行加载图片,会报异常You cannot start a load for a destroyed activity ,App会崩溃1). 一个是网络请求,但由于rxjava异常拦截的原因,不会崩溃@Overrideif (data!2) 另一个是其他异步任务回调中处理图片就会崩溃了,类似下边的代码@Overridetry {});}.start();finish();

2023-07-15 21:03:42 647

原创 Android App首页全局黑白化方案探索

关于黑白化页面,这几年是比较常见的场景。比如,在清明节或特殊时政,各大APP都会进行黑白化处理。普通小白刚接到需求的时一定会感觉是不是好麻烦,要搞一套换肤吗?下面有三种实现方案,一起来探索吧!最后咱们再总结一下黑白化方案:使用了 ColorMatrix 设置饱和度为 0,设置到 Paint 中,让根布局拿着这个 Paint 去进行重绘。

2023-06-12 11:41:07 594

原创 Android 手机号344格式化,字符串拼接和EditText输入框

国内手机号一般11位数字,在登录注册等页面经常会用到,其他信息介绍页面也可能会用到手机号的显示。

2023-05-10 10:20:18 265 1

原创 Android TextView多行显示后仍可以展示...

textview多行显示后仍可以展示...

2023-04-07 15:35:43 338

原创 通俗易懂讲解,彻底弄懂 https 原理本质(五)https 的过程

摘要:单向加密算法,比如md5对证书整个内容加密的结果就叫摘要,也叫做证书的指纹;签名:小明用私钥🔑对摘要进行加密出来签字串,就叫做签名。验签:用公钥对签名进行解密出来的摘要和原来的对比,就叫做验签。

2023-03-27 19:25:20 462

原创 彻底弄懂 https 原理本质(四)数字证书

信息的传输过程中,如何保证内容不被篡改,即信息的完整性?结合前面学到的加密知识,我们可以用单向加密算法。比如,用 md5 加密算法,小明👦给小花👧发的内容用 md5 作一次加密运算,会生成一个唯一的字符串,我们把这个字符串起个名,叫做“摘要🍎”。小明👦会把单向加密算法 md5, 以及md5运算的结果摘要🍎,一块发给小花👧。小花收到内容后,用md5对内容进行加密算法,生成新的摘要。小花👧将新的摘要🍎和原先的摘要进行对比,如果相等,说明没有被人篡改过。如果不相等,说明内容被别人修改过了。

2023-03-27 18:44:34 382

原创 彻底弄懂 https 原理本质(三)加密漏洞

“没用挖补了的墙角,只有不努力的小三” 。有志气的人都不轻言放弃,下面看老王🐶如何进行反攻。

2023-03-27 17:17:35 405

原创 彻底弄懂 https 原理本质(二)加密过程

小明选择使用效率高的‘对称加密’密钥 S🔑方式给小花传递情书,再通过通过效率慢的‘非对称加密’🔐方式将密钥 S🔑二次加密。而且此时‘非对称加密’工作量很小,密钥 S🔑安全的传输给对方之后,后面的通信就直接使用对称加密了,这样效率就高了。

2023-03-27 16:08:49 299 1

原创 通俗易懂讲解,彻底弄懂 https 原理本质(一)加密知识

如果对https的过程一知半解,在每次面试时,面试官很可能就问你这个问题。相信很多人对 https 弄不清楚,只是知道 https是网络传输安全加密用的,背后的原理和过程并不是很清楚。其实https 的原理过程,并没有那么复杂,只是有些文章没有说清楚,这样的文章看多了,就迷糊了。MD5 : 相信这个大家都都熟悉了,一个明文,md5以后,对应一个唯一的密文。加密按照加密方式,可以分为以下三种方式。单向加密、对称加密、非对称加密。进行加密和解密(公钥加密私钥解密,私钥加密公钥可以解密);

2023-03-20 10:22:40 521 3

原创 Android 动态代码设置view宽高参数,运行后UI大小没有改变问题

日常开发中遇到一个需求,就是根据业务逻辑,动态改变一个view控件的大小。这种需求也是比较常见的,但是小白比较容易遇到一个小问题,就是代码重新设置了view的宽高大小,运行后发现view没有发生改变。

2023-02-24 19:51:05 1233

原创 Android 增加布局圆角功能,支持背景裁切圆角

我们Android开发同学最常见、频繁画UI时会遇到有角度的布局。例如:通常,我们都会在drawble文件夹下创建Shape.xml去实现对吧?当然这样的代码实现方式没毛病。但是,项目大了业务繁杂,工程中会出现很多此类文件,显得非常臃肿,而且不方便复用,不利于研发效率提升。那么,我们就会思考,是否可以有一种能更快捷且优雅的方式实现这个圆角布局。

2022-11-16 22:33:27 1151

原创 关于产品MVP的定义与实践

MVP(Minimum Viable Product)—— 关注商业前景MDP(Minimum Desirable Product)—— 关注用户体验

2022-11-14 14:13:25 3406

原创 《复盘+》把经验转化为能力

复盘”原是围棋中的一个术语,原意是"下完一盘棋之后,重新把对弈的过程摆一遍",指的是"做完了事情,再从头过一遍,以不断检验和校正目标;分析得失,找原因,找后账;提高认识,总结规律"。运用到企业管理中,复盘指的是从过去的经验、实际工作中进行学习,帮助管理者有效地总结经验、提升能力、实现绩效的改善。通俗的讲,就是一件事件做完以后,做成功的,总结经验,提炼出方法论;失败的,思考预先怎么计划的、中间出了什么问题、失败的主要原因及矛盾、哪里做得好、哪里没做好整理出来,下次再做的时候,吸收这次的经验教训。

2022-10-26 18:59:14 2824

原创 Android Kotlin之let、with、run、apply、also函数的使用

相比Java语言Kotlin更加简洁安全高效。不仅支持lambda表达式,还支持非空验证机制,另外提供一套源码标准库(Standard.kt)。但是,对于Kotlin的初学者来说,可能会经常写编写出不够优雅的代码,而Kotlin提供了一些内置函数便可以帮助优化代码。Standard.kt是Kotlin库的一部分,它定义了一些基本函数。这个源代码文件虽然一共不到50行代码,但是这些函数功能都非常强大。let函数实际上是一个作用域函数,当需要去定义一个变量在一个特定的作用域范围内时,就可以使用let函数。

2022-09-27 14:31:14 2902

原创 Android 项目主题样式库:统一颜色、字号,避免重复开发

组件化多业务模块情况下,各模块中存在一些字号、颜色等样式定义、引用相对混乱的现象。大部分业务开发同学会随意使用颜色和字体等,没有明确的统一格式进行调用。因此,导致项目中相关重复定义颜色字号增多失控,不易维护,增加包体积,开发同学的在使用上不够简单高效,经常编写重复代码。

2022-09-21 19:23:01 1366

原创 Android Jetpack之LiveData 源码分析

LiveData 是一种持有可被观察的数据存储类。和其他可被观察的类不同的是LiveData 可以在 Activity ,fragment 或者 service 生命周期发生改变时通知更新。LiveData 已经是必不可少的一环了,例如 MVVM 以及 MVI 开发模式中,都用到了 LiveData。

2022-09-15 16:37:37 1112

原创 Android Jetpack之DataBinding+ViewModel+LiveData+Room

Jetpack是一个由多个技术库组成的套件,可帮助开发者遵循最佳做法,减少样板代码并编写可在各种Android版本和设备中一致运行的代码,让开发者精力集中编写重要的代码。

2022-09-13 15:16:33 715

原创 Android Jetpack之ViewModel、LiveData

Jetpack是一个由多个技术库组成的套件,可帮助开发者遵循最佳做法,减少样板代码并编写可在各种Android版本和设备中一致运行的代码,让开发者精力集中编写重要的代码。页面翻转数据状态保留不再需要手动处理生命周期数据始终保持最新状态不会发生内存泄露异步情况,不会因Activity停止而导致崩溃。

2022-09-13 11:34:28 762

原创 Android Jetpack之LifeCycle

LifeCycle在其内部管理自己的生命周期,从而解藕页面和组件,降低内存泄露发生的可能性,Activity、Fragment、Service、Application均有LifeCycle支持。现在越来越多的公司招聘要求Jetpack是必会项目,Google也在疯狂的更新Jetpack组件,热度完全不亚于Kotlin!如图所示,Jetpack是一个由多个库组成的套件,可帮助开发者遵循最佳做法,减少样板代码并编写可在各种Android版本和设备中一致运行的代码,让开发者精力集中编写重要的代码。

2022-09-09 16:02:58 636

原创 Android View转换为Bitmap,实现截屏效果

安卓设备一般都自带截图功能,但是用户体验有不好之处。就是会连带着状态栏📶、🔋、时间日期、其他不必要页面中信息,等等与用户想截屏的内容不符的信息也会被保存下来。通常,截图后用户会再次裁剪一次才能想把真正需求分享出去。因此,咱们技术研发会遇到针对性的会做一些应用内的截屏功能。

2022-09-08 16:44:30 2101

原创 Java 多线程join()方法的作用和实现原理解析

join():等待该线程结束,才能执行其他线程。通常用于在main()主线程内,等待其它线程完成再执行main()主线程。Join方法实现原理是通过wait方法, 当main线程调用Thread.join()时,main线程会获得线程对象的锁,调用该对象的wait(),直到该对象唤醒main线程 。这就意味着main 线程调用Thread.join时,必须能够拿到线程对象的锁。

2022-08-22 18:48:11 3851

原创 Android中Textview文本变化父布局宽度不变问题

这是一篇关于布局绘制刷新的小案例,实战经验总结分享。问题描述:一个 LinearLayout,宽和高都是自适应wrap_content。里面放一个TextView,宽和高都是自适应wrap_content。当TextView调用setText()方法改变文本显示时,LinearLayout的宽度只能跟着改变的问题。根据Android View绘制及事件(三)自定义View及View绘制流程。

2022-05-09 16:22:30 3373 2

原创 Android View绘制及事件(六)View刷新机制

目录前言一、流程图解二、方法解析1、RequestLayout()2、invalidate()3、postInvalidate()三、小结1、invalidate()和requestLayout()2、invalidate()和postInvalidate()前言在之前系列中《Android View绘制及事件(三)自定义View及View绘制流程》介绍了View的绘制流程。 这里在做一次补充一下对于调用view的刷新会走...

2022-05-07 19:14:39 1413

原创 Flutter 2.0 Null-Safety(空安全)使用和理解

前言在 Flutter 2.0 中,一项重要的升级就是 Dart 支持 空安全,空安全究竟是什么?日常开发中我们该怎么使用?下面我们通过几个简单的代码来介绍Flutter 空安全。Dart 空安全是什么?Dart在语法上支持空安全检查。在空安全的代码编译期下,运行时的NullPointerException错误提示被提前到了开发阶段。如下案例:void main() { String mName; print(mName.length);}非空安全下...

2022-03-04 11:33:40 7187

原创 Android TextView 是否有省略号,动态获取和设置行数

目录前言一、TextView设置最大行与省略号二、检查文本是否省略三、实战前言 最近在做一个效果,就是当文本显示超出2行时,文本末尾出现...(省略号),并且显示一个【展开】的按钮。点击时【展开】全部文本内容,并且按钮由【展开】变成【收起】。点击【收起】文本恢复到一开始状态。一、TextView设置最大行与省略号单行显示,如果超出的话用“…”省略号显示,只要设置:android:ellipsize="end"android:singleL...

2022-02-23 10:40:19 4100

原创 Android TextView单行带着图标,末尾省略号,图标可点击。

Android-TextView单行带着图标,末尾省略号,图标可点击。

2022-02-22 11:29:27 3292 1

转载 Android 截屏监听分享

目录前言一、FileObserver对比ContentObserver二、本文通过ContentObserver实现三、实测兼容性前言网上一般列举的有三种方法利用FileObserver监听某个目录中资源变化情况。 利用ContentObserver监听全部资源的变化。 监听截屏快捷按键 ( 由于厂商自定义Android系统的多样性,再加上快捷键的不同以及第三方应用,监听截屏快捷键这事基本不靠谱,可以直接忽略 )。一、FileObserver对比ContentObse

2021-11-01 16:22:41 1736

原创 使用GitLab生成SSH Key(Mac)

目录GitLab简介:步骤:第一步:检查是否已经存在SSH Key第二步:生成/设置SSH Key第三步:将SSH Key添加到GitLab中GitLab简介:公司代码放在gitlab上,想要拉去代码,需要先生成了一个SSH Key上传至gitlab。步骤:第一步:检查是否已经存在SSH Key打开电脑终端,输入以下命令ls -al ~/.ssh 会出现两种情况终端出现文件id_rsa.pub 或 id_dsa.pub,则表示该电脑已经存在SSH Ke

2021-04-12 19:54:52 4298

原创 Flutter pubspec.yaml-packages引用及get\upgrade区别

目录一、版本号运算符:二、Packages get和Packages upgrade的区别:一、版本号运算符:(1)写一个固定的版本号,如:dio: '3.0.0';(2)使用<,<=,>,>=等操作运算符,这些运算符可限制使用的最低版本及最高版本。如:dio: '>=2.0.0 <3.0.8';(3)使用^符,这个操作符限制了可使用的同系列最高版本,如使用dio: '^3.0.0'这个时候可以更新到3.后面的最新版本,如出现了'4.0.0'系

2020-12-28 23:14:28 962 2

原创 Flutter 按钮Button多样式练习

目录一、Flutter 常用的 Button二、演示图如下三、代码案例四、参数详解一、Flutter 常用的 ButtonRaisedButton:凸起的按钮,其实就是 Material Design 风格的 Button FlatButton:扁平化的按钮 OutlineButton:线框按钮 IconButton:图标按钮 ButtonBar:按钮组 FloatingActionButton:浮动按钮 DropdownButton:下拉框按钮二、演示图如..

2020-12-25 20:43:15 2619 1

原创 Mac Charles 替换和改写接口地址、环境、参数、状态码等

目录前言一、替换接口1、打开Charles,选择Tools->Map Remote2、编辑Map Remote3、OK,请求接口二、改写接口1、选择Tools -> Rewrite>勾选Enable Rewrite2、选择Type类型,改写内容前言在开发接口调时过程中,有时候根据接口返回的不同情况呈现不同的UI效果,每次都让后台人员修改测试账户的数据状态比较麻烦。但是,借助Charles代理就可以替换或修改请求的接口环境、头部、请求参数、返回参数.

2020-09-10 11:58:43 2107 3

办公之连打印机及邮箱配置.zip

解压包后会看见三个文档,里面分别是介绍windows/Mac电脑如何安装连接打印机及配置公司邮箱的方法。对于初入办公司的同学非常实用。

2020-07-06

Android 二维码扫一扫demo

https://mp.csdn.net/postedit/78983090 需要看文章的请点击连接。关于二维码的生成及原理,这篇文章都说的很清楚。有什么问题可以进qq群569614530

2020-01-06

ExpandableListViewDemo.zip

仿QQ联系人页面,对好友和群聊进行分组。RadioGroup.OnCheckedChangeListener进行监听切换,HttpURLConnection进行网络接口请求,JSONObject进行转换成String类型。

2019-11-27

TestApplication.zip

一个Androd的小项目,实现了模块化和组件化,实现阿里路由进行页面跳转。代码简洁,小白教程。博文讲解链接:https://blog.csdn.net/csdn_aiyang/article/details/82152538

2019-05-08

download-manage

应用更新下载安装APK,兼容6.0、7.0、8.0,非常有价值的demo。本人踩坑记https://blog.csdn.net/csdn_aiyang/article/details/85780925

2019-01-09

Android 短视频录制demo

Android短录制的demo。代码仅供参考开发。

2018-09-20

RealVNC532.zip

mac服务器,连接工具。jenkis打包服务器连接设置。破解版。

2018-03-22

charles402

提供一个可以在mac操作系统下抓包工具charles破解版。

2018-01-24

MVPDemo练习

http://blog.csdn.net/csdn_aiyang或https://github.com/aiyangtianci/MVPDemo

2018-01-08

ZXing资源jar包

欢迎到我博客http://blog.csdn.net/csdn_aiyang,有写关于而二维码、条形码的使用。

2018-01-05

讯飞语音合成

该demo使用Android Studio工具,API用到26,可在Gradle.app里修改,这样可以不用下载更新AS的Android SDK 版本。

2017-12-14

Bluetoothdemo

蓝牙相关技术的demo,界面优美防原生。详情请看博文http://blog.csdn.net/csdn_aiyang/article/details/77933797

2017-09-11

音频震动管理

该练习,是对Android的音频音量的管理和对手机震动的实现。详情请看博客,http://blog.csdn.net/csdn_aiyang/article/details/77893052

2017-09-08

RongYunDemo

融云的demo,即时通讯实现聊天对话框等功能,项目稳定,代码清晰,方便移植到你的项目中,解决业务需求。好东西,多多分享,你值得拥有。

2017-08-29

流行算法排序实用案例

这个demo里写了快速、冒泡、二分、插入、希尔等排序算法的实例,并进行跑分排名。本人测试结果最优算法是插入排序。

2017-08-21

ToolBar封装抽象类统一项目风格

Toolbar是活动的标题栏,把ToolBar 封装成一个抽象Base类,可以加快开发的脚步使代码更整洁清晰。这里我附上源码,非常实用,新手必备,加快开发速度和保持项目统一风格。

2017-06-01

自定义日历-实现签到订约功能

签到送积分的系统,使用ViewPager+Releteview+Calendar+算法实现。本人因为真心觉得很简单实用。免费分享,希望对你有帮助。

2017-04-26

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

TA关注的人

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