自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 304.自定义按钮式开关

下面教你用完全自定义的 thumb/track 资源打造一个开关,彻底摆脱系统默认样式,只用标准 AndroidX。轨道 track 选中/未选中</shape></shape>手柄 thumb 选中/未选中(外围是开启时背景颜色,中间是圆形颜色,off同理,外围时关闭时的颜色)</shape></shape>track 高度要略大于 thumb 直径,保证视觉间距;track 宽度决定开关整体宽度;颜色/圆角/尺寸可按品牌规范替换。-- 任意布局文件中 -->

2025-11-04 15:11:10 375

原创 Android学习路线

乍起秋风 · 语雀

2025-11-04 14:24:39 114

原创 303.Android 录屏/投屏 MediaProjection

是 Android 5.0(API 21)引入的屏幕捕获 API,用于捕获设备屏幕的视频和音频内容。简单理解:= 图层管理员(管理怎样显示)= 屏幕录制官(直接录制屏幕内容)/*** 自定义分辨率录屏(降低资源占用)*/// 降低分辨率到 720p// 获取 MediaProjection// 创建虚拟显示(与物理屏幕不同的分辨率)customWidth, // 自定义宽度customHeight, // 自定义高度customDpi, // 自定义 DPI。

2025-11-04 13:55:24 1132

原创 302.Android 录屏/投屏 SurfaceControl

是 Android 系统级图形框架中最核心的组件之一。从 Android 7.0(API 24)开始,Google 将其作为公开 API 提供给开发者。SurfaceControl 是一个用来管理窗口、图层和屏幕内容的系统级工具。底层可能是壁纸中间层是应用窗口上层可能是系统状态栏最顶层是悬浮窗或截屏指示器控制每一层的显示/隐藏调整图层的透明度、缩放、旋转捕获屏幕内容用于录屏和投屏功能✅是系统级图层管理工具✅录屏流程。

2025-11-04 13:32:49 1207

原创 301.payload

payload 就是“真正要用的那部分数据”。无论它被放在消息里、请求体里、任务参数里,还是 UI 更新的“变化说明”里,payload 始终指向“有效信息本体”。在 RecyclerView 中,payload 是“这一条目里具体哪些部分变了”的说明书,用来触发“局部刷新”。在 WorkManager 中,Data 是任务的输入/输出 payload,承载这次后台工作的必要参数与结果。

2025-10-11 11:25:20 816

原创 300.packagemanager

是 Android 系统的一个核心服务类,属于包。它是 Android 应用开发中用来管理 APK 包、应用信息、权限、组件(Activity/Service/Receiver/Provider)等资源的桥梁。几乎所有与应用包相关的操作,比如查询已安装应用、获取应用详细信息、管理权限、启动组件等,都离不开 PackageManager。

2025-09-25 09:20:15 920

原创 299.FragmentStateAdapter

完整流程回顾:定义页面内容:创建和。创建适配器:创建继承,并实现和。连接:在中,创建的实例,并调用将其与ViewPager2关联起来。这样,ViewPager2就能正确地显示和管理你的Fragment页面了,并且在页面切换时能高效地管理内存。

2025-09-24 09:38:38 286

原创 298.TabLayout TabLayoutMediator

是 Android Material 设计库中的一个控件,用于实现带有多个标签页的界面。它允许用户在不同的 Tab(标签)之间切换页面或内容,常用于新闻、商城等 App 的栏目/频道切换。是 AndroidX Material 库中的一个“桥接器”类,用于将 TabLayout(标签栏)和 ViewPager2(内容滑动容器)进行绑定和联动。——无论切换标签还是滑动页面,标签和页面都会一起切换,带来完整的 Tab 页体验。类似前述内容,让 ViewPager2 能显示多个页面。这是一个接口,你只需实现。

2025-09-24 09:16:14 1012

原创 297.ViewPager

特性ViewPager (经典版)ViewPager2 (现代版)结论底层实现自定义实现ViewPager2性能更好,更灵活滑动方向仅支持水平滑动支持水平和垂直ViewPager2功能更强适配器ViewPager2写法更简洁,更现代动态修改页面困难,需要调用,且行为不稳定简单,基于,可使用DiffUtil高效更新ViewPager2完胜RTL 支持需要手动处理自动支持ViewPager2更智能状态已被官方弃用官方推荐首选 ViewPager2。

2025-09-23 15:39:19 662

原创 142. 环形链表 II

【代码】142. 环形链表 II。

2025-09-15 17:04:34 103

原创 141. 环形链表

【代码】141. 环形链表。

2025-09-15 16:44:34 131

原创 小红书 (Android) 搜素业务 面经

LiveData的原理,可以概括为:它是一个基于观察者模式的数据容器,通过与Lifecycle组件的精妙结合,实现了对生命周期的自动管理。它确保了数据更新的通知只在UI组件处于活跃状态时才被分发,并在组件销毁时自动清理引用,从而从根本上解决了传统UI更新方式中常见的内存泄漏、空指针和手动管理生命周期等一系列难题。所以,如果把线程比作不同的车道,主线程是唯一通往“UI大厦”的车道。“方便切换线程”,就好比说“这个立交桥很方便,能让车从辅路开到主路”。这描述的是它的功能和结果。

2025-09-13 16:50:42 868

原创 2516. 每种字符至少取 K 个

【代码】2516. 每种字符至少取 K 个。

2025-09-13 14:25:37 115

原创 基础知识 (面经)

当系统本以为传入的是一个普通字符串时,实际上可能传入的是这个恶意子类的实例,它可能会在系统进行安全校验之后,偷偷改变内部的值,从而引发严重的安全漏洞,比如SQL注入或者权限绕过。如果String是可变的,那么一个引用修改了字符串的值,就会导致常量池中其他所有指向该对象的引用都获得错误的数据,这会造成整个应用的混乱。== 是一个比较运算符,它比较的是变量所指向的内存地址。总的来说,super关键字是连接子类与父类的桥梁,它确保了继承关系中初始化链的完整性,并允许子类在重写父类行为的基础上进行有效的功能扩展。

2025-09-13 11:21:31 456

原创 潜行任务:刺客的道路 (Stealth Mission: The Assassin‘s Path)

你是一位代号为 "幻影" 的精英刺客,接到了一个几乎不可能完成的任务:潜入一座布满监控和守卫的敌方堡垒,以抵达位于堡垒东南角的秘密接头点。你的行动必须悄无声息,一旦被任何一个守卫发现,任务便宣告失败。堡垒的内部结构可以被描绘成一个二维网格地图。你必须运用智慧和策略,规划出一条绝对安全的潜行路线。,它代表了堡垒的布局。你的任务是判断是否存在一条从你的起始位置。到地图右下角终点的安全路径。你将获得一个由字符串向量。

2025-09-12 16:41:21 492

原创 小米 (Android) 一面

实例对象,静态变量,实例变量这一部分详细深入stringbuilder和stringbufferjava常见的数据结构arraylist底层java的基本数据类型和对象类型在MVVM里面LiveData到底是怎么保证整个订阅者的实时接收的TCP为什么需要第三次握手,两次不行吗HTTP请求码Activity的生命周期回调Android-skin-support到底是怎么实现换肤的有了解吗。

2025-09-11 11:44:38 221

原创 快手 Android

在验证身份时,是CA 的私钥加密了证书信息的摘要,这叫“数字签名”。在交换密钥时,是服务器的公钥加密了客户端生成的预主密钥。讲一下MVVM架构,然后为什么要选择这种架构首先,用一句话概括其核心思想MVVM 是一种目前在 Android 开发中非常主流的软件架构模式,它的全称是。其核心思想是通过 ViewModel 这个中间层,将视图(View)和数据处理(Model)进行解耦,实现数据驱动 UI的开发模式。接着,清晰地解释每个部分的角色,并结合 Android 组件举例View(视图)

2025-09-10 16:05:10 1195

原创 得物 (Android) 面经

启动方式返回值是否阻塞主线程典型场景launchJob否启动后台任务,不关心结果async否启动任务并获取结果T是入口/测试桥接。

2025-09-10 12:29:49 194

原创 10万个数里找最小的10个 (大顶堆)

要在10万个数中找出最小的10个数,最常用且高效的方法是利用。(优先队列),维持一个大小为10的堆。

2025-09-09 21:45:12 467

原创 199. 二叉树的右视图

【代码】199. 二叉树的右视图。

2025-09-09 20:44:08 611

原创 探照灯的时间

在一片草原上有n个探照灯,每个探照灯都会在夜里照亮一个连续的时间段,时间段长度都是m秒第i个探照灯的照明时间是[ti,ti+m-1]小明喜欢安静的夜晚,他希望尽可能长时间地只看到一个探照灯在工作。如果同时有两个或以上探照灯照亮,他就会觉得太耀眼。幸运的是,小明可以动用一次法术,把任意一个探照灯的开灯时刻ti改成任意正整数(可以非常大)请问,小明最多能获得多少秒钟,只有一个探照灯在照亮草原?输入:第一行一个整数T,表示测试数据组数对于每组数据:第一行包含两个整数n,m。

2025-09-08 19:00:45 414

原创 货箱队列 (dp)

我们用一个数组dp来记录我们的答案。dp[i]将字符串的前i个字符(也就是子串s[0...i-1])分成满足条件的最少组数是多少。dp[0]= 0 (空字符串需要0组)dp[1]= 1 (第一个字符自己一组)...我们的最终目标就是求dp[n],其中n是字符串的总长度。

2025-09-08 18:42:27 327

原创 虾皮 (Android) 面经

volatile 只能保证可见性,不能保证原子性。如果只是用于状态通知、开关标志很合适;如果有“复合操作”或“依赖当前值做计算再写回”的操作,volatile 并不能保证线程安全。Java 虚拟机栈中引用的对象: 也就是当前正在执行的方法里的局部变量所引用的对象。方法区中类静态属性引用的对象: 即由static关键字修饰的字段所引用的对象。方法区中常量引用的对象: 比如字符串常量池里的引用。本地方法栈中 JNI (即 Native 方法) 引用的对象。

2025-09-08 10:03:44 1070

原创 路径计数 (蚂蚁走时钟) 动态规划

【代码】路径计数 (蚂蚁走时钟) 动态规划。

2025-09-06 22:03:52 315

原创 1043. 分隔数组以得到最大和

【代码】1043. 分隔数组以得到最大和。

2025-09-03 16:23:42 100

原创 165. 比较版本号

【代码】165. 比较版本号。

2025-09-03 15:48:30 327

原创 567. 字符串的排列

【代码】567. 字符串的排列。

2025-09-03 15:47:58 133

原创 415. 字符串相加

【代码】415. 字符串相加。

2025-09-03 11:31:17 374

原创 常见Android 面试题汇总

如果需要频繁地、双向地控制 Service,比如音乐播放器(播放、暂停、获取进度),是首选。如果只是需要偶尔地、单向地从 Service 通知 Activity,比如一个下载任务完成后的通知,使用非常合适。在采用了MVVM 等现代架构的项目中,通过ViewModel和LiveData来作为通信桥梁是最佳实践,因为它最符合“数据驱动UI”的设计哲学。是 Android 四大组件之一,它的核心职责是作为一个统一的数据共享接口,允许一个应用程序安全地将其内部数据暴露给其他应用程序。

2025-09-02 20:48:43 326

原创 238. 除自身以外数组的乘积

【代码】238. 除自身以外数组的乘积。

2025-09-02 13:38:12 146

原创 189. 轮转数组

【代码】189. 轮转数组。

2025-09-02 13:23:34 96

原创 53. 最大子数组和

【代码】53. 最大子数组和。

2025-09-02 11:52:48 88

原创 76. 最小覆盖子串

【代码】76. 最小覆盖子串。

2025-09-02 11:39:27 113

原创 560. 和为 K 的子数组

如果没有初始化为1,则不会统计从头开始的子数组。

2025-09-02 10:59:01 194

原创 快手 (电商)【影石1.2面】-Android 面经

Java 的 GC 机制是一个复杂的自动化系统。它通过可达性分析来识别垃圾,通过分代模型来优化回收效率,并结合使用标记-复制、标记-清除、标记-整理等多种算法来完成不同区域的垃圾回收。在 Android 中,ART 虚拟机的 GC 机制也是基于这些核心思想进行深度优化的,旨在减少卡顿,提升应用流畅度。

2025-09-02 00:45:24 940 1

原创 虾皮一面面经 (Android)

总而言之,如果说 Java 是一门严谨、稳定的工业级语言,那么 Kotlin 就是在其基础上进化而来的“现代版 Java”。它通过更安全、更简洁、更具表现力的特性,显著提升了开发者的生产力和代码质量,这也是它成为 Android 官方语言的根本原因。

2025-09-01 22:24:20 562

原创 猿辅导 面经 (Android)

是一个基于 XML 和编译期代码生成的方案,它在现有的 View 体系上做了一层自动化封装。则是一个全新的、从根本上改变 UI 构建方式的声明式框架,它通过状态驱动重组的方式来实现数据和 View 的绑定。特性调用线程只能在主线程可以在任何线程执行方式同步(立即更新)异步(延迟更新)数据更新立即生效,不会丢数据可能会合并更新,只保留最后的值核心用途主线程的即时更新后台线程的 UI 更新在主线程用setValue,在后台线程用postValue。特性主线程 (UI Thread)

2025-09-01 22:07:56 778

原创 42. 接雨水

【代码】42. 接雨水。

2025-09-01 14:28:52 594

原创 15. 三数之和

【代码】15. 三数之和。

2025-09-01 14:03:26 97

原创 11. 盛最多水的容器

【代码】11. 盛最多水的容器。

2025-09-01 13:45:10 234

电影APP点赞,介绍,内容讲解

直接AS打开即可

2025-05-11

旅行景点推荐评分APP

解压后AS打开

2025-05-07

直接复制,然后粘贴到assert下面

直接复制,然后粘贴到assert下面

2025-03-06

百度一面 ,直接打开即可

百度一面 ,直接打开即可

2025-03-03

快手客户端(一面) 直接打开即可

快手客户端(一面) 直接打开即可

2025-02-27

美团Android客户端(一面),直接下载打开

美团Android客户端(一面),直接下载打开

2025-02-26

直接解压后打开 用Android Stdio

直接解压后打开 用Android Stdio

2025-02-17

多线程,停车场管理系统(文件)

多线程,停车场管理系统(文件)

2025-01-23

文件IO作业 (Java)

解压后idea打开

2025-01-21

(Java)集合类作业

解压后用idea打开

2025-01-20

类与对象作业 (Java)

解压后用idea打开

2025-01-20

空空如也

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

TA关注的人

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