android
文章平均质量分 68
Ciruy B.Heimerdinger
我是一名兴趣使然的博主
展开
-
Android基础(二):编码
在这个篇章中我希望能够对编码中我认为比较重要的内容进行一些必要的整理。相信很多人在日常的开发中多多少少会遇到一些与编码相关的名词,比如说AES,DES,REA,DSA,MD5,SHA1,SHA256等等。然后每次听别人侃侃而谈的时候,总感觉非常厉害的样子,但是因为自己对于这个方面一知半解,只能随声附和。在这篇文章中我并不打算涉及任何网络协议的相关名词,只是希望能按照我的思路将上面所说的一系列专有名词串在一起。即所谓的用我自己的话来复述如上的知识点。说真的,整理这种文档真的很累,我也不知道自己能坚持到什么时候原创 2022-07-29 00:55:57 · 350 阅读 · 0 评论 -
Android基础(一):Http基础与Retrofit
最近换了一家公司,直接接触我完全不熟悉的flutter,花了一些时间来专门去适应。现在基本适应了,感觉之前荒废了很多的时间,也感觉自己之前为什么会这么迷茫,所以现在决定还是好好地去自己的积累。还是从最基本的开始吧。为了避免篇幅过长,我们只聊聊HTTP基础,不谈其之下的TCP-IP协议。...原创 2022-07-23 15:12:54 · 590 阅读 · 0 评论 -
flutter版match-parent
在安卓开发中我们都知道,在需要子view充满父viewgroup的时候可以使用match-parent,就可以实现子view的高度随着父viewgroup的高度而变化,但是在flutter中应该怎么办呢?这几天,在研究verticalDivider的时候终于被我找到了,虽然应用场景不多,但是终于是解决了一大难题一般的,在flutter中,比如在Row中,我们希望左边是一个icon,然后右边是一个对应的文字介绍,我们可以使用Row,然后文字使用Expanded即可,就像这样:但是遇到下面.转载 2022-04-29 17:27:06 · 454 阅读 · 0 评论 -
Android React Native 笔记(二):Component生命周期
注意绝对不要在componentWillUpdate和componentDidUpdate中调用this.setState方法,否则将导致无限循环调用。来自 <React Native 中 component 生命周期 - 简书>转载 2021-10-29 16:49:03 · 163 阅读 · 0 评论 -
Android React Native 笔记(一):基础
参考,来自 <核心组件与原生组件 · React Native 中文网> 定义由于 React Native 组件就是对原生视图的封装,因此使用 React Native 编写的应用外观、感觉和性能与其他任何原生应用一样。我们将这些平台支持的组件称为原生组件。React Native 允许您为 Android 和 iOS 构建自己的 Native Components(原生组件),以满足您开发应用程序的独特需求。核心组件组件库链接地址:https://www.react-na原创 2021-10-29 16:17:03 · 1515 阅读 · 0 评论 -
Android 机型适配之gradient默认渐变方向
来讲个故事吧,这是我一个朋友最近遇到的一件事情,需求UI稿中有需要为一个视图设置渐变的背景颜色,然后我的这个朋友就屁颠屁颠地去根据UI稿去实现了。与渐变相关的实现如下,仅仅需要设置渐变开始颜色和结束颜色,其余都采用默认值即可。<gradient android:startColor="@color/..." android:endColor="@color/..."/>然后流程就到了UI验收阶段了,借了同事两台机器截图给UI看,UI说:小老弟,不对啊......(哦,原创 2021-08-20 18:44:08 · 778 阅读 · 0 评论 -
Java文件删除操作File#delete()
Java文件删除操作File#delete()这个算是一个非常通用并且常见的API了,但是其实这个方法在删除文件的时候其实是有一些限制的。如下,我们可以看见这个API返回值代表着删除是否成功:public boolean delete() { SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkDelete(path); }原创 2021-07-20 22:22:19 · 1309 阅读 · 3 评论 -
Android换肤逻辑
换肤逻辑来归纳一下换肤的相关原理吧!有这么一种说法,对于一个成熟的控件,其实核心逻辑代码仅仅占总代码的10%,并且处理了90%的需求,然后剩下的90%的代码,是用于解决剩下的10%的需求的。本文当然也只是为了梳理换肤的核心逻辑,但这绝对是远远不够的,毕竟优化是无止境的。思维导图核心逻辑先来看一看换肤的核心逻辑,我可以打包票,看懂了如下的流程图,换肤的核心的逻辑也已经理解的差不多了。动态换肤的核心逻辑就是维护一份从Activity到其中需要换肤子视图列表的Map,然后在触发换肤操作的时候遍历Map原创 2021-07-16 15:03:27 · 454 阅读 · 0 评论 -
LinearLayout测量原理解析:onMeasure(int,int)
想写这部分内容已经很久了,但是每次写的时候总感觉自己讲的不够清楚,但是感觉这种事情真的不能拖,越拖越解决不了,所以,Let‘s go!好好理一理LinearLayout的measure,也就是测量逻辑吧。 @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { if (mOrientation == VERTICAL) { measureVe...原创 2021-06-27 21:30:39 · 552 阅读 · 2 评论 -
Android三个Version的作用
老生长谈Android三个Version的作用其实感觉这三个Version我已经谈过几次了,但是总感觉每过一段时间都能对这三个Version有全新的认识,真的让人由衷地感慨,人还是需要不断不断地进步的。gradle总共是三个不同的版本字段:compileSdkVersion,targetSdkVersion,minSdkVersion然后再加上两个特殊的版本,当前谷歌发布的最新的安卓版本newSdkVersion和当前运行环境版本runtimeSdkVersion。这两个版本的命名不是官方命名,只是我原创 2021-05-17 21:17:42 · 1267 阅读 · 0 评论 -
Android 10 中有关限制非 SDK 接口的更新
Android 10 中有关限制非 SDK 接口的更新目录浅灰和深灰列表的命名发生变化非 SDK 接口的代码注释在 Android 10 中授予对非 SDK 接口的访问权限Android 10 的列表更改目前在 Android 10 中受限的灰名单中的非 SDK 接口Android 10 中已列入白名单的非 SDK 接口(这些接口原本列在灰名单中)为了帮助确保应用稳定性和兼容性,Android 平台开始限制您的应用可在 Android 9(API 级别 28)中使用哪些非 S转载 2021-05-12 20:52:59 · 997 阅读 · 0 评论 -
No field mFactorySet in class问题解决(上)
Caused by: java.lang.NoSuchFieldException: No field mFactorySet in class Landroid/view/LayoutInflater很久之前写了一个插件化换肤的demo,然后最近在实际上的运行过程中出现了闪退问题,问题的具体细节如标题。Caused by: java.lang.NoSuchFieldException: No field mFactorySet in class Landroid/view/LayoutInflater原创 2021-04-23 15:22:10 · 1091 阅读 · 0 评论 -
性能分析--视图优化
性能分析/性能优化—视图优化优化概述流畅的操作体验卡顿稳定性内存泄漏,崩溃省电省流量代码质量,逻辑安装包小安装包过大UI优化View层级相同的情况下,尽量使用LinearLayout代替RelativeLayout布局特别复杂的情况下,使用ConstraintLayout,RelativeLayout代替LinearLayout关于LinearLayout和RelativeLayout的性能问题,这点其实还是很容易理解的,Layout隶属于ViewGrou原创 2021-03-01 21:59:35 · 681 阅读 · 0 评论 -
一行代码快速搞定Flowable断点下载(下)
一行代码快速搞定Flowable断点下载(下)其实这个主题对应的三篇文章真的真的非常难写,首先是感觉非常多人对于函数式编程不太熟悉,然后又有一些人对于kotlin不太熟悉。这就导致了,写这三篇文章的时候,我会非常迷茫,说到一些概念的时候到底应不应该铺开去讲一讲,讲了,又怕篇幅太长,应该阅读体验,不讲,又担心读者看不懂。好吧,我尽力去讲讲看吧。首先,我们通过拓展方法来定义LifeCycleOwner的拓展常量。这里不直接拿Activity而拿LifeCycleOwner的原因是我希望在后续版本中能兼容Fr原创 2021-02-20 17:27:51 · 216 阅读 · 1 评论 -
一行代码快速搞定Flowable断点下载(中)
一行代码快速搞定Flowable断点下载(中)感觉上一篇家常聊了太多,这一篇就直接进入正题,首先来看一下,通过存储化以及方法拓展技术将mComposableDisposable的相关逻辑也从抽象Activity抽离后的代码情况。abstract class BaseDisposableActivity(override var layout: Int?) : BaseActivity(layout) { constructor() : this(null)}没错,代码中disposable原创 2021-02-20 16:59:13 · 227 阅读 · 0 评论 -
一行代码快速搞定Flowable断点下载(上)
一行代码快速搞定Flowable断点下载(上)之前我们大致讲了讲,到底怎么完全将disposable相关代码完全隐藏。然后到了这里,可能有些杠精就会说了,你那个方式,我们不是完全不能拿到Flowable了吗?那么我想问能不能拿到有什么关系呢?我感觉我们作为开发人员,众多愿景之一就是,希望自己能够尽可能少地进行重复劳动,不是反复拧螺丝钉的问题,如果可以的话,就算是导弹我也希望不要重复地去创造。我们将Flowable的实现细节隐藏起来,就意味着我们对于Flowable的复用已经基本到达了极致,这听起来不是更原创 2021-02-20 12:35:35 · 188 阅读 · 0 评论 -
如何完美隐藏Disposable的存储和销毁过程(二)
如何完美隐藏Disposable的存储和销毁过程(二)前面一节大致讲了讲,我们的成品到底是怎么样的?那么这一节,我们就来讲讲如何初步地隐藏自己Disposable的存储和销毁。首先说说最常见的方式,在Activity中定义和初始化一个CompositeDisposable,然后在生成需要管理的Disposable后,将其放进这个管理类中,然后在onDestory中直接通过CompositeDisposable对其内管理的Disposable进行统一清除,如下(有些时候实在是不太喜欢专门写博客,就是因为还原创 2021-02-12 15:31:02 · 803 阅读 · 0 评论 -
Android插件化换肤
Android插件化换肤前言(废话)今年是大年三十,今年怎么说呢,总体还是让自己感觉到比较满意的,但是有些时候还是感觉自己的自觉性不够。先贤曾经说过,君子慎独,愿明年的我能够铭记于心。我这辈子最崇拜的人或许就是张载了,仅仅因为他的横渠四句:为天地立心,为生民立命,为往圣继绝学,为天下开太平!思维导图正文概要这个属于老生常谈的问题了。比如说,一旦出现了什么非常令人悲痛的事件,每个应用都会把自己的主色调改成黑色,抑或是应用内提供给用户自主选择(像网易云音乐),选择自己喜欢的主题色,再比如,在原创 2021-02-11 22:15:52 · 394 阅读 · 1 评论 -
Android视图绘制逻辑与思想(一):attachToRoot到底有什么作用?
attachToRoot到底有什么作用?前言(唠嗑)前两天在路上瞎逛的时候,一只黄色的小狗突然跑到我身边,绕着我转圈圈。我一瞬间就被这只小狗狗给征服了,脑袋以超光速开始运转,甚至连给小狗狗名字都取号了。然后耳边就传来这样的一段对话:这个毛颜色可以换吗?可以的,等再长大一点,就可以剃光再重新弄。它的尾巴太长了,能弄断一点吗?可以的,尾巴可以减掉的。不知道多少电影动漫里,都有小狗狗对着人开心地摇着尾巴的温馨场景。还是算了吧,我这个人不那么会照顾小动物,况且,少一份买卖就少一份杀戮。多少人号称自己爱原创 2021-02-01 22:43:13 · 1188 阅读 · 0 评论 -
Mockito cannot mock/spy because : - final class 问题
Mockito cannot mock/spy because : - final class 问题现象:出现报错,且报错信息如下Mockito cannot mock/spy because : - final class问题发生的原因:低版本类不支持mockfinal类的,我们尝试反编译一下kt代码就知道了。解决方案:将mockito-core的依赖更改为mockito-inlinetestImplementation 'org.mockito:mockito-inline:3.3原创 2021-01-21 14:58:00 · 8569 阅读 · 1 评论 -
Android Retrofit @Streaming 注解失效
Android Retrofit @Streaming 注解失效问题特征:即使加了@Streaming方法也不能达到逐步加载大文件数据的效果,产生的效果为下载会有长时间的卡顿,卡顿后,会在极端的时间内加载完数据源。如图,将近100M的数据仅仅在3秒内下载完毕,毫无疑问,无论是对于用户体验,还是开发的角度而言,都是灾难。解决方案尝试直接通过OkHttp进行加载,发现下载时间正常并且没有卡顿,这就说明问题出在retrofit上。踩了无数坑后,终于发现问题出在拦截器上。注意日志拦截器的设置,当Le原创 2021-01-06 10:21:27 · 1616 阅读 · 4 评论 -
第二期 AOSP 环境搭建、下载和编译 《手机就是开发板》遇到问题解决
第二期 AOSP 环境搭建、下载和编译 《手机就是开发板》遇到问题清华大学软件镜像站:repo从这里下载https://mirror.tuna.tsinghua.edu.cn/help/git-repo/这个地址已经失效:https://storage-googleapis.proxy.ustclug.org/git-repo-downloads/repoUbuntu开发环境下遇到的环境问题梳理:从github拉取代码,安装python3.6https://blog.csdn.net/weixin原创 2020-12-25 21:52:28 · 775 阅读 · 2 评论 -
Kotlin问题解决
Kotlin问题解决Kotlin plugin should be enabled before ‘kotlin-android-extensions’https://blog.csdn.net/yangpancheng/article/details/103883972Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory)Androidx和Android supp原创 2020-12-24 17:00:38 · 434 阅读 · 1 评论 -
RxPermission原理解析
前言(废话)说真的,看到RxPermission的代码实现的时候,我还是比较吃惊的,毕竟,就三个必需类,即Permission,RxPermissions,RxPermissionFragment。如果是我自己实现的话,估计要从最初的Activity类开始,定义抽象类之类的,或者封装成Controller,不然再疯狂一些就用APT。但是这些方法怎么想成本都挺大的,我也是挺懒的一个人,所以最后还是决定去看看到底RxPermission,结果发现实现还是挺简单的。我个人认为,把东西变得简单才是本事,把东西弄原创 2020-12-11 20:50:27 · 1992 阅读 · 0 评论 -
Java IO在Android中应用(三):Apk加固去壳
Java I/O在Android中应用(三):Apk加固去壳前言(废话)现在在动车上,因为最近接到一个紧急的出差任务,需要去一趟江苏我们移动应用的客户现场。说真的,本来其实我是很困的,但是车上有一位大汉睡着了,鼾声大作,不知道为什么,我真的是一点睡觉的心思都没有了。然后我想想,晚上还打算写一点博客,而且我的博客比较特殊,常常都会进行一些吐槽,因此,最后决定不如直接在这嘈杂的高铁上把晚上的一部分博客完成吧。毕竟时间其实是我们每一个人一生中最廉价,但是同时又是最无价的一种资源吧。少年时候的我,很喜欢看原创 2020-11-25 18:54:57 · 387 阅读 · 0 评论 -
Java IO在Android中应用(二):APK加固
Java I/O在Android中应用(二):APK加固套壳前言(废话)我,有两把键盘,第一把是Poker III(黑轴),第二把是Poker II(红轴)。工作的时候我常用的是红轴的Poker II,但是当我回家,一般我就会使用Poker III黑轴键盘。以前我怎么没有感觉到黑轴键盘是这么的重且难受,我仍记得我第一次买的是Poker III的红轴键盘,然后买来的第二个晚上我就把红轴的键盘退了,然后换了黑轴的键盘。现在回想起来,可能还是因为自己修为不够,体会不到红轴的那种快乐。这次想理一理如何仅仅通过原创 2020-11-22 10:06:19 · 486 阅读 · 2 评论 -
Android activity四种启动模式
Android activity四种启动模式思维导图概述四种启动模式分别为Standard,SingleTop,SingleTask,SingleInstance。其实在网络上已经有很多博客对其其实都已经有了相当程度的归纳和总结。但是毕竟别人的,中国人相比自己家的孩子,邻居家的孩子永远更加诱人。在适当程度上看了看别人所写的内容,我还是打算写一些自己的感悟。本来一如既往想要吐槽一些我所看见的同事的工作方式,不过今天,感觉自己缺乏心境,所以还是在今天的下一篇博客上一吐为快。四种模式说到底,就是为了原创 2020-11-20 11:15:00 · 837 阅读 · 0 评论 -
Java I/O在Android中应用(一)
Java I/O在Android中应用(一)前言(废话)本来想周末拉一拉进度的,结果跑完10KM马拉松之后,发现自己已经完全没有力气再去做任何事情了。讲一些日常的事情吧,最近家里人说要给我介绍对象认识,还和我说很漂亮,过年的时候见面。然后我就开始各种幻想,对方到底是什么样的大家闺秀呢?说实话,为什么我这样平时完全不运动的人能跑完10KM呢?因为我妈妈和我说,要不要考虑一下邻家的XXX,此处可以脑补一下周星驰电影里的如花。所以你完全可以想象,我在内心里不断呻吟,不断呐喊。我告诉自己,为了我下半生(身)原创 2020-11-16 23:06:41 · 307 阅读 · 0 评论 -
Java多线程闲聊(一):概论
其实我对Java有较高的好感度已经是很久之前的事情, 因为Java是第一门让我感觉很有成就感的语言。想想那些青葱岁月,走出过去已经让我花了太多太多的时间,我想说的是,今后,我要努力让自己面向未来。很遗憾,我不擅长记忆,因为很多时候,我的记忆被过去的悲伤所占据,我被困在名为不可名状的深邃所占据,在茫茫迷雾里摸索,在不见一切的幽暗海底里彷徨。我曾经以为人生仅仅是一场游戏,我曾经以为自己的人生毫无意义,我曾经尝试让自己沉沦,但是内心的倔强却将我连根拔起,让我不断地重新认识自己,让我认清自己的窘态。说到多线原创 2020-10-27 16:01:44 · 246 阅读 · 0 评论 -
Android固定宽度文字自适应大小
Android固定宽度文字自适应大小参考自:https://blog.csdn.net/qq_29443203/article/details/78960691?utm_medium=distribute.pc_relevant.none-task-blog-title-1&spm=1001.2101.3001.4242//固定宽度的情况下,自适应文本字体大小 public static float adjustTvTextSize(TextView tv, int maxWidt转载 2020-10-26 15:10:13 · 412 阅读 · 0 评论 -
程序员的自我修养之马桶修理工:compose方法的妙用!
我始终自嘲,程序员就像是马桶修理工,但是同样是对于马桶的修理,却有两种不同的方式:第一种,遇到已经坏掉的部件,直接买一个全新的部件,然后换上就行了;第二种,就是能够知道部件到底是坏在哪个地方了,直接对坏了的地方进行处理就行了。第一种方法,对于修理工的技能要求较低,基本能找到店铺去购买对应的商品,如果连部件都不知道怎么更换,那么说明你当修理工还完全不够格。有些修理工用第一种方式工作了一辈子,和各个部件店铺的老板都充分打好了交道,所以还能通过优惠价拿到回扣,更换部件的效率也更高,通过这样的方式过上了更好的生活原创 2020-10-22 19:46:57 · 429 阅读 · 0 评论 -
Retrofit2.0 请求数据 一直出返回网络错误,错误代码 414
今天 使用rettorfit 去请求数据一直不成功,请求逻辑上以及请求参数上都没有问题,后台也验证过是通的(我用xutils3请求也是成功的,后来意识到xutils3是将参数放在请求体里面),但是就是一直不能请求成功,后来终于发现还是参数的问题。由于使用的是retrofit POST 请求,查询字段用的是@QueryMap ,而这个查询时是直接拼接在url的后面,但是url的请求接口是有长度限制的,所以一直没有请求成功。后来转用@FieldMap字段,这个字段是将查询参数放在请求体中,而请求体理论上是不转载 2020-10-21 16:51:22 · 443 阅读 · 0 评论 -
华为DUA-AL00真机android studio识别不出
华为DUA-AL00真机android studio识别不出当时花了1000元买的真机,直到现在都感觉华为的这个型号的时候是真的难用,显示日志需要特殊的配置,甚至连接计算机调试都比别的手机麻烦。这次又是一个新坑,解决方式如下,将USB配置选中为RNDIS(USB以太网)就可以了。...原创 2020-10-15 18:40:36 · 565 阅读 · 0 评论 -
Android <java.lang.ClassNotFoundException:Didn‘t find class ‘XXX‘ on path:DexPathList> 解决
Android <java.lang.ClassNotFoundException:Didn’t find class ‘XXX’ on path:DexPathList> 解决如图:问题现象如上,我大概描述一下我自己开发的真机是8.0版本的,应用运行完全没有问题,然后再在5.1.1版本上的真机上运行的时候出现了闪退现场并报出这个问题。然后就因为这个问题我折腾了一天,基本上google搜索过了,CSDN博客也搜索过了,最后在StackOverFlow上找到了解决方法。StackOverFl原创 2020-10-09 18:12:18 · 2631 阅读 · 6 评论 -
安装android studio出现choose an account with administrator
安装android studio出现choose an account with administratorWindows安装时候会出现的问题确保你是管理员账号登录,并且拥有管理员权限确保安装包的存储路径没有中文原创 2020-08-05 09:37:01 · 1512 阅读 · 0 评论 -
android java.nio.charset.MalformedInputException: Input length = 1
java.nio.charset.MalformedInputException: Input length = 1现象What went wrong:Execution failed for task ‘:isupplant-shell:middleware:generateDebugRFile’.> java.nio.charset.MalformedInputException: Input length = 1正文android开发,同组中使用macOS的同志能够正常编译通过原创 2020-08-03 22:33:21 · 763 阅读 · 0 评论 -
Android Apt失效:找不到Apt生成的对应类
Android Apt失效:找不到Apt生成的对应类参考自Android Gradle由4.x升级至5.0导致Apt项目失效高级开发必须理解的Java中SPI机制 - 简书Upgrading your build from Gradle 4.x to 5.0从Android Gradle由4.x升级至5.0导致Apt项目失效可以得到一种解决方法。而且的确能解决,但是很明显,这种方法只是治标不治本的,所以我这里就不重复写出来了,感兴趣的同学可以直接点击链接看看。但是这篇文章提供给了我两样东原创 2020-06-10 14:38:46 · 1574 阅读 · 0 评论 -
JAVA不可变List的实现
JAVA不可变List的实现参考和感谢JAVA不可变List的实现正文有时候方法返回一个列表但是不想调用者改变列表内容。有三种方法可以实现不可变列表,通过调用JDK,Guava以及Apache Commons Collections相关API来实现。1. JDK@Testpublic void jdkTest() { List<String> fruitsList = new ArrayList<String>(Arrays.asList("Apple",转载 2020-06-03 20:17:01 · 1144 阅读 · 0 评论 -
Resources$NotFoundException Resource is not a Drawable (color or path) 问题解决
Resources$NotFoundException: Resource is not a Drawable (color or path) 问题解决作为一个新手,最近在写自定义视图的时候出现了如下的问题Caused by: android.content.res.Resources$NotFoundException: Resource "com.example.flowlayout:drawable/shape_button_circular" (7f060063) is not a Draw原创 2020-06-01 10:36:27 · 1828 阅读 · 0 评论 -
android 打包提示 Password verification failed
今天旧项目调整代码并打包时,提示Password verification failed。意思是密码验证失败,但我确定自己密码没输错。折腾了一段时间,clean project、rebuild,清除缓存并重启 android studio 都还是提示这个错误。最后我把主项目的 build 文件夹(在我这里是 app/build)整个删除,再打包后才成功。如果遇到这个问题,确定密码没错,可试试我的方法。希望能帮到你~————————————————版权声明:本文为CSDN博主「DaJian35」的转载 2020-05-31 14:22:44 · 878 阅读 · 0 评论