kotlin
文章平均质量分 80
zhangphil
zhangphil@live.com
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Kotlin协程cancel取消正在运行的并行Job
Kotlin协程的cancel()方法不能保证立即停止正在运行的协程任务。示例代码展示了四种取消方式:job1无法被取消会持续运行;job2通过delay()响应取消;job3使用ensureActive()检查取消状态;job4通过isActive主动检测取消状态。与Java线程类似,协程需要内部配合检查取消状态才能真正停止任务。delay()、ensureActive()或isActive检查是实现可靠取消的关键机制。原创 2025-12-05 23:59:25 · 208 阅读 · 0 评论 -
Android宽高不均等Bitmap缩放为指定宽高FitCenter到正方形Bitmap,Kotlin
本文介绍了两种Kotlin实现将任意宽高比Bitmap缩放为指定大小正方形Bitmap的方法。方案1通过计算中心裁剪区域并缩放实现,方案2(推荐)使用Canvas绘制,通过RectF定义源区域和目标区域实现更精确的fitCenter效果。两种方法都能将图片居中裁剪为最小边长的正方形,然后缩放到目标尺寸(默认400x400)。方案2避免了额外的bitmap创建步骤,性能更优。代码示例展示了如何处理高图和宽图两种不同比例的图片,适用于需要保持图片比例同时适应固定尺寸显示的场景。原创 2025-11-22 23:08:58 · 130 阅读 · 0 评论 -
Kotlin协程Flow任务流buffer缓冲批量任务,筛选批量中最高优先级任务运行(2)
本文展示了使用Kotlin协程Flow实现带缓冲的批量任务处理。通过将0-51的数字分块(5个一组)生成随机优先级的任务,使用buffer()设置容量为3的缓冲区。在collect阶段对每批任务按优先级排序,执行最高优先级任务。输出显示生产者(onEach)快速生成数据,消费者(collect)逐个处理缓冲区中的批量任务,每次都成功识别并执行当前批次中最高优先级的任务。这种模式适用于需要缓冲处理批量任务并动态选择最优执行顺序的场景。原创 2025-11-15 23:03:41 · 880 阅读 · 0 评论 -
Kotlin协程Flow流buffer缓冲批量任务或数据,条件筛选任务或数据
摘要: 本文演示了Kotlin协程Flow中buffer缓冲的应用,通过分批处理0-50的数据,设置容量为3的缓冲区并采用SUSPEND溢出策略。代码将数据切分为5个一组,使用onEach模拟生产者生成数据,collect作为消费者处理数据并计算每组的最大最小值。运行结果显示生产者先批量生成3组数据后暂停,消费者处理完缓冲数据后继续生产,实现了生产-消费的节流控制。文章还提供了相关技术博客链接供进一步参考。原创 2025-11-14 23:11:44 · 339 阅读 · 0 评论 -
Kotlin协程await与join:调度协程优先级及等待线程任务结束
摘要:Kotlin协程中,join()和await()均可用于等待协程完成。join()会挂起当前协程直到指定任务完成,而await()会返回计算结果。代码示例展示了使用join()时高优先级任务先执行(taskHigh延迟1秒),其他任务(taskA/B/C)在join完成后并发执行;使用await()时同样需要等待async任务完成才能继续后续任务。两者都能实现协程间的同步,但await()适用于需要返回值的场景。原创 2025-11-10 23:04:30 · 293 阅读 · 0 评论 -
Kotlin线程池newFixedThreadPoolContext延迟启动/加载CoroutineStart.LAZY
本文演示了Kotlin协程中使用newFixedThreadPoolContext创建线程池,并结合CoroutineStart.LAZY实现延迟加载。通过创建包含4个线程的线程池,分别启动两个延迟协程任务(LAZY)和一个立即执行任务(ATOMIC)。立即任务执行完成后,手动触发两个延迟任务的启动。代码展示了如何控制协程的执行时机,以及如何通过limitedParallelism限制并发线程数。这种机制适用于需要精细化控制任务执行顺序和线程使用的场景。原创 2025-11-06 23:12:39 · 253 阅读 · 0 评论 -
Kotlin列表mutableListOf按照某个字段排序sortBy
摘要:本文演示了Kotlin中使用mutableListOf创建可变列表,并通过sortBy方法按照DataBean类的index字段排序。示例代码创建了包含5个元素的列表,使用sortBy{it.index}按索引值排序后输出结果。data class简化了数据类的定义,包含index和data两个属性。输出结果为按1-5排序的索引和对应字母组合。原创 2025-11-05 23:30:56 · 142 阅读 · 0 评论 -
Kotlin线程池newFixedThreadPoolContext与约束协程运行的线程数量limitedParallelism
Kotlin协程线程池资源分配示例:通过newFixedThreadPoolContext创建4线程的全局调度器,并使用limitedParallelism实现多级任务优先级调度。高优先级任务(highTask)可使用全部4线程,中优先级(mediumTask)限制为2线程,低优先级(lowTask)仅限1线程。这种机制确保高优先级任务总能获得空闲线程,而低优先级任务只能在剩余资源中运行。代码展示了如何通过控制并发线程数来实现不同优先级的协程任务调度。原创 2025-11-03 23:48:17 · 229 阅读 · 0 评论 -
Android Coil 3透明渐变crossfade,Kotlin
本文介绍了在Android中使用Coil3库实现图片加载时的透明渐变(crossfade)效果。通过Kotlin代码示例,展示了如何设置从占位图到最终加载图片之间的渐变过渡,并详细说明了相关参数配置。重点包括:使用crossfade()方法启用渐变效果,设置渐变时长(5000毫秒),配置占位图(placeholder)以及处理加载错误的情况。文章还提供了布局文件示例和完整的Activity实现代码,帮助开发者快速实现图片加载时的平滑过渡效果。原创 2025-09-28 23:10:54 · 268 阅读 · 0 评论 -
Kotlin轻量级互斥锁Mutex与轻量级信号量Semaphore异同比较
Kotlin中的Mutex和Semaphore都是用于并发控制的同步机制,但适用场景不同。Mutex是互斥锁,保证同一时间只有一个线程访问单个资源,适用于保护共享变量或文件等场景。Semaphore是信号量,通过计数器控制对一组资源的访问数量,适用于数据库连接池等资源池管理。Mutex性能更优,但两者都需注意避免死锁。代码示例展示了如何使用withLock和withPermit函数实现同步控制。实际应用中应根据需求选择合适机制,Mutex适合单一资源保护,Semaphore适合控制并发访问数量。原创 2025-09-27 23:13:34 · 921 阅读 · 0 评论 -
Kotlin互斥锁Mutex协程withLock实现同步
Kotlin中使用Mutex实现协程同步的示例。通过withLock方法确保临界区代码互斥执行,对比了无锁和有锁情况下的并发输出差异。示例展示了三个协程(A、B、C)竞争访问共享资源时,Mutex如何保证线程安全。文章还提供了Java与Kotlin中Semaphore相关技术的参考链接。该方案适用于需要协调多个协程访问共享资源的场景,能有效避免并发冲突。原创 2025-09-22 23:20:17 · 469 阅读 · 0 评论 -
Android decode time cost BitmapFactory.decodeFileDescriptor / decodeFile vs ImageDecoder,Kotlin
Android图片解码性能对比测试显示,ImageDecoder速度最优,其次是BitmapFactory.decodeFile,最慢是BitmapFactory.decodeFileDescriptor。测试基于高通骁龙8Gen1和展锐平台,结果表明解码速度与芯片架构实现相关。在高通平台上,谷歌官方推荐的ImageDecoder表现最佳,解码时间最短。该测试为Android开发者选择图片解码方案提供了性能参考依据。原创 2025-09-10 23:05:33 · 286 阅读 · 0 评论 -
Android把源Bitmap中心缩放到固定宽高的尺寸,Kotlin
该代码实现了一个Android Kotlin函数fitCenterTo,用于将源Bitmap中心缩放到指定尺寸。主要逻辑是:当Bitmap的最大边长超过maxLength时,按比例缩放至maxLength,否则保持原图。适用于需要将图片适配到固定尺寸容器的场景,如方形网格布局。相关技术涉及Bitmap缩放、Canvas绘制和Matrix变换,可参考CSDN博客中关于Android图片处理、Material Design布局和Kotlin绘图的更多内容。原创 2025-09-02 23:08:47 · 830 阅读 · 0 评论 -
Android报错:java.lang.IllegalStateException: Cannot call this method while RecyclerView is computing
Android开发常见问题解决方案:1. RecyclerView报错IllegalStateException的解决方法是在调用notifyDataSetChanged前检查状态,确保RecyclerView不在布局计算或滚动中;2. CardView导入问题可通过参考CSDN博客解决,该文详细介绍了导入方法和使用示例。两个问题分别涉及RecyclerView状态管理和第三方库集成,都是Android开发中的典型场景。原创 2025-08-26 23:10:58 · 422 阅读 · 0 评论 -
Android用Coil 3检查媒体资源是否有效,Kotlin
【Android图片处理技术摘要】1. 使用Coil库检查图片有效性:通过构建1x1像素的低精度请求,执行阻塞式加载并检测bitmap数据,耗时约50ms;2. 性能优化方案:a)自定义Interceptor实现请求耗时监控;b)视频封面缓存改进:JPEG格式压缩使体积减少90%,结合FFmpeg首帧提取和缓冲流技术提升I/O效率。两项技术兼顾功能实现与性能提升,完整方案见CSDN博客。原创 2025-08-25 23:09:51 · 457 阅读 · 0 评论 -
Android Coil 3拦截器Interceptor计算单次请求耗时,Kotlin
【Android Coil3技术分享】文章包含两部分内容:1) 通过自定义Interceptor拦截器实现图片请求耗时统计功能,记录从请求发起至完成的时间差;2) 优化视频封面帧缓存方案,将PNG格式改为JPEG压缩(质量80%),使文件体积减少90%,同时采用FFmpeg快速抽取首帧和缓冲流技术提升磁盘I/O性能。该方案在保持画质的同时显著提升了缓存效率。原创 2025-08-19 23:31:01 · 688 阅读 · 0 评论 -
Android Coil3视频封面抽取封面帧存Disk缓存,Kotlin(2)
本文介绍了基于Coil3的Android视频封面抽取优化方案,重点改进了磁盘缓存性能。通过将封面帧从PNG无损格式改为JPEG有损压缩(质量80),使缓存文件大小缩减至原先的1/10,显著提升了读写速度。核心实现包括:1)使用FFmpegMediaMetadataRetriever快速抽取视频首帧;2)自定义Bitmap压缩参数(Bitmap.CompressFormat.JPEG);3)采用缓冲流(BufferedOutputStream)处理磁盘缓存写入。该方案在保持图像质量的同时优化了I/O性能,适用原创 2025-08-18 23:36:45 · 1130 阅读 · 0 评论 -
Android实现Glide/Coil样式图/视频加载框架,Kotlin
本文介绍了一种Android实现Glide/Coil样式图片/视频加载框架的Kotlin解决方案。该方案采用二级缓存架构:内存缓存使用LruCache,磁盘缓存基于DiskLruCache实现,最大支持1GB存储空间。通过MD5加密URL生成缓存键,支持同步/异步加载模式,并利用协程处理IO操作。框架包含完整的缓存管理、异常处理和生命周期绑定功能,特别针对视频封面提取场景进行了优化。相比原生实现,该方案在性能测试中显著提升了缩略图加载速度,内存占用减少约30%。相关技术细节可参考作者CSDN博客中对FFmp原创 2025-08-13 23:16:28 · 1099 阅读 · 0 评论 -
Android Coil3视频封面抽取封面帧存Disk缓存,Kotlin
本文介绍了一个基于Coil3的Android视频封面抽取实现方案。项目通过MediaStore获取设备视频列表,使用MediaMetadataRetriever提取视频首帧作为缩略图,并采用二级缓存(内存+磁盘)优化性能。核心功能包括:1)声明读写存储权限;2)RecyclerView网格布局展示;3)协程处理耗时操作;4)自定义ImageLoader配置缓存策略(最大2GB)。相比原生方案,该实现通过Coil的缓存机制提升了缩略图加载效率,同时处理了视频损坏等异常情况。相关技术细节可参考作者CSDN博客中原创 2025-08-11 23:13:19 · 900 阅读 · 0 评论 -
Android快速视频解码抽帧FFmpegMediaMetadataRetriever,Kotlin(2)
本文介绍了两种Android视频封面提取方案对比:1)原生MediaMetadataRetriever速度较慢;2)第三方FFmpegMediaMetadataRetriever(FFMMR)实现快速抽帧。详细说明了FFMMR的集成方法(添加依赖和权限),并提供了完整的Kotlin实现代码,包括视频列表读取、缓存管理、协程异步处理等核心功能。通过LruCache缓存缩略图提升性能,记录处理耗时和失败情况。相比前文介绍的原生方案,本文重点突出了FFMMR在解码效率和性能上的优势,为需要快速获取视频帧的场景提供原创 2025-08-10 23:12:58 · 833 阅读 · 0 评论 -
Android MediaMetadataRetriever取视频封面,Kotlin(1)
该Android项目实现了一个视频缩略图展示功能,主要包含以下内容:1)声明了读写存储权限;2)使用RecyclerView以9列网格布局展示视频;3)通过MediaMetadataRetriever获取视频首帧作为缩略图;4)采用协程处理耗时操作,避免阻塞主线程。项目包含MainActivity、MyAdapter和MyData三个核心类,分别负责UI初始化、数据适配和数据封装。遇到视频损坏或0字节文件时,会显示错误图标并记录日志。整体实现了高效读取设备视频并生成缩略图展示的功能。原创 2025-08-09 23:26:57 · 1136 阅读 · 0 评论 -
Kotlin中String的==相等比较符
Kotlin中String的==和equals()比较结果相同,都会比较字符串内容。示例代码展示了字符串常量比较都返回true,因为Kotlin/Java会复用字符串常量池中的相同对象。当创建字符串时,若池中已存在相同值则直接返回引用,否则新建对象并缓存。这种机制优化了内存使用,使得相同字符串常量的比较更高效。原创 2025-08-07 23:14:51 · 487 阅读 · 0 评论 -
Kotlin单例模式懒汉模式:LazyThreadSafetyMode.SYNCHRONIZED(2)
摘要:Kotlin中可以通过object关键字实现单例模式,companion object则提供类似Java静态方法的功能。文章展示了两种实现方式:一种是使用lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED)的线程安全懒加载单例,另一种是通过object直接声明单例。前者在首次访问时初始化且线程安全,后者则自动保证单例特性。两种方式都避免了Java中繁琐的单例实现代码,体现了Kotlin在简化设计模式方面的优势。原创 2025-08-02 23:31:33 · 722 阅读 · 0 评论 -
Android Coil 3 data加载图的Bitmap或ByteArray数据类型,Kotlin
摘要:三篇技术文章主要探讨了Android开发中Coil3库的图像处理功能。第一篇展示了如何使用Coil3加载Bitmap和ByteArray数据到ImageView中;第二篇介绍了Bitmap与byte[]数组之间的转换方法;第三篇讨论了用Coil3批量拼接Bitmap生成宽图的实现,同时指出磁盘缓存未生效的问题。这些文章提供了Kotlin代码示例,涉及图像加载、转换和拼接等实用技术。原创 2025-07-10 23:06:50 · 983 阅读 · 0 评论 -
Kotlin数值计算Long型乘Float浮点型
本文摘要:Kotlin中进行数值运算时需要注意精度问题。当Long型与Float型相乘时(如1GB*1.25f),结果需通过toLong()转换但可能出现精度损失。文章还讨论了浮点数与整数的乘除运算精度问题,以及Java中NumberFormat处理百分比转换的方法。此外,介绍了Kotlin使用DecimalFormat截取Float小数点后数值的技巧,这些内容对金融等需要高精度计算的场景尤为重要。原创 2025-07-07 23:20:13 · 630 阅读 · 0 评论 -
Android Coli 3 ImageView load two suit Bitmap thumb and formal,Kotlin(七)
本文在之前的基础上,进一步优化了Android应用中Coil 3.2.0版本加载缩略图和正式图的实现。主要改进点在于,当正式图加载完成后,主动删除缓存中的缩略图,以节省内存资源。文章提供了相关的Kotlin代码示例,并指出尽管配置了磁盘缓存路径,但实际运行时缓存文件为空,表明磁盘缓存未生效。作者建议将缩略图和正图的内存缓存合并为单一缓存系统,以提升性能。此外,文章还列出了所需的权限声明和Coil库的依赖项,包括对GIF、视频和SVG格式的支持。更多细节可参考CSDN博客链接。原创 2025-05-15 23:10:18 · 670 阅读 · 0 评论 -
Android Coli 3 ImageView load two suit Bitmap thumb and formal,Kotlin(六)
本文介绍了在Android应用中使用Coil 3.2.0版本加载缩略图和正式图的实现方法,并提供了相关的Kotlin代码示例。文章提到,尽管配置了磁盘缓存路径,但实际运行时缓存文件为空,表明磁盘缓存未生效。此外,作者建议将缩略图和正图的内存缓存合并为单一缓存系统,以优化性能。文章还列出了所需的权限声明和Coil库的依赖项,包括对GIF、视频和SVG格式的支持。更多细节可参考CSDN博客链接。原创 2025-05-14 23:32:48 · 522 阅读 · 0 评论 -
Kotlin高阶函数多态场景条件判断与子逻辑
Kotlin高阶函数允许将函数作为参数传递,实现多态场景下的条件判断与子逻辑切换。在示例代码中,somefun是一个高阶函数,根据条件分别指向multi和add函数,分别实现乘法与加法操作。通过invoke方法调用函数,动态执行不同逻辑。这种设计在Android开发中尤为有用,例如将耗时操作从主线程切换到非主线程执行,处理完成后将结果返回主线程。Kotlin的高阶函数特性简化了复杂逻辑的实现,提升了代码的灵活性与可维护性。原创 2025-05-10 23:12:27 · 1171 阅读 · 0 评论 -
Android RecyclerView自带的OnFlingListener,Kotlin
文章浏览阅读338次。Android不用OnScrollListener采用GestureDetector结合OnTouchListener实现ListView下拉/上拉刷新通常Android的ListView的下拉/上拉刷新实现,使用OnScrollListener比较简单,比如如果要实现下拉见顶刷新,思路是在OnScrollListener判断当前ListView的滚动状态,如果滚动停止,则将此时Lis。文章浏览阅读428次。原创 2025-05-08 23:13:52 · 828 阅读 · 0 评论 -
Android RecyclerView横竖屏OnGlobalLayoutListener/OnPreDrawListener/onDraw/onMeasure/onLayout值变化,Kotlin
文章浏览阅读2.9k次。Android可收缩/扩展的TextView【1】在一些应用中,比如腾讯的应用市场APP应用宝,关于某款应用的介绍文字,如果介绍文字过长,那么不是全部展现出来,而是显示三四行的开始部分(摘要),预知全部的内容,用户点击展开按钮即可查阅全部内容。这样的设计有一定的优越性,毕竟用户的时间有限,注意力和关注力也有限,在使用APP时候,用户需要在最短时间内尽可能快速浏览和查阅到更主要内容,_android 可扩展文本框。原创 2025-05-06 23:10:53 · 1050 阅读 · 0 评论 -
Android启动应用时屏蔽RecyclerView滑动,延时后再允许滑动,Kotlin
文章浏览阅读338次。Android不用OnScrollListener采用GestureDetector结合OnTouchListener实现ListView下拉/上拉刷新通常Android的ListView的下拉/上拉刷新实现,使用OnScrollListener比较简单,比如如果要实现下拉见顶刷新,思路是在OnScrollListener判断当前ListView的滚动状态,如果滚动停止,则将此时Lis。文章浏览阅读428次。原创 2025-04-29 23:16:57 · 1153 阅读 · 0 评论 -
Kotlin await等待多个异步任务都完成后才进行下一步操作
这在业务开发中比较有用,试想一种场景,一个任务c的执行,必须依赖(等待)另外两个并行子任务a,b的结果,但这两个并行任务a、b何时结束何时返回结果并不确定。把a、b包装成suspend任务,通过关键字await(),等待两个异步任务a,b都完成后才进行下一步c。文章浏览阅读1.9k次。本文详细介绍Java并发中CountDownLatch的使用方法,演示如何利用它等待一组线程完成后再执行后续操作,适用于需要同步多个线程场景。代码运行后,必须等待a,b两个异步任务都返回结果后才能进行下一步操作。原创 2025-04-28 23:26:21 · 1366 阅读 · 0 评论 -
Android Coli 3 ImageView load two suit Bitmap thumb and formal,Kotlin(五)
遗留问题,配置的disk cache似乎没有work,指定的磁盘缓存文件路径生成是生成了,但是app跑起来运行后(图正常显示),里面是空的。遗留问题,配置的disk cache似乎没有work,指定的磁盘缓存文件路径生成是生成了,但是app跑起来运行后(图正常显示),里面是空的。遗留问题,配置的disk cache似乎没有work,指定的磁盘缓存文件路径生成是生成了,但是app跑起来运行后(图正常显示),里面是空的。2、现在分别使用缩略图内存缓存和正图内存缓存,感觉应该可以合并,只使用一套内存缓存。原创 2025-04-27 23:18:44 · 997 阅读 · 0 评论 -
Kotlin协程Semaphore withPermit约束并发任务数量
本文介绍了如何使用Kotlin的协程和Semaphore进行并发控制,确保在并发环境中A、B、C三个任务按照顺序运行,即使引入Java版Semaphore也会有不同表现。简单的说,Semaphore的permits约束了同时并发的协程任务数量。当并发任务数量超过permits后,多出来的任务就要等待permits数量内的任务完成后、空出余量才能投入运行。c end 耗时=1007 @1744098014457。b end 耗时=1007 @1744098014457。1、当 permits = 1。原创 2025-04-18 23:06:14 · 1198 阅读 · 0 评论 -
Kotlin整数相除精度损失roundToInt
Java小数点数字和百分号数字之间的转换小数点数字和百分号(百分比)数字之间的转换在证券金融业很常见,需要经常进行两者之间相互转换。文章讨论了Kotlin中浮点数(如1.7f)与整数(如Int)进行乘法、除法时可能出现的精度损失,并给出了示例。Kotlin toInt() +0.5 toInt() Math.round()_kotlin math.round-CSDN博客。Kotlin浮点数Float整数Int乘*除/精度损失_kotlin float乘法 精度丢失-CSDN博客。原创 2025-04-17 23:03:55 · 962 阅读 · 0 评论 -
Android ViewStub显示VISIBLE与消失GONE,Kotlin(2)
CPU返回后,会直接将GraphicBuffer提交给SurfaceFlinger,告诉SurfaceFlinger进行合成,但是这个时候GPU可能并未完成之前的图像渲染,这时候就牵扯到一个同步,Android中,用的是Fence机制,SurfaceFlinger合成前会查询Fence,如果GPU渲染没有结束,则等待GPU渲染结束,GPU结束后,会通知SurfaceFlinger进行合成,SF合成后,提交显示,最终完成图像的渲染显示。原创 2025-04-16 23:14:14 · 432 阅读 · 0 评论 -
Android ExifInterface rotationDegrees图旋转角度,Kotlin
《Android大图片之变换缩略图,以及对原始大图片按照指定宽、高裁剪成缩略图》在Android的ImageView加载图像资源过程中,出于性能和内存开销的需要,有时候需要把一个原始的超大图片按照一定比例等比例缩放成较小的缩略图,或者需要把原始的超大图片,裁剪成指定宽高值的较小图片,针对这种开发需求,可以使用Android SDK自身提供的工具类:ThumbnailUtils完成。Android旋转动画rotate动画,xml配置set实现_android xml 旋转动画-CSDN博客。原创 2025-04-15 23:17:10 · 973 阅读 · 0 评论 -
Android Coil 3 Fetcher大批量Bitmap拼接成1张扁平宽图,Kotlin(2)
遗留问题,配置的disk cache似乎没有work,指定的磁盘缓存文件路径生成是生成了,但是app跑起来运行后(图正常显示),里面是空的。Android拼接合并图片生成长图代码实现合并两张图片,以第一张图片的宽度为标准,如果被合并的第二张图片宽度和第一张不同,那么就以第一张图片的宽度为准线,对第二张图片进行缩放。Android拼接合并图片生成长图代码实现合并两张图片,以第一张图片的宽度为标准,如果被合并的第二张图片宽度和第一张不同,那么就以第一张图片的宽度为准线,对第二张图片进行缩放。原创 2025-04-13 23:20:28 · 374 阅读 · 0 评论 -
Android ViewStub显示VISIBLE与消失GONE,Kotlin
CPU返回后,会直接将GraphicBuffer提交给SurfaceFlinger,告诉SurfaceFlinger进行合成,但是这个时候GPU可能并未完成之前的图像渲染,这时候就牵扯到一个同步,Android中,用的是Fence机制,SurfaceFlinger合成前会查询Fence,如果GPU渲染没有结束,则等待GPU渲染结束,GPU结束后,会通知SurfaceFlinger进行合成,SF合成后,提交显示,最终完成图像的渲染显示。原创 2025-04-10 23:08:44 · 880 阅读 · 0 评论 -
Android Coil 3 Fetcher大批量Bitmap拼接成1张扁平宽图,Kotlin
遗留问题,配置的disk cache似乎没有work,指定的磁盘缓存文件路径生成是生成了,但是app跑起来运行后(图正常显示),里面是空的。Android拼接合并图片生成长图代码实现合并两张图片,以第一张图片的宽度为标准,如果被合并的第二张图片宽度和第一张不同,那么就以第一张图片的宽度为准线,对第二张图片进行缩放。Android拼接合并图片生成长图代码实现合并两张图片,以第一张图片的宽度为标准,如果被合并的第二张图片宽度和第一张不同,那么就以第一张图片的宽度为准线,对第二张图片进行缩放。原创 2025-04-09 23:13:41 · 1153 阅读 · 0 评论
分享