- 博客(3147)
- 资源 (6)
- 收藏
- 关注
原创 java int 颜色值转换为string 不带透明度
本文介绍了一个Java方法,将不含透明度的整数颜色值转换为#RRGGBB格式字符串。通过位运算提取RGB分量(红色右移16位,绿色右移8位,蓝色直接获取),再用String.format格式化为两位十六进制。代码示例演示了红绿蓝三种颜色的转换(如0xFF0000转为"#FF0000")。注意该方法不处理透明度,若需处理ARGB格式需额外提取alpha分量。核心原理是利用位运算分离颜色通道并格式化为标准十六进制颜色代码。
2025-06-03 19:57:54
92
原创 使用glide 同步获取图片
Glide提供了两种同步获取图片的方式:1)使用asBitmap()方法在主线程同步获取Bitmap对象,但可能造成主线程阻塞;2)使用downloadOnly()方法在后台线程同步下载图片到磁盘。两种方法都需要注意线程安全问题,前者建议在后台线程执行,后者更适合仅需下载的场景。示例代码展示了如何通过override()设置图片尺寸,以及通过submit().get()同步获取结果。开发者应根据实际需求选择合适的加载策略,并注意Glide的缓存机制优化。
2025-06-03 19:44:24
24
转载 Java 利用正则表达式完美解析全国省市区地址展开
本文介绍了使用Java正则表达式解析全国省市区地址的方法。首先定义了一个匹配中文地址格式的正则表达式,包含"省"、"市"、"区"、"街道"等可选层级。然后通过Java的Pattern和Matcher类进行匹配,提取各层级信息并去除后缀。该方法灵活处理不同格式的地址,对缺失层级自动填充"未知"。通过调整正则表达式可以适应更精确或宽松的地址格式要求。
2025-06-02 19:07:21
11
转载 正则表达式中国行政区域地址解析
本文介绍了通过正则表达式解析中国地址信息的方法。作者首先编写了地址解析工具类,使用正则表达式匹配省、市、区县、镇等层级信息。但在处理直辖市时遇到问题,因为直辖市没有省级前缀。为此,作者采用枚举类ProviceEnum进行判断,对四大直辖市地址进行字符串拼接预处理,确保正则表达式能正确解析。该方法虽存在局限性,但有效解决了特定场景下的地址解析需求。
2025-06-02 18:47:59
9
转载 Dialog 支持 lifecycleScope 和 viewmodel 生命周期
文章介绍了如何为Dialog添加生命周期管理功能,使其支持lifecycleScope和ViewModel自动销毁。通过自定义BaseLifecycleDialog基类,实现LifecycleOwner和ViewModelStoreOwner接口,并在show/dismiss时更新生命周期状态。使用时只需继承该基类,即可像Activity/Fragment一样使用lifecycleScope和by viewModels(),同时自动管理资源释放。该方案适用于需要Dialog独立管理生命周期的特殊业务场景。
2025-05-30 19:16:53
16
转载 级联地址选择器级联地址选择器
JDAddressSelector是一款仿京东(V5.0.1)风格的Android级联地址选择组件。主要特性包括:1)通过JitPack快速集成;2)支持两种使用方式 - 直接获取视图或通过底部弹窗展示;3)提供灵活的数据源配置,可自定义省市区街道数据获取逻辑;4)支持多线程和RxJava异步加载数据。
2025-05-30 11:00:39
14
转载 AndroidPicker 使用指南文档
AndroidPicker是一个功能丰富的安卓选择器类库,提供多种选择器组件,包括日期/时间选择器、单项选择器、多级联动选择器、城市地址选择器、数字选择器、文件选择器等。虽然原作者已不再维护该项目,但仍欢迎开发者通过GitHub提交Pull Request共同维护。该库支持灵活配置和自定义样式,提供Java和XML两种使用方式,并支持与DialogFragment结合使用。开发者可根据需求选择不同模块进行集成,最新版本采用重构优化后的API,与旧版本不兼容,升级需谨慎。项目提供完整文档和Demo演示
2025-05-28 19:33:30
37
转载 使用 Palette API 选择颜色
Android Palette库是一个用于从图片中提取主色调的Jetpack组件,可帮助开发者创建视觉协调的应用界面。它支持同步/异步生成调色板,提供6种标准颜色配置文件(如Vibrant、Muted等),并能获取适合文本显示的颜色。通过Palette.Builder可自定义颜色数量、区域和过滤条件。典型应用场景包括根据专辑封面调整音乐播放界面颜色,或动态改变工具栏背景色。开发者需注意调色板生成应在非主线程执行,并为缺失的颜色配置提供默认值,确保界面稳定性。
2025-05-26 14:37:45
21
转载 Jetpack:利用Palette进行图片取色_android 提取 图片 颜色
通过上面我们看到,Palette的功能很强大,但是它使用起来非常简单,可以让我们很方便的提取图片中的颜色,并且适配合适的文字颜色。同时注意因为ColorUtils是public的,所以当我们需要文字自动适配颜色的情况时,也可以通过ColorUtils的几个函数自己实现计算动态颜色的方案。版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
2025-05-26 14:30:25
16
转载 使用 Glide 库加载图片并获取 Bitmap 对象
本文介绍了使用Glide库加载图片并获取Bitmap对象的方法。主要内容包括:1)添加Glide依赖的步骤;2)初始化Glide的方法;3)使用asBitmap()加载图片并获取Bitmap的具体实现,包括SimpleTarget和BitmapImageViewTarget两种方式。文章还提醒了需要添加网络权限等注意事项,适用于Glide 4.x版本。
2025-05-26 14:10:57
24
转载 java 把颜色值 转为 String
本文介绍了Android开发中颜色值的两种转换方法:1. 整型转字符串:使用String.format("#%06X", (0xFFFFFF & color))将颜色整型值转换为十六进制字符串,忽略alpha通道;2. 字符串转整型:通过Color.parseColor()方法将十六进制字符串转换为包含alpha通道的整型颜色值。文章还提供了获取RGB分量的方法,详细说明了颜色值的处理过程。
2025-05-24 17:45:45
26
转载 Flow 流展平 ( 连接模式 flatMapConcat | 合并模式 flatMapMerge | 最新展平模式 flatMapLatest )
本文介绍了Kotlin Flow流的三种展平操作模式:flatMapConcat(连接模式)按顺序连接两个流的所有元素;flatMapMerge(合并模式)并发合并两个流的元素;flatMapLatest(最新模式)只保留最新数据,会取消前一个流。通过代码示例展示了每种模式的特点和输出结果:连接模式保持顺序但耗时较长,合并模式并发执行速度更快,最新模式会跳过中间值仅保留最新数据。这些操作符用于处理需要流间交互的场景,但作者建议在常规场景优先考虑简单的map操作。
2025-05-24 14:13:14
18
转载 Flow核心概念与与操作符指南
Flow是Kotlin中用于处理异步数据流的工具,分为冷流(Cold Stream)和热流(Hot Stream)。冷流按需触发,每次收集都会重新执行流逻辑,适用于一次性任务或需要重复触发的场景。热流则主动发射数据,多个消费者共享同一流实例,适用于实时状态同步或全局事件通知。Flow采用生产者-消费者模型,支持异步非阻塞操作和响应式编程,通过操作符(如map、filter、transform等)实现复杂的数据处理逻辑。Flow的构建方式包括flow{}、flowOf()和asFlow(),分别适用于自定义流
2025-05-23 20:11:37
30
转载 协程 - 热流 Channel、SharedFlow、StateFlow
本文主要介绍了Kotlin协程中的通信模式,特别是组播(Channel)和广播(SharedFlow)的概念及其使用方式。组播通过Channel实现,支持发送和接收数据,具有并发安全、公平性等特点,适用于协程间的通信。广播通过SharedFlow实现,支持多个订阅者同时接收数据,适用于事件广播场景。文章还详细介绍了Channel和SharedFlow的创建、遍历、转换等操作,并对比了组播和广播的适用场景。最后,文章提到StateFlow作为SharedFlow的特殊配置,用于管理状态数据,类似于LiveDa
2025-05-23 18:42:13
22
转载 TextView的TextColor中使用selector的问题
在Android开发中,TextView的文本颜色可以根据不同的状态(如选中、点击、获取焦点)进行动态变化。通常,这可以通过代码实现,但Android提供了一种更简洁的方式——使用selector。首先,在res目录下创建color文件夹,并在其中定义一个selector XML文件。该文件中,通过<item>标签为不同状态设置颜色,例如state_selected、state_focused和state_pressed。最后,将selector文件应用到TextView的android:textColor
2025-05-23 10:04:08
30
转载 Kotlin中冷流(Clod Flow)和热流(Hot Flow)
冷流(ColdFlow)和热流(HotFlow)是数据流处理中的两种不同模式。冷流按需触发,只有在调用collect()时才开始生产数据,每个订阅者都会触发完整的数据流从头开始,适用于需要独立数据源的场景,如网络请求或数据库查询。热流则主动发射数据,不管是否有订阅者,多个订阅者共享同一份数据流,但只能收到订阅后的数据,适用于需要共享实时数据的场景,如IM消息或用户定位更新。冷流像点播电影,每个观众从头开始看;热流像直播,中途进入的观众只能从当前内容
2025-05-22 14:44:12
28
转载 Kotlin单例模式的几种写法
在Kotlin中实现单例模式非常简便,主要依赖于object关键字、伴生对象和by lazy委托。首先,使用object关键字可以直接定义一个单例类,Kotlin会自动确保其唯一性并在首次访问时初始化。其次,通过伴生对象(companion object)可以在已有类中实现单例,结合私有构造函数和静态方法getInstance()来管理实例。最后,by lazy委托提供了延迟初始化的能力,确保单例在首次访问时创建,并且是线程安全的。这三种方式分别适用于不同的场景,开发者可以根据需求选择最合适的实现方法。
2025-05-21 21:21:09
30
转载 让 Android View 不拦截事件
在Android开发中,若需让某个视图不拦截点击事件,确保事件能传递给下方的视图,可以通过自定义View并重写onTouchEvent和onInterceptTouchEvent方法实现。首先,创建一个继承自View的自定义类NonInterceptingView,并实现其构造函数。接着,重写onTouchEvent方法并返回false,使事件继续传递给子视图。同时,重写onInterceptTouchEvent方法并返回false,确保父容器
2025-05-20 17:03:49
33
转载 Glide设置加载图片为圆形
Glide是一个强大的图片加载库,支持对图片进行多种变换,如圆形裁剪。通过Glide的转换功能,可以轻松实现圆形图片的加载。示例代码展示了如何使用Glide加载网络图片并将其裁剪为圆形:首先初始化Glide加载器,然后指定图片URL,调用circleCrop()方法进行圆形裁剪,最后将处理后的图片显示在ImageView中。这种方法简单高效,适用于需要展示圆形图片的场景。
2025-05-20 16:57:12
50
转载 使用Glide 对网络图片做等比缩放调整
本文详细介绍了如何使用Glide库对网络图片进行等比缩放调整的步骤。首先,在项目的build.gradle文件中添加Glide的依赖。接着,在Activity或Fragment中通过Glide加载网络图片到ImageView。然后,使用centerCrop()方法设置图片的缩放类型为等比缩放,并可根据需求选择其他缩放类型。最后,通过into()方法将调整后的图片显示到ImageView中。本文通过四个步骤展示了整个流程,并提供了相应的代码示例,帮助开发者理解并实现这一功能。
2025-05-20 16:54:16
25
转载 xx.d.ts文件有什么用,为什么不引入都能生效
在前端开发中,使用TypeScript时,若第三方库缺乏类型声明,编译器会报错。通过在.d.ts文件中使用declare声明模块,可以解决这一问题。.d.ts文件作为TypeScript的“翻译器”,不执行代码,而是描述代码结构和类型,使编译器理解代码,从而支持类型检查、提示和自动补全功能。这些文件可以补充JavaScript代码或第三方库的类型,声明非代码资源模块,定义全局变量或类型,以及扩展已有模块的类型信息。TypeScript编译器在编译时会自动加载在tsconfig.json的include范围内
2025-05-20 09:56:15
36
转载 Glide设置图片部分圆角和缩放模式
本文介绍了一个用于加载并裁剪图片的Java方法loadCenterCrop,该方法结合了Glide库和自定义的CornerTransform类来实现图片的圆角处理。CornerTransform类继承自Glide的Transformation接口,用于对图片进行圆角处理,并允许用户指定哪些角需要圆角化。方法中首先创建了一个CornerTransform对象,并根据传入的参数设置需要圆角化的角。然后,使用Glide加载图片,并应用CenterCrop和CornerTransform转换,最终将处理后的图片显示
2025-05-19 21:16:49
29
转载 代码写 layerlist
LayerList是Android开发中一种强大的资源类型,允许在单一drawable资源内叠加多个图形,适用于创建复合背景或图标。使用步骤包括在XML中定义LayerList,通过<layer-list>标签嵌套<item>元素来指定各层图形及其属性,如颜色、形状和偏移量。此外,也可以在代码中动态创建LayerList,使用LayerDrawable类并设置各层的边界和大小。使用LayerList时需注意资源ID的正确性、性能优化(避免层数过多)以及API兼容性。通过合理使用LayerList,开发者可以
2025-05-19 21:04:02
22
转载 利用GradientDrawable实现切圆角,局部圆角和全部圆角
在Android开发中,使用GradientDrawable可以动态地为布局设置圆角,而无需依赖XML文件。通过Java代码,可以实例化GradientDrawable对象,并设置其形状、圆角半径和背景颜色等属性。例如,可以使用setCornerRadius()方法统一设置四个圆角,或使用setCornerRadii()方法为每个角单独设置不同的圆角半径。这种方法支持动态配置,且可以避免圆角锯齿问题。然而,如果子视图的长宽都设置为match_parent并设置了背景颜色,圆角效果可能会消失。总体而言,Gra
2025-05-19 20:50:59
32
转载 代码写shape
在Android开发中,Shape用于定义View的外观,如按钮的圆角、背景颜色等。Shape是一种XML定义的可绘制对象,支持矩形、圆角矩形、椭圆、线性渐变等形状。通过<shape>标签及其子标签,可以设置形状、圆角、填充颜色、渐变色、边框和大小等属性。在代码中,可以使用GradientDrawable类创建和设置Shape。例如,创建一个圆角矩形背景的代码示例如下:
2025-05-19 20:29:50
30
转载 BaseQuickAdapter使用(RecyclerView万能适配器)
本文介绍了如何在Android开发中使用BaseQuickAdapter来简化RecyclerView的适配器配置。BaseQuickAdapter相比传统的RecyclerView.Adapter,能显著减少代码量,提高开发效率。文章详细讲解了BaseQuickAdapter的导入依赖、基础使用、多布局和分组布局的实现方法,包括BaseMultiItemQuickAdapter、BaseDelegateMultiAdapter、BaseProviderMultiAdapter和BaseSectionQui
2025-05-19 20:25:29
73
转载 获取PopupWindow宽高为0
在Android开发中,当需要在某个元素(如sampleButton)上方展示PopupWindow时,通常使用getTop()和getHeight()来计算Y方向的位置。然而,当PopupWindow的视图不可见时,getHeight()返回的值为0,导致无法正确计算位置。解决方法是使用getMeasuredHeight()来获取视图的真实高度。通过View.MeasureSpec对PopupWindow的内容视图进行测量,可以获取其宽度和高度,从而正确计算展示位置。这种方法有效解决了在视图不可见时获取高
2025-05-16 21:20:48
22
转载 PopupWindow显示位置设置
在Android开发中,使用PopupWindow时,默认情况下其左下角会与触发按钮对齐。然而,在不同尺寸的设备上,这种对齐方式可能导致PopupWindow显示位置不准确。为了解决这一问题,开发者可以使用showAsDropDown方法,并通过设置横向位移偏移量来实现PopupWindow的居中显示。此外,update方法也可用于调整PopupWindow的位置和大小,以适应不同屏幕尺寸的需求。通过这些方法,可以确保PopupWindow在各种设备上都能正确显示,提升用户体验。
2025-05-16 19:56:31
41
转载 Android底部导航栏(可滑动)----TabLayout+viewPager,定制tablayout item
TabLayout是Android中用于实现选项卡布局的组件,常用于屏幕空间有限时对内容进行分组,如新闻分类或底部导航栏。它支持两种模式:fixed(固定)和scrollable(可滚动),可通过setTabMode方法设置。TabLayout允许自定义选项卡的视图,并通过setCustomView方法实现。与ViewPager结合使用时,可通过setUpWithViewPager方法实现联动。TabLayout还提供了onTabSelectedListener事件,用于监听选项卡的选中、取消选中和重新选中
2025-05-16 16:48:40
38
转载 Android 原生 TabLayout 使用全解析,看这篇就够了
本文全面解析了Android中TabLayout的使用方法,旨在整合分散的知识点,提供一站式解决方案。文章首先介绍了TabLayout的基本概念和官方组件的优势,如开源性和经过大型应用验证的稳定性。随后,详细讲解了TabLayout的基础实现、添加图标、字体样式调整、去除长按提示、下划线样式定制、分割线添加、样式设计、小红点功能、隐藏Tab的获取、Tab宽度自适应、自定义ItemView、Lottie动画集成以及与ViewPager的关联等高级功能。此外,文章还提供了常用API的整理,帮助开发者更高效地使用
2025-05-15 21:28:39
120
转载 Retrofit+Hilt后端请求小项目3--Retrofit代码完善
本文介绍了如何使用Kotlin和Retrofit构建一个简单的API调用应用。首先,定义了ApiConstants类来存储API的基础URL和端点。接着,通过JSON转Kotlin插件生成实体类Character和Wand,并使用Moshi进行数据解析。然后,定义了CharacterApi接口来设置Retrofit请求,并通过CharacterRepo类实现数据获取。使用Hilt框架的CharacterApiModule模块来管理依赖注入,确保Retrofit实例的单例性。最后,通过HomeViewMode
2025-05-13 18:16:00
33
转载 Jetpack组件之Hilt使用
最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发中的问题,对代码的逻辑和UI界面实现深层解耦,打造数据驱动型UI界面。Android Architecture组件是Android Jetpack组件总览Android Jetpack 组件之 Lifecycle使用Android Jetpack 组件之 Lifecycle源码Android Jetpack组件之ViewModel使用。
2025-05-13 17:50:43
190
转载 如何在compose中正确的collect数据,防止内存泄露
讲解了如何将冷流(Cold Flow)转换为热流(StateFlow)的过程,并详细介绍了SharingStarted.Lazily和SharingStarted.Eagerly的区别。SharingStarted.Lazily在订阅后开始发送数据,而SharingStarted.Eagerly则立即开始发送,但两者都不会自动停止。
2025-05-12 17:25:10
31
转载 Native层崩溃的监听工具BreakPad
做Android开发的同学,基本上都遇到过程序崩溃,大部分的崩溃问题都存在于Java层。在开发过程中,如果遇到崩溃,我们可以在logcat中找到相关的信息进行修改;如果是线上出现的问题,我们可以使用Bugly,友盟等三方工具进行错误上报,或者自己做监控,生成错误文件进行上报分析,这时候需要用到UncaughtExceptionHandler接口如果是Native层发生的崩溃怎么办?基本这个问题我们都会略过,第一:看不懂,第二:三方的so库发生了问题我们也解决不了。
2025-03-19 18:44:31
151
转载 音视频编码:x264源码解析
本文对x264源码进行了解析,并深入探讨了其核心模块、编码流程以及性能优化等方面,相信读者通过本文的介绍可以更好地理解x264的内部工作原理,从而在实际应用中发挥其最大的价值。是一款开源的H.264/MPEG-4 AVC视频编码器,它实现了国际通用的视频编码标准H.264,因其出色的编码效率和广泛的适用性而在视频领域得到了广泛应用。编码控制模块是x264的核心部分,负责实现H.264标准中的各种编码工作,包括帧类型决策、运动估计、熵编码等。音视频编码:x264源码解析。三、x264编码流程解析。
2025-03-06 03:34:23
97
转载 聊聊Git中的引用
总体来说,引用机制让Git可以通过简单但唯一的ID来识别和追踪对象,管理项目版本以及支持分布式协作开发模式。Git中的引用主要包括HEAD引用,指向当前检出的分支或提交对象。HEAD管理 Git 当前操作所在的分支或提交状态。分支引用,存储在.git/refs/heads目录下,每个分支对应一个引用文件。指向某个提交对象,跟踪分支历史记录和进度。本地分支和远程分支分别保存在不同目录下。标签引用,存储在.git/refs/tags目录下,每个标签对应一个文件或对象。用于标记特定版本,不可变更。
2025-03-06 03:32:38
106
转载 Android APP 音视频(02)MediaProjection录屏与MediaCodec编码
这里主要是使用MediaProjection获取屏幕数据,将数据通过mediacodec编码输出到存储卡上。这里主要介绍 MediaProjection的基本原理和流程、 MediaCodec编码的简单说明,便于对代码有所理解。
2025-03-05 18:34:07
154
ormlite-4.48
2014-11-29
jdk-6u45-linux-x64.part2
2013-07-31
jdk-6u45-linux-x64.part1
2013-07-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人