![](https://img-blog.csdnimg.cn/b39794f933904327a079b5c68e1c886c.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
我的Android进阶之旅
文章平均质量分 86
1. 本专栏已有500+篇博客,还在持续更新中。。。
2. 本专栏已有700+读者订阅,还在持续订阅中。。。
3. 本专栏价格会根据运营平台政策调整而波动,价格会持续上涨,越早买越便宜!
4. 本专栏涵盖内容涉及Android各种知识点:Kotlin、Java、C++、ASM、OpenGL渲染等
优惠券已抵扣
余额抵扣
还需支付
¥19.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
字节卷动
字节卷动 | CSDN博客专家
博客知识包括:Android、ASM、OpenGL、C++、Java、Python、Shell、Jenkins、Gitlab、Git、SVN等相关进阶知识。
展开
-
【我的Android进阶之旅】【亲测有效,直接起飞!】解决Gradle下载过慢、下载gradle失败的问题的有效解决方式:使用国内镜像站点(腾讯镜像、阿里镜像)
服务,但由于网络环境不同以及其他因素,有时候从官方网站下载Gradle可能会面临下载速度缓慢或者超时的情况。针对这个问题,我们可以考虑使用国内镜像站点来加速Gradle的下载过程。为了解决Gradle下载过慢的问题,我们可以利用国内优秀的镜像站点来加速下载。通过使用这些国内镜像站点,我们可以更快地获取Gradle的安装包,避免官方下载地址带来的下载速度问题,从而提高我们的开发效率。打开上面的Gradle镜像网址,找到你现在项目所需的Gradle版本,然后复制链接。有时候速度可以,有时会根本下载不下来。原创 2024-08-24 23:50:35 · 0 阅读 · 0 评论 -
【Android面试八股文】你能说说LRU算法的原理并简单实现一下LRU算法吗?
LRU是的缩写,这种算法认为最近使用的数据是热门数据,下一次很大概率将会再次被使用。而最近很少被使用的数据,很大概率下一次不再用到。当缓存容量满的时候,优先淘汰最近很少使用的数据。假设现在缓存内部数据如图所示:这里我们将列表第一个节点称为头结点,最后一个节点为尾结点。当调用缓存获取key=1的数据,LRU算法需要将 1 这个节点移动到头结点,其余节点不变,如图所示。然后我们插入一个key=8节点,此时缓存容量到达上限,所以加入之前需要先删除数据。原创 2024-08-11 13:35:00 · 66 阅读 · 0 评论 -
【Android面试八股文】你说你开发过IM通信SDK使用的编解码方案是TLV方案,能否展示说说你们怎么使用TLV编解码的?
Tips:每层嵌套都有2个或以上的字节增加(Tag和Length),一般通信双方可以按照协议对数据类型进行推定,所以大家可以根据实际需要,决定是否省略第三层的Tag和Length,即可通过配置文件或其它方式让程序了解字段的类型,从而降低数据包的大小,节省流量。描述Value部分所占字节的个数,编码格式分两类:定长方式(DefiniteForm)和不定长方式(IndefiniteForm),其中定长方式又包括短形式与长形式。这种方式使得可以在编码没有完全结束的情况下,可以先发送部分数据给对方。原创 2024-08-09 20:50:05 · 131 阅读 · 0 评论 -
【Android面试八股文】说一说Android开发模式之MVC、MVP、MVVM的区别?
MVC模式中,Activity同时承担了View和Controller的责任,代码相对简单,但可能导致Controller臃肿。MVP模式通过Presenter解耦了业务逻辑和视图,使得代码更易于维护和测试。MVVM模式使用ViewModel和LiveData实现了数据的双向绑定,代码更加简洁且易于测试,但引入了额外的复杂性。这三个模式各有优缺点,选择时应根据项目的需求来决定。原创 2024-08-09 20:05:56 · 41 阅读 · 0 评论 -
【我的OpenGL学习进阶之旅】讲一讲GL_TEXTURE_2D和GL_TEXTURE_EXTERNAL_OES的区别
提供了对标准2D图像的处理能力,可以存储静态的贴图图像或者帧缓冲区的渲染结果。其使用二维的纹理坐标系,通过将纹理坐标映射到纹理图像上的对应位置,可以实现纹理贴图、纹理过滤、纹理环绕等操作。纹理的特点使用二维纹理坐标系进行操作;使用函数加载纹理数据;通过纹理过滤和纹理环绕等方式进行纹理的采样和处理;是 OpenGL 中的一个纹理目标类型,用于表示二维纹理。纹理是图形处理中的重要元素,用于将图像映射到几何体表面,从而实现复杂的图形效果。原创 2024-07-25 22:30:12 · 390 阅读 · 0 评论 -
【Android面试八股文】1.使用了HTTPS就绝对安全了吗?2.HTTPS 会被抓包吗?3.如何避免被中间人抓取数据?
HTTPS是在 HTTP 的基础上加入加密层的协议,用于安全的数据传输。TCP 三次同步握手客户端验证服务器数字证书DH 算法协商对称加密算法的密钥、hash 算法的密钥SSL 安全加密隧道协商完成网页以加密的方式传输,用协商的对称加密算法和密钥加密,保证数据机密性;用协商的 hash算法进行数据完整性保护,保证数据不被篡改。HTTPS 一定是安全的吗?用了HTTPS就安全了吗?HTTPS 会被抓包吗?网络面经:使用HTTPS就绝对安全了吗?原创 2024-07-16 01:16:46 · 571 阅读 · 0 评论 -
【Android面试八股文】1. 说一说Java四大引用有哪些? 2. 软引用和弱引用的区别是什么?
强引用是最常见的引用类型,它决定了对象的生命周期。软引用用来实现缓存,对内存敏感的对象,当内存不足时可以被回收。弱引用用来实现弱关联,当没有强引用指向对象时,即使有弱引用指向它,也可以被垃圾回收器回收。虚引用主要用来跟踪对象被回收的状态,在对象被回收时收到系统通知,用于执行一些必要的清理操作。这些引用类型提供了灵活的内存管理机制,可以根据实际需求选择合适的引用类型来优化程序的性能和内存使用。回收时机:软引用是在系统内存不足时才被回收,而弱引用则是在下一次垃圾回收时被回收。适用场景。原创 2024-07-15 23:17:41 · 1141 阅读 · 0 评论 -
【Android面试八股文】谈谈OkHttp框架的原理(深度剖析源码)
OkHttp是一个开源的网络请求框架,由Square公司开发和维护,用于在 Android 和 Java 应用中发送和接收HTTP请求。Google在Android4.4以后开始将源码中的底层实现替换为OKHttp,同时现在流行的Retrofit框架底层同样是使用OKHttp的。它提供了简单而强大的API,支持同步和异步请求,并在性能和可扩展性方面表现优秀。主要特性和优势:支持 HTTP/2 和 SPDY。原创 2024-07-13 23:25:56 · 453 阅读 · 0 评论 -
【Android面试八股文】谈谈你对Glide框架的缓存机制设计的理解
除了内存缓存,Glide还使用磁盘缓存来长期存储图像数据。磁盘缓存有助于避免每次应用启动时都重新下载图片,提升用户体验和节省网络带宽。磁盘缓存默认使用Android的来实现,它将图像数据存储在设备的持久存储中,例如内部存储或外部存储(SD卡)。当谈到自定义缓存时,我们通常指的是根据特定需求修改或扩展现有框架(如GlidePicasso等)的缓存行为,以优化应用程序的性能和用户体验。下面我会详细说明如何在使用Glide时实现自定义缓存。Glide默认使用LRU(最近最少使用)原创 2024-07-13 17:33:02 · 284 阅读 · 0 评论 -
【Android面试八股文】你说ARouter采用APT技术,那么谈一下你对APT技术的理解,还有那些框架是采用APT技术呀?JavaPoet
是一种在的技术,它允许开发者在时和Java 源代码中的注解信息,生成。APTJava 编译器语法分析语义分析生成字节码总体来说,APT 技术通过利用注解和处理器,能够在编译期间进行代码生成和静态检查,提高了代码质量和开发效率。然而,使用时需要权衡其优缺点,选择适合项目需求的解决方案。原创 2024-07-13 03:53:00 · 1417 阅读 · 0 评论 -
【Android面试八股文】SharedPreference原理,commit与apply的区别是什么?使用时需要有哪些注意?SharedPreference的性能有什么优化方案:MMVK?
是 Android 提供的一种轻量级的数据存储方式,用于存储应用程序的配置信息或者一些简单的用户偏好设置。它基于键值对的方式存储数据,并且数据是持久化的,即使应用关闭后数据依然存在。的数据存储在XML文件中,每个应用都有自己的存储目录,路径一般为下的XML文件。每个XML文件对应一个实例。保存的文件为XML数据,其内容如下原创 2024-07-13 01:58:56 · 1027 阅读 · 0 评论 -
【Android面试八股文】Android性能优化面试题:怎样检测函数执行是否卡顿?
卡顿一、可重现的卡顿二、不可重现的卡顿第一种方案: 基于 Looper 的监控方法第二种方案:基于 Choreographer 的监控方法第三种方案:字节码插桩方式第四种方案: 使用 JVMTI 监听函数进入与退出总结相关大厂的方案ArgusAPMBlockCanaryQQ空间卡慢组件Matrix微信广研参考文档原创 2024-07-04 22:46:42 · 465 阅读 · 0 评论 -
【Android面试八股文】你是怎么保证Android设备的时间与服务器时间同步的?(使用NTP和TrueTime方案)
一、网络时间协议(NTP)二、使用网络时间协议(NTP)2.1 使用系统提供的 NTP 服务器2.2 使用TrueTime2.2.1 引入TrueTime库2.2.2 初始化 TrueTime2.2.3 用法2.2.4 使用 TrueTime 获取时间2.2.4 自动更新时间2.2.5 注意事项二. 使用 HTTP 请求获取服务器时间2.1. 发送 HTTP 请求获取服务器时间2.2. 在 Android 应用中发送 HTTP 请求2.2.1 使用HttpURLConnection原创 2024-07-04 21:56:15 · 289 阅读 · 0 评论 -
【Android面试八股文】App对内存是如何限制的?应该如何合理使用内存?
一、内存管理概览二、垃圾回收三、共享内存四、分配与回收应用内存五、限制应用内存六、切换应用七、进程间的内存分配八、内存类型九、物理内存 虚拟内存9.1 物理内存9.2 虚拟内存9.3 虚拟内存的好处9.4 共享库内存十、VSS RSS PSS USS区别十一、Android系统的页面置换11.1 内存页面十二、内存不足管理12.1 内核交换守护进程12.2 低内存终止守护进程12.2.1 onTrimMemory()12.2.2 onLowMemory()十三、计算原创 2024-07-02 22:13:38 · 113 阅读 · 0 评论 -
【Android面试八股文】你知道什么是冷启动和热启动吗?你知道应用冷启动的全流程吗?你知道如何解决启动时候的黑白屏问题?
解决Android应用程序启动时出现的黑白屏问题通常涉及到优化启动流程和加载过程中的UI显示。冷启动是指用户第一次启动一个应用程序时的启动流程。这个流程涵盖了从应用启动图标点击到界面显示的整个过程,每一步都是确保应用正常启动并且用户能够看到期望界面的关键步骤。通过以上方法,可以有效减少Android应用程序启动时的黑白屏问题,提升用户体验和应用启动的视觉流畅度。在Android开发中,原创 2024-07-02 01:26:17 · 84 阅读 · 0 评论 -
【Android面试八股文】在你之前的Android项目中,你是如何进行性能优化的?
这些方法和策略通常会根据具体的项目需求和应用场景进行调整和优化,帮助提升Android应用的性能和用户体验。在之前的Android项目中,优化和提升性能是一个重要且常见的任务。原创 2024-07-02 01:05:59 · 96 阅读 · 0 评论 -
【Android面试八股文】你说你使用Leakcanary进行内存泄漏检测,那你能说一说Leakcanary的原理吗?
带你读懂 Reference 和 ReferenceQueue一步步拆解 LeakCanary深入理解Leakcanary源码LeakCanary中文使用说明LeakCanary:让内存泄漏无所遁形深入理解 Android 之 LeakCanary 源码解析。原创 2024-07-01 23:08:14 · 345 阅读 · 0 评论 -
【Android面试八股文】性能优化相关面试题:如何查找CPU占用?
开发工具中的一个性能分析工具,用于帮助开发者分析和优化应用程序的性能。就会有以下的界面,注意看下面标注的四个步骤。原创 2024-07-01 01:21:21 · 292 阅读 · 0 评论 -
【Android面试八股文】性能优化相关面试题:Android中一张图片100x100在内存中的大小?
在Android开发中,理解图片的文件大小和加载到内存中后的实际占用大小之间的区别至关重要:- **文件大小**:指的是图片在磁盘上存储的实际大小,通常以 KB 或 MB 为单位。这个大小受图片格式(如PNG、JPEG等)和压缩算法的影响。 - **内存占用**:当图片被加载到应用程序的内存中时,它们会被解码为位图(Bitmap)对象。位图的内存占用取决于图片的分辨率和每个像素点的位深度。原创 2024-06-30 23:33:10 · 52 阅读 · 0 评论 -
【Android面试八股文】如何判断一个APP在前台还是后台?有哪几种方法?
虽然通过查询运行中的进程来判断应用的前后台状态是一种早期的实现方式,但由于系统安全性和效率的考虑,现在更推荐使用或来监控应用的生命周期和内存状态变化。这些方法更加直接、高效,并且在更高版本的 Android 上仍然可靠。原创 2024-06-30 18:17:53 · 90 阅读 · 0 评论 -
【Android面试八股文】Fragment的add和replace的区别,分别对Fragment的生命周期有什么影响?
replace方法:直接替换当前容器中的 Fragment,适用于完全切换视图内容的情况。replace方法并添加到返回栈:在替换的同时将原 Fragment 添加到返回栈,可以支持返回操作。hide和add方法结合:保留 FragmentA 的状态,仅在需要切换时显示或隐藏,适用于需要快速切换视图的情况。add和remove方法结合:完全移除原 Fragment 并添加新的 Fragment,适用于需要精确控制添加和移除过程的情况。原创 2024-06-30 17:59:07 · 229 阅读 · 0 评论 -
【Android面试八股文】1. 说一说BroadcastReciver广播的两种基本类型 2. BroadcastReciver的静态注册和动态注册的区别是什么?
1. BroadcastReceiver 广播的两种基本类型1.1 标准广播(Normal Broadcast)1.2. 有序广播(Ordered Broadcast)1.3 总结2. BroadcastReceiver 的静态注册和动态注册的区别2.1 静态注册2.2 动态注册2.3 选择注册方式的考虑因素3. 总结原创 2024-06-30 02:47:18 · 46 阅读 · 0 评论 -
【Android面试八股文】1. 请你说一下ContentProvider是什么?使用场景是什么? 2. 请你描述一下如何自定义ContentProvider?
要自定义一个定义数据库架构:确定你的数据模型和 SQLite 数据库的结构。继承 ContentProvider 类:创建一个类并继承类,实现必要的方法。实现 ContentProvider 方法onCreate():在此方法中进行初始化工作,例如创建数据库或者初始化其他必要的资源。query():处理查询请求,返回符合条件的数据。insert():处理插入新数据的请求。update():处理更新数据的请求。delete():处理删除数据的请求。getType():返回请求数据的 MIME 类型。原创 2024-06-30 02:19:20 · 37 阅读 · 0 评论 -
【Android面试八股文】你在项目开发过程中,IntentService与Service用过吗,理解他们两者区别吗?
IntentService的设计使得开发者能够简化异步任务的管理,它自动处理线程的创建和销毁、Intent的传递和顺序处理。这些特性使得IntentService特别适合于处理后台任务,如下载文件、上传数据、处理通知等,能够帮助开发者有效地管理后台任务的执行顺序和生命周期。原创 2024-06-30 01:57:19 · 183 阅读 · 0 评论 -
【Android面试八股文】Android组件内核面试题:Activity的4大启动模式,与开发中需要注意的问题,如onNewIntent() 的调用
一. Android启动模式详解1.1 Standard 标准模式1.2 SingleTop 栈顶复用模式1.3 SingleTask 栈内复用模式1.4. SingleInstance 单实例模式二、启动模式的使用方法2.1 在 Manifest.xml中指定Activity启动模式2.2 启动Activity时,在Intent中指定启动模式去创建Activity三、 Activity 的 Flags1. FLAG_ACTIVITY_NEW_TASK2. FLAG_ACTIVITY_S原创 2024-06-29 00:18:59 · 25 阅读 · 0 评论 -
【Android面试八股文】Android组件内核面试题:Acitvity的生命周期,如何摧毁一个Activity? (美团面试题)
待Activity处于Resume状态时,ActivityThread会调用该函数。当Activity进入Pause的状态后,会通过Binder回调到。之后,开始启动Activity销毁以及结果返回的流程。通知AMS开始销毁当前Activity,并且携带参数。如果Pause完毕之后,则开始处理Stop的流程。该函数主要用来完成销毁当前Activity。当用户进程处于空闲状态时,就会回调。当Pausing完毕后,会执行。中移除,如果不是的话,则调用。而在该接口中,就会调用。,如果是的话,则直接把。原创 2024-06-28 23:40:33 · 45 阅读 · 0 评论 -
【Android面试八股文】WindowMangerService中token到底是什么?token的存在意义是什么?
首先我们看到报错是在,这个地方肯定有进行token判断,然后才抛出异常,这样我们就能寻找到token...int res;........./** 注释1*/");.........我们可以快速看出在注释1的地方抛出了异常,是根据一个变量res来判别的,这个res出自方法,那么token的判别肯定在这个方法里面了,res只是一个 判别的结果,那么我们是必须进入这个里去看一下。的类型是,他是一个接口,那他的实现类在哪里?找不到实现类就无法知道他的实际代码。这里涉及到window。原创 2024-06-28 23:19:18 · 107 阅读 · 0 评论 -
【Android面试八股文】为什么Dialog不能用Application的Context?
这也是Android框架设计的一个限制,确保界面元素的正确管理和显示。:窗口管理服务,负责窗口的启动、添加和删除,并管理窗口的大小和层级。是窗口的意思,对应屏幕上的一块显示区域,它的实现类是。的生命周期,可能会引起内存泄漏和崩溃等问题。之间的管理接口,管理窗口顺序和消息等。令牌,用于唯一标识系统中的一个窗口。:窗口令牌,是一种特殊的。来展示,而这个窗口环境只有。的生命周期依赖于其父。下面的示例代码演示了使用。和正确的生命周期管理。的实例,是应用窗口类型。运行后是可以获得的。服务的话,会得到一个。原创 2024-06-28 18:34:28 · 91 阅读 · 0 评论 -
【Android面试八股文】如何通过WindowManager添加Window?
个系统正式统一开发者使用悬浮窗的类型窗口,属于系统窗口。参数,这个参数决定了窗口的类型,这里我们定义成一。而言,获取到的其实是一个封装过的代理对象,一个。,另外就是布局相关的熟悉,其中最关键的一点。服务的代理对象,不过对于。的各种属性,他们决定了。原创 2024-06-28 18:00:15 · 121 阅读 · 0 评论 -
【Android面试八股文】如何优化二维码的扫描速度?
是一款基于OpenCV引擎的高效微信二维码识别库,它的设计灵感来源于微信的二维码扫描机制。该项目不仅提供了二维码识别功能,还具备完整的扫码界面,让用户能够轻松地集成到自己的Android应用中,实现类似微信的扫码体验。包含多个模块,满足不同开发需求,如基本的识别库、完整的扫码界面等。原创 2024-06-28 03:05:52 · 109 阅读 · 0 评论 -
【Android面试八股文】你能说一说Zygote进程的启动流程吗?
zygote进程是由init进程启动的,init进程通过解读init.rc文件的方式启动了zygote,但是zygote所涉及的内容非常多,我们需要一步一步的分析它的细节。原创 2024-06-28 00:12:48 · 39 阅读 · 0 评论 -
【Android面试八股文】 Looper 为什么要使用死循环?Looper.loop会不会阻塞主线程?Looper无限循环的阻塞会不会导致主线程ANR?
一、 Looper 为什么要使用死循环?1.1 进程1.2 线程1.3 ActivityThread1.4 总结二、 Looper.loop会不会阻塞主线程?2.1 概述2.2 nativePollOnce2.3 `nativePollOnce` 的底层逻辑2.4 Android中为什么主线程不会因为Looper.loop()里的死循环卡死?2.5 总结三、Looper无限循环的阻塞会不会导致主线程ANR?3.1 ANR3.1.1 什么是ANR3.1.1 发生ANR的主要四种情况原创 2024-06-27 20:45:31 · 363 阅读 · 0 评论 -
【Android面试八股文】说一说Handler的sendMessage和postDelay的区别?
发送对象不同发送的是Message对象,可以包含更多数据和信息。发送的是Runnable对象,表示一个要执行的任务。使用场景不同适合需要传递数据并进行复杂消息处理的场景。适合直接执行任务,尤其是那些无需传递复杂数据的场景。方法签名不同系列方法包括等。系列方法包括等。原创 2024-06-27 03:13:17 · 91 阅读 · 0 评论 -
【Android面试八股文】Handler如果没有消息处理是阻塞的还是非阻塞的?Looper 为什么要使用死循环?Android中为什么主线程不会因为Looper.loop()里的死循环卡死?
Handler如果没有消息处理是阻塞的还是非阻塞的?Looper 为什么要使用死循环?Android中为什么主线程不会因为Looper.loop()里的死循环卡死?原创 2024-06-27 02:50:21 · 128 阅读 · 0 评论 -
【Android面试八股文】Framework面试:AIDL 的全称是什么?如何工作?能处理哪些类型的数据?
AIDL 的全称是,即 Android 接口定义语言。它是一种专门用于描述 Android 应用程序组件之间接口的语言,主要用于在不同的进程间进行通信。编译器可以通过aidl文件生成一段代码,生成的代码封装了binder,可以当成是binder的延伸。原创 2024-06-27 00:25:23 · 49 阅读 · 0 评论 -
【Android面试八股文】Framework面试:描述下Binder机制原理?
Binder是Android提供的一套进程间相互通信框架,它是一种效率更高、更安全的基于C/S架构的IPC通信机制,其本质也是调用系统底层的内存共享实现。它基于开源的OpenBinder实现,从字面上来解释Binder有胶水、粘合剂的意思,顾名思义就是粘和不同的进程,使之实现通信。原创 2024-06-26 23:01:08 · 149 阅读 · 0 评论 -
【Android面试八股文】Framework面试:Android中多进程通信的方式有哪些?
Android是在Linux内核基础之上运行,因此Linux中存在的IPC机制在Android管道: 在创建时分配一个page大小的内存,缓存区大小比较有限;信号: 不适用于信息交换,更适用于进程中断控制,比如非法内存访问,杀死某个进程等;信号量:常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。共享内存:无须复制,共享缓冲区直接付附加到进程虚拟地址空间,速度快;原创 2024-06-26 22:12:29 · 91 阅读 · 0 评论 -
【Android八股文】如何对ListView & RecycleView进行局部刷新的?
Android ListView优化之局部刷新(更新)(非notifyDataSetChanged)这三种方法的核心就是找出你要更新Item的,然后再去操作。因为ListView默认只会加载一屏的数据,所以要判断其可见范围。不可见的在滑动的时候getView会自动调用更新数据。最后要强调的一点就是关于布局优化,最好将item的高度设置为一个固定的值,这样能减少getView的调用次数。因为一个不确定的值,ListView会频繁调用多次getView去确定其高度和渲染。原创 2024-06-26 01:43:01 · 232 阅读 · 0 评论 -
【Android面试八股文】说一说ListView卡顿的原因以及相对应的优化策略
数据绑定逻辑过多的话,首先是区分出与界面有关的逻辑计算和与界面无关的逻辑计算,与界面有关的逻辑计算只能通过优化算法逻辑、数据结构处理,与界面无关的逻辑计算不影响界面的显示可以开线程用于计算。简单的设置以及一些简单的计算是不会消耗很多的时间的,如果是包含大量的控件属性设置、数据遍历、转化的话时间就会成倍的增长,最终可能就会导致ListView的卡顿。必须以极短的时间完成数据绑定和图片加载刷新,但图片的加载是需要耗费较大的性能和时间的,频繁的图片加载会延缓Item的数据绑定过程,容易造成卡顿。原创 2024-06-25 23:19:40 · 284 阅读 · 0 评论 -
【Android面试八股文】如何实现Activity窗口快速变暗
在Android中实现Activity窗口快速变暗有几种方法,其中一种简单且常用的方法是使用WindowManager.LayoutParams来动态调整窗口的亮度。通过改变窗口的透明度,你可以实现活动窗口快速变暗的效果。原创 2024-06-25 18:52:27 · 109 阅读 · 0 评论