- 博客(40)
- 收藏
- 关注
原创 Android 平移动画详解
平移动画是 Android 中的一种基础动画效果,它允许你在屏幕上沿 X 或 Y 方向移动视图(View),不改变视图本身的布局属性,仅仅是“看起来”被移动了。平移的本质是对 View 的或属性进行动态设置,单位是像素(px),通过动画的方式实现流畅的移动效果。
2025-04-24 15:43:58
1141
原创 Android ConstrainLayout用法详解
ConstraintLayout 是 Android Jetpack 提供的一种高级布局容器,它通过在视图之间建立“约束”来确定位置和大小,避免了嵌套多层布局的问题。
2025-04-24 15:43:15
1275
原创 Android常用布局详解
Android 的布局体系基于视图树(View Hierarchy)的概念,所有 UI 组件都以树状结构组织,每个节点代表一个 View 或 ViewGroup。测量与布局流程每个 ViewGroup 都会通过测量自身和子 View 的尺寸,然后在onLayout()方法中确定每个子 View 的位置。层级结构过深的嵌套会导致多次递归测量,对 CPU 造成负担。扁平化布局有利于降低整体计算量。动态调整。
2025-04-13 20:19:32
1420
原创 Android 使用Intent传递对象用法详解
bundle.putParcelable("user", user) // user 为 Parcelable 对象。是启动 Activity、Service 等组件的关键工具,同时也是在组件间传递数据的重要桥梁。适合需要封装多个参数或复用 Bundle 的场景。数据类、列表对象、频繁传递的数据结构。需要额外序列化/反序列化,性能略低。高性能、Android 原生支持。性能差,不适合大对象或频繁传递。在 Android 开发中,灵活,适合传输复杂结构。
2025-04-10 12:40:31
679
原创 Android 全局获取Context 的技巧通俗详解
plaintext123456789101112在plaintext1234...>plaintext1✅生命周期和 App 一致,不会泄漏适用于 Toast、资源访问、初始化等场景❌不可用于 UI 创建(如),需要传入 Activity Context获取方式是否推荐说明✅ 推荐生命周期长,不易泄漏自定义保存 context✅ 推荐全局工具类中使用Activity / View context 静态持有❌ 避免。
2025-04-09 17:10:26
941
原创 Kotlin DSL通俗详解
DSL 就像你用 Kotlin 写的“小语言”或“专属语法比如你写一个配置文件或者描述页面内容时,希望这样写:123456789page {title = "欢迎来到我的网站"header {text = "这里是正文内容"看起来像“自己发明的语言”,对吧?写出接近自然语言的代码,让代码更“会说话”。
2025-04-09 17:09:29
1387
原创 Android LiveData用法详解
LiveData是 Android Jetpack 中的一个生命周期感知型数据容器。生命周期感知:LiveData 会根据观察者(如 Activity、Fragment)的生命周期状态自动管理数据更新,避免内存泄漏和崩溃问题。数据驱动 UI 更新:当 LiveData 数据发生变化时,所有处于活跃状态的观察者都会被自动通知更新 UI,无需手动管理。解耦 UI 与数据。
2025-04-08 16:11:07
1237
原创 Android LifeCycle用法示例
创建一个继承自ViewModel的类,使用 MutableLiveData 来管理数据:plaintext12345678910111213141516171819// 内部可修改的 LiveData// 对外只暴露不可变的 LiveDatainit {loadData()// 模拟异步加载数据,这里直接赋值:通过注解方法自动监听 Activity 或 Fragment 的生命周期,简化了传统生命周期回调的代码管理。
2025-04-08 16:09:54
1348
原创 Android CollapsingToolbarLayout用法详解
是 Android Material Components 库中的一个布局组件,主要用于创建可以在滚动过程中折叠和展开的应用栏(AppBar)。它通常与一起使用,以便为应用的顶部区域提供丰富的交互效果。是实现 Material Design 风格中的可折叠应用栏的重要工具,广泛应用于那些需要动态调整应用栏内容的场景。可以结合ToolbarImageView等控件一起使用,支持滚动时自动折叠、动态改变标题、背景等效果。它能够在用户滚动页面时提供丰富的视觉反馈,提高用户体验。
2025-04-07 11:50:17
1361
原创 Android AppbarLayout用法详解
是 Android Material Components 库中的一个重要视图组件,作为布局的一部分,通常用于实现可滚动的应用栏。它通过与其他布局控件(如Toolbar)结合使用,支持一些常见的交互效果,比如折叠和展开的动画效果。主要用来创建符合 Material Design 风格的顶部区域,它为复杂的应用栏交互提供了强大的支持,尤其是在多层滚动视图中。是 Android Material Design 中一个重要的布局组件,它提供了应用栏的高度自定义、折叠和展开动画、以及与滚动视图的交互。结合。
2025-04-07 11:48:58
1340
原创 Android MaterialCardView用法详解
是 Android Material Components 库中的一个视图控件,它基于CardView进行了增强,加入了更多 Material Design 风格的特性,使其更适合现代 Android 应用的设计要求。提供了简洁的卡片式界面,能够方便地实现圆角、阴影、背景等效果,从而帮助开发者构建更加美观、易于交互的 UI 元素。与CardView相比,形状:支持更复杂的形状,除了圆角外,还支持自定义的形状和阴影效果。背景:可以设置与背景相关的更多属性。Ripple 效果。
2025-04-06 11:44:49
1093
原创 Android CoordinatorLayout用法详解
是 Android 支持库(Support Library)提供的一个高级布局容器,它继承自,是一个强大的布局容器,能够协调并支持更复杂的交互设计,尤其是在 Material Design 中。它提供了一种灵活的方式来协作处理子视图之间的行为,如与Snackbar等组件的交互效果。主要目的是提供一种“协调”各个视图行为的机制,可以通过自定义或现成的行为(Behavior)来控制子视图的滑动、动画和响应。通过继承类,可以创建自己的视图行为。
2025-04-06 11:44:03
1440
原创 Android Snackbar用法详解
Snackbar是 Android 提供的一种简洁、轻量级的提示框,用于在屏幕底部展示短暂的信息提示。它的设计初衷是为了提供一种比Toast更具互动性和灵活性的提示方式。与Toast的静态提示不同,Snackbar提供了更多的交互功能,例如:支持撤销操作、自动隐藏和手动关闭。Snackbar适用于展示短期通知,尤其是需要用户进行交互(如撤销操作)的场景。Snackbar 的出现与消失是有默认动画的,你也可以自定义动画效果:plaintext123。
2025-04-06 11:42:49
960
原创 Android NavigationView用法详解
特性描述组件是侧滑菜单组件样式支持 Material3 与暗黑模式集成建议配合 Jetpack Navigation 使用扩展性可自定义菜单、头部、监听点击事件场景大多数需要抽屉式导航的 App,如邮箱、社交、工具类应用在当今 Android 开发中,使用是构建高质量导航界面的黄金组合。掌握,不仅能提升你的 UI 实力,也能为用户带来清晰、高效的导航体验。
2025-04-05 18:48:04
839
原创 Android DrawerLayout用法详解
是 Android 官方支持的布局容器,用于实现侧边滑出的导航抽屉效果(Navigation Drawer)。广泛应用于包含多个导航项的 App 中,例如邮箱客户端、新闻阅读器、社交类应用等。支持左侧/右侧抽屉(或同时存在)支持滑动手势与菜单图标触发与和 Jetpack Navigation 组件良好兼容支持 Material Design 风格确保你的主题继承自,以获得最新 UI 支持。你可以自定义一个布局用于的属性。plaintext12345xml复制编辑。
2025-04-05 18:46:33
1374
原创 Android TintList用法详解
在 Android 应用开发中,经常需要对控件的背景、图标等元素进行着色处理,以便实现动态主题、状态变化反馈或与应用整体风格保持一致。是 Android 中一种描述颜色状态的对象,而TintList则通常指控件的背景或图标的“着色列表”,其底层实现就是使用对控件进行着色处理。例如,许多控件(如 Button、ImageView、FloatingActionButton 等)提供了等方法,使得开发者可以轻松地为控件设置不同状态下的颜色。
2025-04-05 18:45:30
719
原创 Android value资源管理全解析:Color、String、Style、Dimen、Array
在 Android 开发中,资源文件(res/values 目录)用于存储颜色、文本、样式、尺寸、数组等非代码统一管理 UI 风格,增强可维护性支持多语言(国际化)适配不同屏幕密度、尺寸、模式(夜间模式等)提高应用的复用性和灵活性颜色资源用于定义 UI 组件的颜色,可存储在plaintext123456789101112131415-- 基础颜色 -->-- 主题颜色 -->-- 自定义动态色彩 -->字符串资源存放在,用于文本国际化、多语言适配。
2025-04-04 15:36:10
651
原创 Android Vector Asset用法解析
Vector Asset 是基于 XML 定义的矢量图形资源,不同于位图资源,它通过数学公式来描述图形的轮廓和颜色,从而实现无限放大而不会失真。无论在何种分辨率下,矢量图形都能保持清晰的显示效果。相对于同等质量的位图资源,矢量图通常占用更少的存储空间。可在运行时动态修改颜色和大小,适应不同的主题和布局需求。使用 Vector Asset 是应对多分辨率设备和复杂 UI 需求的高效解决方案。它不仅能确保图形在各种设备上无失真显示,还能大幅降低 APK 文件的体积。
2025-04-04 15:35:05
829
原创 Kotlin的协程详解
Kotlin 协程是 Kotlin 官方提供的一种用于简化异步编程和并发任务处理的工具。它能够让你用同步的写法实现异步代码,大大简化了回调地狱(callback hell)问题,提高了代码的可读性和维护性。协程在 Android 开发、服务器开发等场景中都有广泛应用。协程是一种轻量级的线程,能够在单个线程内并发执行多个任务。它基于挂起(suspending)和恢复(resuming)机制,在任务遇到耗时操作(如 IO、网络请求)时挂起执行,不阻塞线程,待条件满足后恢复执行。可以创建自定义线程池,并用。
2025-04-04 15:34:01
1070
原创 Android 使用SAX解析XML格式数据
SAX(Simple API for XML)是一种基于事件驱动的 XML 解析方式,适用于处理大规模 XML 文档。SAX 解析器不会将整个 XML 加载到内存中,而是逐行解析,因此在性能和内存占用方面优于 DOM 解析。
2025-04-04 15:33:08
453
原创 Android 使用XmlPullParser解析XML格式数据详解
是 Android 推荐的 XML 解析方式,特别适合在资源受限的环境中处理较大或结构清晰的 XML 数据。通过手动编写解析逻辑,你可以精准掌控每一个元素和数据点的处理流程。若 XML 格式复杂、需要对象映射,可考虑 Simple XML。类)、封装成工具类、或结合 ViewModel 展示到界面上,也可以继续告诉我,我可以进一步扩展。的 XML 解析器。读取服务器返回的 XML 格式数据(如天气、图书、新闻),大幅度降低内存使用,非常适合资源受限的移动设备。:配置文件、网络 XML 数据、RSS 等。
2025-04-04 15:31:48
1178
原创 Android OkHttp的用法详解
OkHttp 是一个高效、灵活的 HTTP 客户端库,在 Android 开发中非常常用。下面介绍如何在 Android 中使用 OkHttp,并附上常见的 GET 和 POST 请求示例。OkHttp如果你还没有添加OkHttp,需要在添加依赖:plaintext123implementation("com.squareup.okhttp3:okhttp:4.12.0") // 最新版如果你用的是(Groovy 语法):plaintext123plaintext1。
2025-04-03 15:02:06
1320
原创 Android HttpURLConnection的用法详解
connection.setRequestProperty("Content-Type", "application/json") // 发送 JSON 数据。是 Android 进行网络请求的一个轻量级 HTTP 客户端,适用于简单的 GET 和 POST 请求。Thread.sleep(6000) // 等待协程执行(仅示例用,实际开发不推荐)connection.doOutput = true // 允许输出流。适用于轻量级请求或对库依赖要求较高的项目。在 Android 现代开发中,建议使用。
2025-04-03 15:00:32
333
原创 Android Service的用法详解
首先看一下如何在项目中定义一个 Service。新建一个 ServiceTest 项目,然后右击 com.example.servicetest→New→Service→Service,可以看到,这里我们将类名定义成 MyService,Exported 属性表示是否将这个 Service 暴露给 外部其他程序访问,Enabled 属性表示是否启用这个 Service。将两个属性都勾中,点 击 “Finish” 完成创建。现在观察 MyService 中的代码,如下所示:plaintext12。
2025-04-03 14:58:56
787
原创 Android WorkManager的用法详解
WorkManager 是 Android 用来执行先在(模块级)中添加依赖:plaintext123implementation("androidx.work:work-runtime-ktx:2.9.0") // WorkManager 最新版然后(点击“Sync Now”)。Worker 是 WorkManager 执行任务的地方。我们需要创建一个类,继承Worker或(推荐)。新建一个plaintext12345678910111213。
2025-04-03 14:57:41
1211
原创 Kotlin 中 AsyncTask 的使用教程
本文详细介绍了在 Kotlin 中使用 AsyncTask 的方法,包括各个生命周期回调的作用和示例代码。虽然 AsyncTask 曾经为 Android 异步处理提供了简化方案,但随着技术的发展,Kotlin 协程已成为更推荐的选择。在学习 AsyncTask 的同时,建议大家尽快熟悉并尝试使用 Kotlin 协程以提升代码的简洁性和可维护性。
2025-04-02 20:38:24
725
原创 Kotlin infix函数用法详解
plaintext12345678910111213println("(${result.x}, ${result.y})") // 输出:(6, 8)
2025-04-02 19:28:05
976
原创 Android Bitmap.createBitmap() 用法全解析
操作方法示例创建空白 Bitmap旋转缩放平移水平翻转垂直翻转裁剪不仅能创建 Bitmap,还能旋转、缩放、平移、镜像翻转、裁剪,几乎所有图片变换都可以搞定!🚀希望这篇文章能帮你更好地理解的使用!😊。
2025-04-02 19:26:45
912
原创 ContentProvider+ContentResolver+UriMatcher+SQLite的用法示例
通过结合SQLite数据库、和UriMatcher,我们可以实现一个完整的跨应用数据共享机制。ContentProvider 作为数据提供者,向外部应用提供访问接口,ContentResolver 则充当请求者的角色,发起查询、插入、更新和删除等操作,UriMatcher 则帮助我们根据 URI 匹配具体的数据操作。这种架构不仅保证了数据共享的高效性和安全性,同时还使得应用内部数据管理变得更加清晰和规范。
2025-04-02 19:25:38
1064
原创 RecyclerView 进阶优化指南
val newData = diaryList + Diary(3, "记账", "今天吃了火锅,花了 120 元", "2025-03-15")Toast.makeText(this, "点击了: ${diary.title}", Toast.LENGTH_SHORT).show()recyclerView.layoutManager = GridLayoutManager(this, 2) // 2 列。diaryList.add(0, diary) // 插入到第一个位置。
2025-04-02 19:24:48
941
原创 Android 中 ContentResolver 的增删改查详解
val selectionArgs = arrayOf("%心情%") // 查询包含“心情”的日记。val selectionArgs = arrayOf("1") // 只更新 ID 为 1 的日记。val selectionArgs = arrayOf("1") // 只删除 ID 为 1 的日记。//构造 content:// 开头的 Uri,它用于标识数据库中的某条数据。put("content", "更新后的日记内容")put("title", "今日心情")println("插入失败")
2025-04-01 21:46:29
590
原创 Android VieeModel用法详解
private val counterViewModel: CounterViewModel by viewModels() // 通过 viewModels() 获取 ViewModel。private val _count = MutableLiveData(0) // 可变 LiveData。val count: LiveData<Int> = _count // 只暴露不可变 LiveData。var count = 0 // ViewModel 变量(Activity 重建后不会丢失)
2025-04-01 21:43:15
646
原创 安卓Room用法
implementation("androidx.room:room-ktx:$room_version") // 支持 Kotlin 协程。fun getAllDiaries(): List<DiaryEntry> // 直接返回列表(不推荐,建议使用 Flow)kapt("androidx.room:room-compiler:$room_version") // 用于注解处理器。val room_version = "2.6.1" // 确保使用最新版本。// 监听数据库变化。
2025-04-01 19:36:32
1619
原创 startActivity和registerForActivityResult的用法
在 Android Kotlin 开发中,和是启动新 Activity 并处理返回结果的两种方式。
2025-04-01 19:29:40
834
原创 Retrofit 使用指南
println("用户信息: ${user.name}, ${user.email}")println("用户信息: ${user?println("请求失败: ${e.message}")@DELETE("users/{id}") // DELETE 请求。@GET("users/{id}") // 添加自定义 Header。@GET("users/{id}") // GET 请求。@PUT("users/{id}") // PUT 请求。@POST("users") // POST 请求。
2025-04-01 19:27:51
996
原创 Android使用JSON解析数据
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于 Web API 交互。Kotlin 提供了多种解析 JSON 数据的方法,其中和Gson是常见的选择。
2025-03-31 21:10:20
631
原创 Android 通知(Notification)完全指南
*val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager这个写法和下面本质一样的,下面的更简洁安全,上面的能兼容旧版本(适用API22以及更早版本)*/.bigText("这里是详细的通知内容,适合展示更多的文字信息")).setBigContentTitle("大图通知")).setContentTitle("通知标题").setContentText("通知内容")
2025-03-31 21:07:23
716
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人