- 博客(409)
- 资源 (77)
- 收藏
- 关注

原创 对listView的理解
最简单的listView用的是ArrayAdapter ,把上下文对象 this item布局,数据源放入adapter中,然后listView布局setAdapter(adapter)就可以展现一个列表了import android.support.v7.app.ActionBarActivity;import android.app.Activity;import android.os.B
2016-04-20 22:59:11
970
原创 kotlin中主构造函数是什么
主构造函数(Primary Constructor)是 Kotlin 类声明的一部分,用于在 创建对象时初始化类的属性。它不像 Java 那样是一个函数体,而是紧跟在类名后面。上面这段代码中:等价于 Java 代码:如何初始化主构造函数中的类属性?在主构造函数中,类的属性可以通过以下几种方式初始化:这样 和 直接成为 类的属性,无需额外赋值。如果初始化逻辑较复杂,可以在 代码块中进行操作: 代码块会在 对象创建时 立即执行,并且按代码顺序先于次构造函数执行。Kotlin 允许给主构造函数
2025-04-04 21:45:34
363
原创 kotlin中const 和val的区别
如果你需要声明常量并希望在编译时就确定其值,可以使用const。如果你只是需要声明不可变的变量,可以使用val。val: 相当于java中的final ,运行时确定变量的值,值固定const val 相当于java中 staic final,它的值在整个应用程序的生命周期内是固定的。
2025-04-04 21:04:53
96
原创 Android Hilt 教程
基于 Dagger 开发,能够大大简化依赖注入的使用。在 build.gradle (Project)Hilt 是 Android 官方推荐的。让 Hilt 进行全局依赖注入的初始化。:比 Dagger 需要更少的模板代码。在 app/build.gradle。(例如:构造函数需要参数),需要在。:推荐用于 Android 开发。中使用 Hilt 进行依赖注入。的实例,并在需要的地方注入。:通过注解即可完成依赖注入。按照本教程,已经学会如何在。:减少手动管理实例的工作。Hilt 会自动创建。
2025-04-04 12:51:32
397
原创 LiveData 和 MutableLiveData 的区别
但它们的工作原理基本相同。下面我们深入对比它们的行为、特性,以及它们在。主要用作 ViewModel。
2025-04-03 11:24:42
835
原创 kotlin函数类型
函数类型就是 (Int, Int) -> Int函数类型其实就是将函数的 “参数类型” 和 “返回值类型” 抽象出来(Int, Int) -> Int 表示接收两个 Int 参数并返回 Int 的函数类型;(String) -> Unit 表示接收 String 参数且无返回值的函数类型空 。基本形式:特殊情况:函数类型的变量:二 Lambda 表达式1 语法结构{ 参数列表 -> 函数体 }示例:{ x: Int, y: Int -> x + y }{a1:Int,b1:Int->a1+b
2025-04-03 10:38:02
317
原创 AES 加密介绍
(如 CAN 总线传输的空调控制指令)。如果这些数据被恶意软件截取或篡改,可能会影响用户体验,甚至存在安全隐患。因此,我们可以使用 AES 加密存储。AES(Advanced Encryption Standard,高级加密标准)是一种对称加密算法,具有。,可以使用 AES 加密敏感数据,确保通信安全。(如用户的空调温度设定、座椅加热偏好等),以及。已经自带 AES 支持,无需额外依赖。在 Android 开发中,可以使用。在车载座舱空调软件中,可能涉及。在车载空调软件中,我们可以将。
2025-04-02 09:46:30
182
原创 android 设置状态栏背景
要让Activity使用和来使状态栏透明,让Activity的背景可以扩展到状态栏区域。然后在Activity的根布局(通常是或)的background设置颜色,使其填充整个界面,包括状态栏。可以在和定义不同模式下的颜色。</</然后在Activity或者直接使用theme属性:</这样,Activity的背景和状态栏颜色在深色模式和浅色模式下都会自动切换。
2025-04-01 18:59:23
887
原创 android databinding使用教程
减少的使用,提高代码可读性。支持数据绑定,可以直接在 XML 中绑定对象属性。支持事件绑定,可在 XML 绑定点击事件等逻辑。支持双向绑定,简化表单输入处理。支持,可以扩展自定义属性。你可以试着把 DataBinding 和 ViewBinding 结合使用,在你的车载空调控制界面中优化 UI 交互逻辑!如果有具体的问题,比如如何在 Fragment 里使用,或者如何结合LiveData,可以继续问我。
2025-04-01 11:30:28
971
原创 android Fragment使用
在中,导入id)并给控件赋值的逻辑通常应该写在 onViewCreated()方法中,而不是。ViewidActivityonCreate()ViewViewidViewFragmentActivityidLiveDataActivityonAttach()如果你的Fragment只是绑定id并设置 UI,。
2025-04-01 10:30:48
405
原创 android 加载本地.svg资源的几种引入方式
资源,但需要先转换为 Android 可识别的格式。在 Android 中,可以在 XML 布局文件中引入本地。如果你的项目使用 Jetpack Compose,可以使用。如果 SVG 是静态资源,建议转换为。Android 不支持直接加载。,然后在 XML 中使用。
2025-04-01 10:06:43
357
原创 在 ImageButton 或 ImageView 中,background 和 src 的作用
【代码】在 ImageButton 或 ImageView 中,background 和 src 的作用。
2025-04-01 10:05:28
157
原创 android 图形开发的技能学习路线
掌握此类代码需要系统性跨越多个技术领域,建议通过「数学基础 → OpenGL ES → 引擎框架 → 综合项目」的路径逐步突破。持续投入1-2年高强度学习与实践,可独立开发复杂图形应用。
2025-03-25 14:41:46
859
原创 OpenGL ES 2.0与OpenGL ES 3.1的区别
• 若车载平台计划升级至 Vulkan(下一代图形 API),可优先基于 OpenGL ES 3.1 开发,因其特性更接近 Vulkan 的设计理念。(如 3D 可视化气流、金属质感旋钮):使用 OpenGL ES 3.1 实现高级特效。:通过计算着色器实现流体模拟(如气流可视化)、动态光照(如金属材质反光)。• 实例化渲染(Instancing)高效绘制重复元素(如温度刻度)。• 多渲染目标(MRT)实现动态模糊(如快速调节时的过渡效果)。:多渲染目标(MRT)可加速后处理(如模糊、色调映射)。
2025-03-25 09:23:39
633
原创 kotlin init执行顺序
根据Kotlin的文档,当创建一个类的实例时,初始化顺序是这样的:首先,主构造函数中的参数被处理;接着,类体中声明的属性按照它们在代码中的顺序进行初始化;然后,init块按照它们在类体中的出现顺序执行。如果有多个init块,它们会按照顺序依次执行。最后,次构造函数中的代码执行。
2025-03-24 15:40:18
386
原创 openGl片段着色器的含义
片段着色器(Fragment Shader)是OpenGL着色器管线中的关键组件,主要用于计算屏幕空间中每个片段(对应像素)的最终颜色。它是图形渲染流程的最后阶段之一,决定了像素的视觉效果。以用户提供的或中的片段着色器为例:功能:将传入的统一变量直接赋值给,使整个图形的颜色统一为指定的颜色(如中的青色或中的浅绿色)。关键点::指定浮点数精度为中等精度。:从应用程序传入的颜色值(如数组)。:必须输出的最终颜色变量。4. 代码中的调用流程在方法中:通过将颜色值传递给片段着色器的变量,最
2025-03-24 14:20:29
348
原创 AGSL和GLSL的区别
回顾一下AGSL和GLSL的基本概念。AGSL是Android Graphics Shader Language,是Android 12引入的,基于GLSL但专门为Android设计,与RenderEffect和RuntimeShader集成。GLSL是OpenGL Shading Language,用于OpenGL/OpenGL ES的着色器编程,跨平台使用。AGSL(Android Graphics Shader Language) 和 GLSL(OpenGL Shading Language) 都是用
2025-03-24 11:16:28
747
原创 android Hilt注解
Module@InstallIn(SingletonComponent::class) // 作用域为整个应用@Provides@Singleton // 单例作用@Module标记为 Hilt 模块,提供无法@Inject的依赖。@Provides提供具体对象。@Singleton确保全局唯一实例。// 依赖的 Repository。
2025-03-23 21:11:49
473
原创 AI-编程指令语言
classPaths = [“ThemeUtil.kt”, “SettingsViewModel.kt”] // 相关类。libs = [“Material3”, “DataBinding”] // 必须使用的库。avoid = [“AsyncTask”, “弃用API”] // 禁止使用的技术。layout = “activity_settings.xml” // 关联的布局文件。// 1. 场景描述:明确功能归属的模块/场景。// 3. 上下文注入:关联的代码文件/类。
2025-03-22 11:21:00
303
原创 companion object和object 从kotlin转java分析
companion object 中companion类中的方法是普通的方法在外部类中生成静态变量,静态companion 对象object MyClass2 中类中方法是普通方法在MyClass2中生成静态变量,静态MyClass2对象,
2025-03-20 15:04:05
232
原创 Cursor AI是什么
根据知识库中的信息,,而非 IntelliJ IDEA 或其他 IDE 的插件。根据知识库[1]和[2]的明确描述,Cursor 是一个,而非插件。它内置了 AI 功能(如代码生成、调试、重构等),并支持,但本身是一个独立的软件,需要单独安装(如从官网下载)。Cursor 支持系统(知识库[1]),但存在。.java.kt。
2025-03-19 17:29:45
598
原创 关闭代理访问github原因分析
完成以上操作后,您的网络访问行为应恢复正常逻辑(国内直连/国外代理)。若问题反复出现,建议使用网络监控工具(如。:代理服务可能强制将GitHub域名解析到境外IP(如通过DoH/DoT):对比两次结果是否一致(若一致说明无DNS劫持)◦ 本地网络支持直接访问(如企业网络解除封锁)运行未知代理软件,防止系统设置被污染。:未经过代理服务器IP(如天路云节点)(仅代理被墙网站),避免全局代理影响。部分是否勾选(若勾选则记录地址)◦ 天路云残留DNS配置被清除。3. 删除安装目录(通常位于。(系统代理设置被重置)
2025-03-19 11:18:32
228
原创 适合安卓开发工程师在 Android Studio 上使用的 AI 产品
华为 CodeGenie:是华为推出的基于生成式 AI 的代码编程助手,在 DevEco Studio 中安装插件后可使用,能提供智能知识问答、代码生成补全和万能卡片内容生成等功能,对鸿蒙开发有很好的支持,安卓开发也可借鉴相关功能。Fitten Code:由非十大模型驱动,免费且支持 80 多种语言,包括 Java 等安卓开发常用语言,可在 Android Studio 等多种编辑器中使用,具有自动生成代码、智能查找 Bug、生成单元测试等功能。如果还有其他的,好的工具欢迎大家留言补充。
2025-03-19 08:55:04
341
原创 kotlin 线程池封装
IO密集型任务配置(适合网络请求)支持任务调度、暂停、取消等操作。// region 配置参数。// region 核心组件。// region 预设模板。// region 任务管理。// region 内部实现。// region 协程扩展。
2025-03-18 16:47:43
873
原创 kotlin 中的构造函数的作用
辅助构造函数提供了一种简便的方式来初始化对象,特别是当某些字段不需要显式设置时(如自动生成的id调用顺序1. 首先调用辅助构造函数。2. 辅助构造函数通过this(...)委托给主构造函数。3. 主构造函数完成实际的初始化工作。通过这种方式,你可以灵活地初始化User对象,并确保所有必要的字段都被正确设置。
2025-03-18 11:10:03
569
原创 表达式和语句的区别
•Java表达式主要用于计算值,但控制结构是语句,需通过返回值或副作用操作结果。•Kotlin表达式是语言核心,控制结构(如ifwhen)和函数设计更灵活,可直接返回值,支持链式调用和简洁语法。核心思想•表达式是值语句是动作。• Kotlin 的表达式特性使其代码更简洁、更函数式,而 Java 需要更多样板代码。
2025-03-16 22:21:13
814
原创 java常量池
静态数据,存储在 .class 文件中,包含符号引用和字面量。例如:java/lang/String 的符号引用、字符串 “Hello” 的字面量。
2025-03-16 20:05:47
915
原创 java静态变量,静态方法存储在内存中哪个位置
内存分区示意图| 新生代 | | 老生代 | | 元空间 || - Eden 区 | | - 长期存活的对象 | | - 类的元数据 || - Survivor 区 | | - 大对象直接分配 | | - 方法字节码 |关键区别与联系区域存储内容GC 触发条件回收算法新生代新创建的对象Eden 区满复制算法(Copying)老生代长期存活的对象老生代空间不足标记-整理(Mark-Compact)元空间类的元数据类加载器卸载或元空间不足无显式 GC,由 JVM 管理为什么需要分代。
2025-03-16 19:13:07
955
原创 android okhttp几种日志拦截级别区别
自定义日志格式:可通过继承 HttpLoggingInterceptor 并重写 log 方法实现自定义日志格式。敏感信息:避免在生产环境记录 BODY 或 HEADERS,防止泄露 Token、Cookie 等敏感数据。性能影响:BODY 级别会记录大量数据,可能影响应用性能,仅在必要时启用。
2025-03-09 19:18:27
372
原创 android flow中collect和collectLatest的区别
这个操作符的作用是,每当Flow发出新值时,如果之前的收集操作还在进行,就会取消之前的处理,立即开始处理最新的值。例如,在分页数据的提交中,当新的分页数据到来时,之前的提交可能需要被取消,以立即显示最新数据,避免界面显示过时的内容。而加载状态的处理可能需要处理每一个状态变化,即使中间有多次状态更新,也应该逐一处理,以确保UI状态正确反映所有加载阶段的变化,比如连续多次加载的进度条显示。,当状态变化频繁时,可能会跳过中间状态,直接处理最新的,这可能导致某些状态没有被正确显示。比如,如果加载状态的处理使用。
2025-03-09 15:18:35
657
原创 android paging LoadStates状态说明
LoadStates 是 Paging3 库的核心状态管理类,主要解决分页加载过程中不同加载类型状态的独立跟踪与聚合问题。通过将 REFRESH/PREPEND/APPEND 三种加载类型的状态解耦,开发者可以针对性地处理不同场景下的加载逻辑(如首次加载、滚动加载更多等)。这段代码是 Android Paging 库中用于描述分页加载状态的 LoadStates 类,其作用是封装三种不同分页加载类型(刷新、向前追加、向后追加)的当前状态,为开发者提供统一的状态监控入口。场景 1:监听全局加载状态。
2025-03-09 14:46:04
539
原创 Android paging prepend前置加载
在交互设计中,“prepend”(前置加载)与常见的"append"(追加加载)存在本质区别,主要服务于不同的场景需求。
2025-03-09 14:40:56
230
原创 android paging 计算刷新键
示例:如果每页加载 20 条数据(pageSize=20),则从 article.id - 10 开始加载,保证当前项前后各加载 10 条。通过这种设计,Paging 3 能够在复杂的数据更新场景中保持用户界面的平滑过渡,是分页库实现数据一致性的关键机制。anchorPosition:表示用户当前屏幕可见项的近似位置(如 RecyclerView 的滚动位置)。假设后端分页机制:通常基于 id 的递增/递减分页(如 SQL 的 WHERE id > :key)。根据索引查找最近的实际数据对象。
2025-03-09 13:20:47
292
原创 Android paging中 initialLoadSize,默认会是pageSize的三倍
出现初始加载150条(而非预期的50条)的根本原因在于Paging 3库的initialLoadSize默认值机制,与PagingConfig.pageSize 的联动行为有关。在PagingConfig中,如果没有显式设置initialLoadSize,默认会是pageSize的三倍。initialLoadSize:首次加载时的数据量(默认值为pageSize * 3)预加载优化:通过首次加载3页数据,确保用户快速滑动时不会频繁触发分页请求。pageSize:定义常规分页请求中每页应加载的项目数。
2025-03-09 13:05:41
295
原创 Android paging初识
接下来,我应该考虑用户可能的背景。比如,对于简单的分页需求,可能手动实现更快捷,但对于复杂场景,如数据库和网络结合、预加载等,Paging是更好的选择。但根据之前的回答,我已经详细介绍了Paging的优势和学习路径,用户可能仍然需要更简洁的指导,或者更明确的步骤来降低入门难度。这时候需要强调Paging库的长期收益,以及实际项目中的应用效果,比如大公司的使用情况,社区支持等。总结下来,用户需要的是明确的指导,帮助他们克服学习障碍,理解核心概念,并通过实际案例看到学习后的收益,从而减少犹豫,坚定学习的决心。
2025-03-09 11:55:58
934
android fragment生命周期测试
2018-04-24
自定义view-google文档代码整理
2018-04-01
自定义view学习一
2018-03-31
retrofit2与rxjava结合的demo
2018-03-01
Android MVPDemo
2018-02-27
rxjava学习代码
2018-02-13
Office2010安装需要的MSXML文件
2018-02-10
Android photoWallDemo
2018-02-05
Android大屏幕适配demo
2018-02-02
VolleyDemo
2018-01-19
Android drawerLayout
2018-01-19
volley.jar文件
2018-01-11
RNRedux.zip
2020-07-23
AwesomeProject.zip
2020-02-15
app-debug.apk
2020-01-15
ContactBackupStudy.zip
2019-11-13
android-sdk_r24.4.1-windows
2018-11-06
sourceInsight4
2018-10-16
source_insight4.0破解版
2018-07-09
MarkdownPad2.5安装文件和注册码
2018-06-04
google浏览器字节码转换扩展程序
2018-05-26
gradle-4.7-all和gradle-4.7-bin
2018-05-09
gradle-3.4-all和gradle3.5-all
2018-05-09
跑马灯效果
2018-04-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人