自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(619)
  • 资源 (2)
  • 收藏
  • 关注

原创 Vim 相关

YouCompleteMe安装(2020.12) - 知乎奇怪的前言YCM的github项目上有 非常详细的安装指导以及问题解决方法。在wsl2上安装过一次,后来瞎改注册表导致wsl出问题又重装一次,在kali上装一次,在ubuntu上又装一次,不写写都感觉对不起自己。: ) 环境相关…https://zhuanlan.zhihu.com/p/337746930...

2021-12-09 09:17:24 604

原创 Android换肤逻辑

换肤逻辑来归纳一下换肤的相关原理吧!有这么一种说法,对于一个成熟的控件,其实核心逻辑代码仅仅占总代码的10%,并且处理了90%的需求,然后剩下的90%的代码,是用于解决剩下的10%的需求的。本文当然也只是为了梳理换肤的核心逻辑,但这绝对是远远不够的,毕竟优化是无止境的。思维导图核心逻辑先来看一看换肤的核心逻辑,我可以打包票,看懂了如下的流程图,换肤的核心的逻辑也已经理解的差不多了。动态换肤的核心逻辑就是维护一份从Activity到其中需要换肤子视图列表的Map,然后在触发换肤操作的时候遍历Map

2021-07-16 15:03:27 423

原创 开发日记 20210311 重新定义未来

The best things in life, they are free!多问问自己为什么!对得起自己每一行代码!技术没有速成的方法!要了解代码里面到底做了一些什么!几年以前,我感觉这个世界太无趣了,人与人直接总感觉隔了一层纱。这两天,我感觉生活中很多事情非常有挑战性,并总是尝试用乐观的一面去看待事物。今天,我感觉到,原来,热情虽然不是能量,但是也是可以传递的。...

2021-03-11 20:43:47 192

原创 《曾国藩传》摘抄

前言前两天去理发,理发店里面有挺多的书,非常多,本来也没有在意,但是无意间看见一本记录曾国藩书信的。对于曾国藩其实有一部分了解,所以还是边理发边细细品味了起来。整本书200多页吧,精装本,我也不是打印机,就简单记录几句让我感触颇深的,我相信,仅仅这几点,就能让我受用终生了。正文敬以持躬,恕以待人。敬则小心翼翼,事无巨细,皆不敢忽。恕则常流余地已处人,功不自居,过不推诿。评:敬,对自己严;恕,对别人宽。为人处世,为此二字。趋时者博无识之喜,损有道之真。评:不要赶时髦。要揣摩不因时间流逝耳

2021-01-07 21:51:35 1263

原创 20年总结,21年展望

从我第一次接触键盘到今天,到底经历了多少年的时间呢?事到如今,我已经不会再去关心自己会不会去后悔了,因为所谓的后悔仅仅是浪费自己屈指可数的时间罢了。其实我很开心,我能从事IT这个职业,记得刘慈欣的某一部小说里面有一句话让我记忆深刻,虽然一名优秀的程序员很难成为上帝,但是,上帝一定是一位优秀的程序员。你看,这毫无表情,看似毫无生机的数字世界,是人们赋予了他们上下文,赋予了他们意义。而上帝,就好似程序员一般,将特定的规则赋予这物质的世界,从此这物质的世界诞生了生命,从而被赋予了单纯的规则和定理之外的东西,那

2020-12-31 20:00:36 901 1

转载 (转载)Linux信息资源

摘自Linux系统管理手册(第二版)P.11Web站点说明linux.slashdot.org新闻巨头Slashdot针对Linux的技术支持网站lwn.netLinux开放源代码方面的新闻集散地www.freshmeat.netLinux和UNIX软件的海量索引库www.kernel.orgLinux内核的官方网站www.linux.com...

2019-06-26 18:51:33 1196

原创 Flutter 如何设置状态栏

通过使用类的方法来设置状态栏的样式,包括透明状态栏。以下是一个简单的示例:首先,在文件中添加然后,在Flutter代码中使用在上面的代码中,方法被用于设置状态栏的样式。通过对象,你可以指定状态栏的颜色,这里将其设置为透明色,同时还可以设置状态栏图标的颜色等。请注意,这样设置状态栏透明后,状态栏将不再占用应用程序的布局空间,而是覆盖在应用程序上方。这可能会影响你的布局和UI。如果需要处理状态栏高度的问题,你可能需要适当调整你的布局。

2024-01-23 20:17:02 771

原创 Flutter 屏幕适配之相对尺寸适配

那么来看看具体该怎么实现吧,其实很简单,首先我们和UI约定,UI图中的设备宽高是多少,在我们这里是宽375,高812。然后如下就是具体的实现代码,使用的方式也很简单,比如说,在UI图中,标记出是1pt的尺寸,我们完全可以通过1.pt的方式来指定其尺寸。有些长,有的短,有的粗,有的细,这个的确給用户提供了非常多的选择,但是对于开发来说就比较苦恼了。请注意,如果使用这两种尺寸存在一些问题,比如遇到尺寸不是375*812的尺寸的设备那些方块的图形就会被拉伸成长方形。pt表示横向的尺寸,hpt表示纵向的尺寸。

2024-01-23 18:32:10 601

原创 Flutter排版格式:如何去除行末的,

Flutter生成的代码其实有些时候非常难受,就是IDE自动生成的代码会自动在小括号和中括号之后加上逗号,这些符号会增加代码的行数,所以我们需要通过正则表达式来匹配这些逗号,并且删除掉。

2024-01-23 17:03:26 375

原创 Flutter层对于Android 13存储权限的适配问题

场景是这样的,在Flutter层我们希望从本地选取图片文件,在之前的版本(Android13)中,在选取文件前我们就需要判断本地存储权限的获取状况,然后根据权限的状态来确定进一步操作,比如说弹出权限请求框或者直接让用户选择本地图片。解决这个问题我们只需要在请求storage权限的时候进行当前手机Android版本的判断,如果当前手机的版本大于Android 13,那么就同时请求上述三种权限,然后将请求结果包装成正常的storage请求结果即可。感觉很久没有写博客了,不对,的确是很久没有写博客了。

2023-09-19 20:35:10 2039 1

原创 自定义TagViewGroup

重复造轮子永远时开发过程中的最大忌讳,而且开源框架是经历过历史和时间的检验的,不能断言说他不会出问题,但是可以说它在绝大多数场景下不会出现问题。的作用是实现其中的子视图的自动换行,保证子视图能够按照在xml中传入的顺序来相对合理地显示到界面上。来看看实现的效果,可以,基本符合要求了,能自动换行,高度也符合标准了。工欲善其事必先利其器,我们先实现一个随机宽度,高度和颜色的视图。好了,基本的思路已经说完了,我们来看看每一步具体怎么实现。文件中将若干个我们定义的子视图放置到。中存储的测量结果,调用各个子视图的。

2023-07-10 18:12:20 219

原创 布局的测量

测量绘制触摸反馈。今天我就主要来讲讲测量相关的内容。计算机相关的很多知识点似乎都很喜欢用父子关系和结构来进行定义,可能因为父子关系比较通俗易懂吧。布局的测量的意思就是如何根据XML文件中的布局定义关系,来获取到实际视图树每个子视图所在的位置和大小,这样一来,子视图就能够根据位置和大小来在给定的位置上来绘制自己所需要的效果。视图按照其职责可以分为两类:ViewGroup和View。

2023-06-26 20:26:27 340

原创 自定义MaterialEditText

一如既往,这是我日常学习的日记,最近在巩固一些基础东西,总感觉一些Android基础还是偏薄弱。所以还是打算从基础重新来一遍,真的,很多时候,很多问题出现的原因并不是顶层的原因,而是我们从根本,从基础上就不牢靠。最近闲下来就在看扔物线的视频,说真的,很多其实挺基础的,但是感觉能在基础上面翻出花样来其实也是一种本事。因此,来讲讲今天的主题自定义MaterialEditText。当然,我并不打算完整地实现一摸一样的一个相同库出来,如果是那样,那就完蛋了。今天就选一个最简单的案例来讲讲吧。

2023-06-15 20:12:54 1245

原创 Bitmap和Drawable的区别

命名的时候不过脑子,往往就会有非常多的后遗症,就比如说拼写错误,后面人如果要重新改方法名的话代码评审的时候就需要花费额外的功夫去评审更多的文件,还有方法反射的风险。特别是遇到剧本写的非常好的动漫,它总是能在恰到好处的地方给你留下悬念,从而引诱你非常期待下一集,没错,说的就是你《我推的孩子》。我们可以看到对于Bitmap类,官方是不支持继承的,也就是不支持自定义Bitmap的,因为Bitmap更多的像是Kotlin的Data类,里面仅仅存储了图片的相关信息。awable的作用是封装绘制的过程。

2023-06-12 18:28:12 646

原创 属性动画实现旋转入场效果

其实我感觉这部分的内容挺无趣的,不过我会尽量用比较有趣的案例来讲述吧。想了很久,到底用什么方式来讲述相关的内容会比较有趣,而不是单纯的在读教案。这点其实困惑了我挺久的,非常久,非常久,大概有10分钟左右吧,一直在想一直在想。然后我决定搞一个骚操作,弄个相对来说比较有挑战性的效果:变速旋转入场。

2023-06-08 21:25:49 525

原创 如何实现折起来的效果

具体实现结果就是上述的效果,那么我们应该如何实现上述的效果?一如既往,大象装冰箱,分三步怎么进行操作?分而治之即可。获取图片绘制上半部分绘制下半部分。

2023-06-02 19:21:23 214

原创 文字环绕图片效果实现

书接上回,我们来讲讲如何实现“文字环绕图片”的效果吧。

2023-06-01 12:44:25 816

原创 Android中静态和动态文字的绘制和测量

Android中自定义视图的时候存在两种情况,静态文字和动态文字。顾名思义,静态文字就是显示内容是固定的,不会产生变化的文字,而动态文字则是内容会不断产生变化的文字信息。在说明为什么要在绘制文字的时候区分静态文字和动态文字之前,我们需要首先讲一讲,静态文字的测量和绘制方式,静态文字的绘制我们需要基于静态文字的边框来决定。在我们调用drawText时,系统api会根据paint.textAlign,基准点的基础上,基于基线进行绘制,文字的基线往往在文字的底部,所以如果将基准点设置为视图的中心,那么就难免会造成

2023-05-24 14:18:26 819

原创 android和flutter的混合项目切换系统语言时app重启启动问题

这个库支持自动检测当前系统的语言,并加载相应的翻译文件。通过这种方式,当用户切换系统语言时,应用程序不会重启,而是直接更新界面语言。中,接收到新的语言信息后,重新加载对应的翻译文件,并更新界面。的 Activity 中监听系统语言变化的广播。将当前设置的语言保存到本地。接收到语言变化的广播后,在。,将新的语言信息传递给。,并将新的语言设置到。

2023-05-22 12:32:45 599

原创 常见协议的默认端口

以上是一些常见协议及其默认端口号的列表,供参考。

2023-05-22 10:07:59 179

原创 Android,原生启动页面和Flutter Splash页面存在偏差问题解决

项目一直存在一个比较尴尬的问题:就是点击应用程序时,原生启动页和Flutter加载页明明用的是同一张图片,但是每次启动的时候总是会存在偏差,图片中间的Logo在Flutter页面中相对于Android原生的页面往往会上移一些,这个其实挺蠢的= =说的夸张一点就给用户一种,应用闪退重启过了的感觉。Flutter中的BoxFit属性也是用于控制图片如何适应容器的。总的来说,Android中的scaleType和Flutter中的BoxFit都是用于控制图片适应容器的方式,但它们的具体实现略有不同。

2023-05-20 16:16:44 980

原创 android简单优化:handler延迟处理消息

方法是 Handler 类中的一个方法,用于将指定的 Runnable 对象从消息队列中移除,以便在未来的某个时间点取消或延迟执行该任务。方法将一个 Runnable 对象发送到消息队列中,并在 1 秒后执行。如果需要取消该任务,只需要调用。需要注意的是,如果该任务已经被执行或者尚未进入消息队列,则调用。方法时,需要确保任务已经被发送到消息队列中但尚未执行。方法并传入该任务对应的 Runnable 对象即可。如果需要在未来的某个时间点取消该任务,则可以调用。方法并传入该任务对应的 Runnable 对象。

2023-05-18 19:34:11 1252

原创 android 混淆map的位置

目录下,文件名一般为mapping.txt。该文件记录了混淆前后类、方法、变量等成员的对应关系,可以用于在混淆后出现crash或者错误时进行解析和调试。谷歌上架后,有可能会出现一些比如说安全问题之类的警告,这里不贴出来了,上架的项目肯定是混淆过的,那么怎么排查出具体是哪个地方谷歌存在异议了呢?Android混淆后的映射关系文件默认会生成在。在mapping.txt文件下搜索。就行了,后续定位就因项目而异。

2023-05-18 12:39:49 158

原创 Android如何同时安装同项目的不同flavor包

在 Android 中,可以通过使用构建变体(build variant)和 flavor 来设置应用的包名。例如,在使用 Android Studio 进行构建时,可以通过 Build Variants 窗口中的下拉菜单选择不同的 flavor 和构建类型。在这种情况下,Gradle 将根据当前所选的构建变体自动选择相应的 flavor 和应用程序包名称。这样,就可以根据 flavor 来动态设置应用程序的包名称,而无需在运行时手动修改它。那么问题就很简单了,我们只需要修改根据不同渠道应用包包名就行了。

2023-05-18 12:32:51 583

原创 android xfermode无法生效,离屏缓冲来帮你

我们在最初使用Xermode来实现一些类似圆形头像的效果时,会出现并没有按照预料之中裁剪的情况,这是因为我们忽略了一件事情,Xfermode作用于两个图像层级进行相互裁剪,并不是想当然的是你绘制的上个视图,而是当前整个画布的底板!需要注意的是,离屏缓冲会占用较多的内存空间,因此在使用时需要注意及时释放资源,以避免内存泄漏。安卓的离屏缓冲(Off-screen buffer)是一种图形渲染技术,它允许在一个单独的内存区域里进行图像绘制,而不是直接在屏幕上进行。最后,我们将这个位图绘制到屏幕上,可以使用。

2023-05-17 19:03:59 586

原创 kotlin判断某个字符串是否属于某个语种

在上面的代码中,我们首先使用Locale.forLanguageTag()方法创建了两个Locale对象,分别对应英语和中文,然后通过调用getLanguage()方法获取语言码,再使用.equals()方法和字符串进行比较,判断字符串所属的语言类型。由于英语的语言码为"en",所以我们使用text.substring(, 2)方法获取字符串前两个字符,即"He",再与"en"进行比较。Kotlin可以使用Java中的Locale类判断字符串所属的语言类型。

2023-05-11 23:01:29 340

原创 flutter,android混合项目如何抽离出独立的flutter项目

要将Flutter部分抽离出独立的项目,可以采用Flutter模块化的方式,将Flutter部分封装成一个独立的Flutter Module,并在原有的Android项目中引入该Module。在该文件中,我们将aar输出路径设为output/flutter_module-release.aar,这样在构建Flutter Module时,会将aar文件输出到该路径下。这里的../flutter_module/是指Flutter Module的根目录所在的相对路径。1. 创建Flutter Module。

2023-05-11 23:00:53 530 1

原创 gradle绘制各个模块的依赖图

1. 使用 Gradle 插件:可以使用如 org.dm.gradle.plugins.dependency-graph 这样的 Gradle 插件,来生成模块依赖图。在 IntelliJ IDEA 中打开 Gradle 项目,然后转到 菜单栏中的 View -> Tool Windows -> Gradle。2. 使用 IntelliJ IDEA:IntelliJ IDEA 可以自动为您绘制 Gradle 项目中的依赖图。在 Gradle 中,您可以使用多种方式绘制项目中各个模块的依赖关系图。

2023-05-11 22:58:19 300

原创 kotlin解析excel文档

这里使用 getStringCellValue() 方法获取单元格中的文本值。如果单元格中的值为日期、数字等类型,需要使用相应的方法进行获取。首先,需要引入 Java Excel API 或 Apache POI 等第三方库。Kotlin 是一种基于 JVM 的静态类型编程语言,可以使用它来解析小语种 Excel 文件。然后,创建一个 Workbook 对象,并指定 Excel 文件的路径。遍历表格中的每一行和每一列,并获取单元格中的值。这里获取的是第一个表格。接着,获取需要解析的 Excel 表格。

2023-05-11 22:56:23 796

原创 BouncyCastleProvider找不到问题解决

Android Studio解决BouncyCastleProvider找不到的问题//AES256加密private byte[] AESEncrypt(String content, byte[] key, byte[] iv){ byte[] byteContent = content.getBytes("utf-8");// Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider()

2022-10-10 10:17:59 2075

原创 Android基础(五):HTTPS

前言HTTPS可能是我写这个系列的第一个坎,可以这么说,前面几篇的内容其实都是为了HTTPS服务的。在这个篇章中我希望能够按照自己的理解来把HTTPS协议完整地理清楚,HTTPS是如何通过那么多的环节以保证数据传输的安全性。在写这篇文章的时候,我仅仅只是站在一个前端的角度上来看待这些东西,实际上很多内容其实也并不是写的很详细,我在简书上看到一篇写的很详细的博客,如果读者对于HTTPS的更加深层次的细节感兴趣,可以参考HTTPS加密原理。正文首先讲讲HTTPS是什么?我们都知道HTTP协议是位于TCP

2022-08-11 14:35:41 977

原创 Android基础(四):TCP/IP

其实就个人情感来讲,我并不是很想讲这块,甚至很想把这块直接在下个篇章也就是HTTPS中一笔略过的,但是最后仔细想想过后,还是一声长叹,干吧!先来谈谈协议,什么是协议,我们在网络中传递的数据说到底就是01的数据,脱离了上下文的话,这些数据就毫无意义。而协议就是这里所谓的上下文。...

2022-08-07 17:09:53 1715

原创 Android基础(三):登录与授权

前言这个篇章我们来谈谈登录和授权的相关操作,很多时候真的感觉自己其实真的非常怠惰。正文今天来讲讲登录和授权那些事情,我们首先先默认我们的请求都是基于HTTP进行的(为了防止抬杠)。我们知道HTTP协议是无状态的,也就是说,HTTP协议本身并不能验证发送方和接收方的身份。但是,我们实际业务就需要这样的功能,那该怎么办呢?还能怎么办,只能每次请求的时候手动携带可以用于验证的身份信息了。这就是Cookie和Authorization的作用。CookieCookie作用会话管理:登录状态,购物车

2022-08-03 10:21:41 2793

原创 Android基础(二):编码

在这个篇章中我希望能够对编码中我认为比较重要的内容进行一些必要的整理。相信很多人在日常的开发中多多少少会遇到一些与编码相关的名词,比如说AES,DES,REA,DSA,MD5,SHA1,SHA256等等。然后每次听别人侃侃而谈的时候,总感觉非常厉害的样子,但是因为自己对于这个方面一知半解,只能随声附和。在这篇文章中我并不打算涉及任何网络协议的相关名词,只是希望能按照我的思路将上面所说的一系列专有名词串在一起。即所谓的用我自己的话来复述如上的知识点。说真的,整理这种文档真的很累,我也不知道自己能坚持到什么时候

2022-07-29 00:55:57 333

原创 Android基础(一):Http基础与Retrofit

最近换了一家公司,直接接触我完全不熟悉的flutter,花了一些时间来专门去适应。现在基本适应了,感觉之前荒废了很多的时间,也感觉自己之前为什么会这么迷茫,所以现在决定还是好好地去自己的积累。还是从最基本的开始吧。为了避免篇幅过长,我们只聊聊HTTP基础,不谈其之下的TCP-IP协议。...

2022-07-23 15:12:54 562

原创 Flutter:pub command not found

以上是替代方案:看清楚是activate

2022-07-06 16:50:12 1006

转载 flutter版match-parent

在安卓开发中我们都知道,在需要子view充满父viewgroup的时候可以使用match-parent,就可以实现子view的高度随着父viewgroup的高度而变化,但是在flutter中应该怎么办呢?这几天,在研究verticalDivider的时候终于被我找到了,虽然应用场景不多,但是终于是解决了一大难题一般的,在flutter中,比如在Row中,我们希望左边是一个icon,然后右边是一个对应的文字介绍,我们可以使用Row,然后文字使用Expanded即可,就像这样:但是遇到下面.

2022-04-29 17:27:06 426

原创 奔跑吧Linux内核 入门篇(第二版)遇到问题发

非常想吐嘈,都第二版了,还有这么多的问题,这些问题直接导致我们读者阅读时多踩非常多的坑。问题一:第18页:导入runninglinuxkernel_5.0.git仓库时,提示导入了空仓库解决方案:我从github上fork了对应源码到gitee,从此处clone即可[email protected]:ciruy/runninglinuxkernel_5.0.git问题二:W: GPG error: http://mirrors.ustc.edu.cn/debian-security buster

2022-02-27 19:50:59 1488 1

原创 Android判断是否Root方法

为了照顾那些着急的同学,先直接给出结论: private static final String[] rootRelatedDirs = new String[]{ "/su", "/su/bin/su", "/sbin/su", "/data/local/xbin/su", "/data/local/bin/su", "/data/local/su", "/system/xbin/su", "/s

2022-01-19 15:53:35 4067

原创 Flutter retrofit:only “package“ and “asset“ schemes supported

Unsupported operation: Cannot resolve ***; only "package" and "asset" schemes supported如上就是问题描述,问题是在进行retrofit生成代码时产生的,即执行如下代码时所出现的异常flutter pub run build_runner build***代表的是某个dart文件,会根据自己项目中的情况产生变化,排查了很久,刚开始以为是自己写的代码有问题,但是连IDE本身都没有报错,但是就是不行,甚至直接删除.

2022-01-10 10:18:51 1534

apt-33 for mac

apt-33 for mac

2023-03-01

x86-26_r07.zip

x86-26_r07.zip

2021-11-16

如何在一个全新模块中注册通用上传功能.pdf

SPI ,全称为 Service Provider Interface,是一种服务发现机制。它通过在ClassPath路径下的META-INF/services文件夹查找文件,自动加载文件里所定义的类。 这一机制为很多框架扩展提供了可能,比如在Dubbo、JDBC中都使用到了SPI机制。

2020-08-14

空空如也

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

TA关注的人

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