自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Activity从下往上弹出视差效果实现

其实有很多方法都可以实现这种效果,popwindow,Dialog,BottomSheetDialogFragment,BottomSheetDialog等等,如果想实现用手向下滑动页面消失,可以选择BottomSheetDialogFragment,BottomSheetDialog来实现,当前登录页LoginActivity我是基于Activity实现的,那是不是我们加个进入动画不就实现了吗?答案是可以的主要是overridependingtransition使用。

2023-12-10 03:13:08 167

原创 进程保活-账号同步实现

账户同步的作用 : 如果应用的数据发生了改变 , 可以通过账户进行同步 , 进而与服务器进行数据同步操作 , 执行同步时 , 系统会拉活对应的应用进程;实现的话,主要是应用 APP 中可以注册 " 账户服务 Service " , 应用安装后 , 如果系统发现应用中有该类型服务 , 就会为该应用开放添加账户的功能;系统通过 Binder 机制 , 操作用户的 " 账户服务 Service ";Google 官方提供了账户同步案例 ,, 已经停止维护了 , 但是项目还是有参考价值的;

2023-11-20 16:13:32 197 1

原创 Android 基本属性绘制文本对象FontMetrics

4. Leading文档说的很含糊,其实是上一行字符的descent到下一行的ascent之间的距离。6. 同上,bottom指的是最下字符到baseline的值,即descent的最大值。5. Top指的是指的是最高字符到baseline的值,即ascent的最大值。3. Descent是baseline之下至字符最低处的距离。2. Ascent是baseline之上至字符最高处的距离。1. 基准点是baseline。

2023-11-12 23:59:56 394

原创 找出在 0-10 范围内数组中缺失的数字

思路就是创建一个大小为11的布尔数组,用于标记0-10的每个数字是否出现在给定数组中。然后,函数遍历给定数组并设置相应的布尔值。最后,函数查找布尔值为 false 的索引,该索引对应的数字就是缺失的数字。如果没有缺失的数字,函数返回-1。

2023-10-03 21:27:46 324

原创 java获取字符串集合中每个字符并且组成一个新的集合实现

/ 将 StringBuilder 转换为 String 并添加到列表中。// 清空 StringBuilder。直接怼代码,刚好碰到了这种需求,也是想了可久,其实想想也还是挺简单的。// 使用循环和数组操作获取每个位置的字符集合。// 获取字符串的最大长度。// 原始字符串集合。

2023-10-03 17:52:28 239

原创 Android通过包名启动其他应用,若该应用已启动,则直接将应用切到前台

Intent intent = context.getPackageManager().getLaunchIntentForPackage(packName); context.startActivity(intent);

2023-06-27 10:31:12 497

原创 SVGA自定义文字如何适配RTL

额,但是实际情况你会发现它内部的文字它也是倒过来的,嗯,倒过来的,通过查看源码,我们发现其实它这块设置的文字最终是会给你转个TextBitmap进行遍历绘制的。textBitmap,然后我们对这个bitmap进行再次翻转就好了,翻转代码已经写里头了,嗯,就这吧--!这块drawSprite就是根据imageKey,也就是设计师给我们准备的填充区域对应的key,对这块进行轮询绘制。正常我们是直接通过设置这块来根据设计师提供的key往里头塞文字的,这块区域也是设计师设置的。

2023-06-02 01:46:33 199

原创 java多线程编程(2)—— 线程安全问题

线程安全就是保证多个线程同时对某一对象或资源进行操作时不会出错触发条件多线程环境多线程共享同一资源对资源进行非原子性操作。

2023-03-21 01:12:03 111 1

原创 java多线程编程(1)—— 基础知识总结

并发:同一时刻,多个指令在单个CPU上交替执行并行:同一时刻,多个指令在多个CPU上同时执行假如在多个CPU的电脑上,同一时刻,如果执行指令超过CPU的线程数,那么CPU会对执行指令做交替执行,做并行操作。

2023-03-20 17:52:37 288

原创 使用TouchDelegate扩大控件的点击范围

当我们的控件太小,导致我们无法准确的点击,这时候我们可以在在外面再加一层布局,但这样性能不太好,或者加上padding,但影响这个UI布局。这时候我们可以TouchDelegate扩大控件的点击范围。这块其实是从之前的中的View的onTouchEvent中发现的意思是如果设置了tochDelegate的话,那么它剩下的事件分发就要在其onTouchEvent中事件分发了。

2023-03-16 23:11:46 187

原创 每天一道算法题——明明的随机数

我们可以设置1000个boolean数组,其中数组中默认都为false,如果输入一个数字的话,则对应的数组中的位置则变为true,然后再拼接为true的字符,这样也能实现去重你跟排序的效果额。请你删去其中重复的数字,即相同的数字只保留一个,把其余相同的数去掉,然后再把这些数从小到大排序,按照排好的顺序输出。接下来的 N 行每行输入一个整数,代表明明生成的随机数。数据范围: 1 ≤ n ≤1000 ,输入的数字大小满足 1 ≤val ≤500。输出多行,表示输入数据处理后的结果。

2023-03-15 17:26:04 475

原创 每天一道算法题- 计算某字符出现次数

其实这个问题第一反应就是直接拿值去判断是否存在,然后长度++不就完了,关键是这个不区分大写,但是这个也好解决,可以用equalsIgnoreCase来解决,嗯,那这个代码就很好写了。写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。可以看到它这块是直接用ASCII码来做了,其中char'65'对应的是A,这样的话,确实会对性能提升很多。第一行输入一个由字母、数字和空格组成的字符串,第二行输入一个字符(保证该字符不为空格)。嗯,棒棒的,然后跑去看排名。

2023-03-15 16:30:39 65

原创 Java代码编写-对输入的字符串进行处理

唉,今天面试的时候面试官问我的这道题目,脑子当时太笨了,没答出来,这里还是复盘下,写个博客记录下。b)把数字与字母之间用下划线字符 (_)分开,使得更清晰。要求程序对用户输入的字符串进行处理。c)把单词中间有多个空格的调整为1个空格。a)把每个单词的首字母变为大写。

2023-03-15 01:14:33 307

原创 android 卡顿、ANR优化(1)屏幕刷新机制

本文通过阅读各种文章和源码总结出来的,如有不对,还望指出目录正文基础概念视觉暂留逐行扫描帧帧率、刷新率、画面撕裂画面撕裂Android屏幕刷新机制的演变单缓存(Android4.0之前)双缓存VSync(垂直同步)三缓存源码解析。

2023-03-08 21:10:51 707

原创 newInstance 和 new 有什么区别

newInstance 和 new 有什么区别

2023-03-05 19:01:20 152

原创 Android工厂模式

工厂模式分为三种 :简单工厂模式 、工厂方法模式 、抽象工厂模式。

2023-03-05 18:27:08 992

转载 Android的设计模式-设计模式的六大原则

定义:一个类应只包含单一的职责。

2023-03-05 12:10:10 168

原创 计算字符串最后一个单词的长度

计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)

2023-03-05 02:31:56 334

原创 LeetCode刷题的技巧

嗯,就这种,如果将代码中的空格全部去除后,虽然整体代码观感可能有所下降,但是编译执行时间会提高个几毫秒,因为java代码编译的时候回去计算行数,以便debug调试。经过测试,Scanner的平均耗时是BufferedReader的10倍左右。2.建议多使用BufferedReader。1.代码上下之间不要有空格,比如说。

2023-03-05 00:57:59 60

转载 时间复杂度怎么算

最近在复习数据结构和算法,看到算法出来这个时间复杂度,就有点懵,它怎么算的呀,仔细想想,其实以前大学那会对这个也懵,然后就到处搜,发现这个大佬写的还比较通俗易懂,很好的解释了时间复杂度的计算方式,下面是这个大佬的文章:算法(Algorithm)是指用来操作数据、解决程序问题的一组方法。对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但在过程中消耗的资源和时间却会有很大的区别。那么我们应该如何去衡量不同算法之间的优劣呢?主要还是从算法所占用的「时间」和「空间」两个维度去考量。

2023-03-04 22:06:00 625

原创 Apk转Aab(Android-App-Bundle)

java -jar bundletool-all-1.6.1.jar build-apks --bundle=aab的路径 --output=生成的apks的路径 --ks=签名文件的路径 --ks-pass=pass:密码 --ks-key-alias=别名--key-pass=pass:密码。类似这样的,这个问题是因为我当时用的是apkTool是2.5.0的,这个版本还不支持api 31,然后就报这个错,我下了新的后就没这个问题了。然后说下测试跟验证的命令。有VPN的请自便了额。

2023-02-26 01:05:08 569

原创 Android 事件分发机制(4)-常见面试题

事件分发机制主要涉及3个方法,3个对象,3个事件3个方法分别是dispatchTouchEvent 返回类型是布尔类型的,表示事件是否分发,如果为false的话,则返回上一层onInterTouchEvent 返回类型是布尔类型的,在dispatchTouchEvent内部调用,ViewGroup中调用的,表示事件是否拦截,如果拦截的话,会在ViewGroup中消费事件,执行ViewGroup的onTouchEvent方法,否则会继续分发给View。

2023-02-21 14:58:18 2043 1

原创 handler解析(5)常见面试题

在next取消息的时候,拿当前时间跟链表头的时间做对比,如果头部msg是有延迟的,而且延迟时间还没到的,则进行阻塞,然后等于是开了个定时器,等到时间到了的话,则进行唤醒操作,然后进行next操作取出消息,进行分发。message queue消息队列,以队列的形式对外提供插入和删除操作,内部实际是一个单链表的数据结构,其中的消息的插入是根据传入的when进行插入的,when最短的插入到头部,时间最长的插入到尾部,其余消息根据when的大小对消息进行排序插入,遵循先进先出的原则。静态内部类 + 弱引用。

2023-02-16 23:46:43 234

原创 handler解析(4)-Message及Message回收机制

Handler消息机制中Message及Message回收机制详解

2023-02-16 15:49:44 590

原创 handler解析(3)-同步消息、异步消息、同步屏障

Message分为3种:普通消息(同步消息)、屏障消息(同步屏障)和异步消息。我们通常使用的都是普通消息,而屏障消息就是在消息队列中插入一个屏障,在屏障之后的所有普通消息都会被挡着,不能被处理。不过异步消息却例外,屏障不会挡住异步消息,因此可以这样认为:屏障消息就是为了确保异步消息的优先级,设置了屏障后,只能处理其后的异步消息,同步消息会被挡住,除非撤销屏障。也就是我一般使用的Message,再通过Handler进行到消息队列,前提是构造Handler时候传的构造参数async为false。

2023-02-12 23:37:05 1462

原创 handler解析(2) -Handler源码解析

1.一个线程中只能有一个looper,这块是由ThreadLocal决定的,因为ThreadLocal中包含了一个ThreadLocalMap,在调用looper.prepare时将looper对象set进去ThreadLocal中2.UI线程,就是主线程是不需要在调用looper.prepare跟looper.loop()的,因为这2个在ActivityThread中的main方法中已经调用过了,其中looper.prepare调用的为looper.prepareMainLooper()

2023-02-11 17:08:41 614

原创 Android 12 自动适配 exported 深入解析避坑

众所周知,从 Android 12 开始,使用了 TargetSDK 31 之后,四大组件如果使用了 intent-filter,但是没显性质配置 exported App 将会无法安装,甚至编译不通过。比如启动的 Activity 就需要设置 ex‍ported 为 true,至于其他组件是否设置为 true 则看它是否需要被其它应用调用。然而这个事情的状态是这样的:如果出现问题的 AndroidManifest 文件是您本地的,那手动修改即可;

2023-02-08 16:58:40 1695

转载 handler解析(1)——生产者消费者编程模式

某个模块负责产生数据,这些数据由另一个模块来负责处理(此处的模块是广义的,可以是类、函数、线程、进程等)。产生数据的模块,就形象地称为生产者;而处理数据的模块,就称为消费者。在生产者与消费者之间在加个缓冲区,我们形象的称之为仓库,生产者负责往仓库了进商品,而消费者负责从仓库里拿商品,这就构成了生产者消费者模式。

2023-01-31 12:00:01 430

转载 java中数组分割合并

分割数组:将数组分割成指定最大长度的几个数组

2023-01-14 23:10:53 1764

原创 android 动态获取资源Id

这种主要是应用于for循环中遍历给view赋值用的,然后view又刚好取名为xx1-9这种,以前这种老是傻傻的一个个findVIewById,今天知道了谷歌是有对应的api去实现的,直接怼代码。这样就可以循环获取到9个控件了。

2023-01-10 22:11:40 366

原创 RecycleView左滑删除(仿QQ左滑删除)

实现原理其实很简单,主要是利用自定义HorizontalScrollView平移的方式实现,判断左滑的距离是否大于左滑显示的布局的宽度,如果是的话,则进行左滑操作,否则隐藏。下面开始直接上这个大佬写的代码,核心是这个自定义View。好吧,这个文章我只是转载的,为了方便自己以后参考转的。然后adapter中。

2023-01-04 23:43:20 1737

原创 SingleTop失效的解决方法

【代码】SingleTop失效的解决方法。

2022-12-29 00:39:00 652

原创 从原生跳转到webView然后在返回webView卡住的问题

从原生跳转到webView然后在返回webView卡住的问题

2022-11-16 19:10:22 645

原创 SDK打包成aar后无法引用三方或者本身SDK项目中存在的aar的问题解决

因为公司最近说要把我上次研发的一款工具类的项目说做成SDK的方式,我当时就懵了?SDK我没弄过呀,然后拼拼凑凑的把项目整理成SDK了,然后到打包了,网上搜了七七八八的资料,后面发现原来SDK就是之前我自己有弄过的一个项目变aar的方式来的,Android 项目转打包成aar_沙滩捡贝壳的小孩的博客-CSDN博客_android 项目转aar,嗯,就这篇,然后照着之前的步骤打包个aar包出来,然后问题就来了,打包出来后的aar包,嗯,没问题,哎,但是运行的时候,崩了,哎,一看错误AAPT: error:

2022-05-29 21:51:00 3056 3

原创 打包项目到本地maven仓库

这个主要是多人开发SDK的时候用的apply plugin: 'maven'ext { PUBLISH_GROUP_ID = '包名' PUBLISH_ARTIFACT_ID = '依赖库具体名称' PUBLISH_VERSION = '版本号'}// gradle uploadArchivesuploadArchives { repositories { mavenDeployer { repository(url:

2022-04-26 16:44:47 2581

原创 电脑开机不显示系统,直接进入bios

昨晚上,同事堂哥救助,说他电脑很久没用了,再次开机后发现他自己直接进入到bios系统里头去了,就很懵圈,当时我第一反应,这启动项丢失了呀,然后就帮他照着这种步骤重新设置回了启动项1.控制方向键进入[Secure]菜单,通过方向键选择[Secure Boot Control]选项,将其设定为“Disable”这个意思是关闭Bios的安全启动2.在控制方向键进入[Boot]菜单,选择[Lunch CSM]选项,将其设定为“Enable”3.按F10保存,重启系统,开机时,点击Esc,选择对应的启

2022-04-14 10:02:46 7219 3

转载 GP2022年新政策

作者 / Play 和 Android 信任与安全产品管理总监 Krish Vitaldevara保障 Google Play 的安全始终是我们服务开发者和用户的第一要务。在过去的一年中,我们与开发者合作,确保应用安全;包括帮助开发者保护其应用、为与用户共享数据安全做准备,以及合作构建更具私密性的广告技术。此外,我们还继续致力于机器学习检测和增强应用审核流程,旨在阻止带有滥用或恶意内容的应用上架,以免用户安装这类应用。 保护其应用 https://developer.android....

2022-04-01 00:04:06 127

原创 butterKnife在library中无法使用的问题

当项目中有多module时,在使用Butterknife的时候会发现在library模块中使用会出问题。当library模块中的页面通过butterknife找id的时候,就会报错。就这个错,意思是@BindView的属性必须是一个常数,也就是说library module编译的时候,R文件中所有的数据并没有被加上final,也就是R文件中的数据并非常量。那怎么解决这个问题呢,我们其实可以用一个插件来解决这个问题1.在项目的build.gradle中加入classpath 'com.j

2022-03-21 11:42:37 2430

原创 从零开始组件化(2)_路由跳转方式和手动搭建组件化路由

在上一篇文章组件化-从零开始组件化(1)_z936689039的博客-CSDN博客中,我们已经搭建好整体框架了,然后问题就来了,因为组件化,各个业务组件是互相不依赖的,那假如涉及到跳转,我们应该怎么做呢,目前这块的做法有2种1.隐式跳转通过AndroidManifest中对要跳转的activity设置action值,然后跳转的时候,指定对应的action,从而实现跳转的,例如在要隐式跳转的activity中配置://清单文件注册<activity android:name=".Ma

2022-03-07 14:27:43 4324

原创 从零开始组件化(1)-搭建组件化框架

组件化、模块化本质上差不多,但是因为组件化可以转成应用的,方便团队化开发,同时个人开发的话也比较好提高效率,比如个人开发中,你开发了一款登录组件,然后其他项目要用了,或者其他同事要用了,你就可以直接把这个组件复制给它,然后那边的项目或者你的同事复制来后就可以直接用了,达到类似插拔一样的效果,极为方便,省去重复造轮子的麻烦,同时还可以降低项目复杂性,提升开发效率;上面只是我的浅显理解下面来说下具体怎么去实现,还有途中碰到的坑1.组件化编译版本、第三方库统一管理在app根目录下创建个配置的.

2022-03-04 23:39:02 3382

flower_butterfly_square-3.zip

方维直播源码,代码已经写好了,拿过去直接用,其中faceunity是美颜包,美颜用的相芯科技的,libSwipeMenu是侧滑菜单的,statusBarLibrary是状态栏的

2020-02-22

手机安全卫士

黑马手机安全卫士,毕业党专用,你懂得

2017-10-09

空空如也

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

TA关注的人

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