avatar
Articles
71
Tags
7
Categories
0
简体中文/Chinese-CN
Home
Timeline
标签
分类
Link
About
List
  • Music(音乐)
  • Movie(电影)
  • 音乐
LogoGoshenC
Search
简体中文/Chinese-CN
Home
Timeline
标签
分类
Link
About
List
  • Music(音乐)
  • Movie(电影)
  • 音乐

GoshenC

Android常用布局详解
Created2025-04-10
在 Android 开发中,布局不仅仅是一堆 XML 标签的组合,而是决定应用性能和用户体验的关键部分。随着手机屏幕尺寸和分辨率的不断扩展,合理布局设计显得尤为重要。本文将深入剖析多种布局控件的实现原理,并结合实战经验和性能优化建议,为你提供一份详尽的参考。 2. Android 布局体系概述Android 的布局体系基于视图树(View Hierarchy)的概念,所有 UI 组件都以树状结构组织,每个节点代表一个 View 或 ViewGroup。 测量与布局流程 每个 ViewGroup 都会通过 onMeasure() 测量自身和子 View 的尺寸,然后在 onLayout() 方法中确定每个子 View 的位置。 层级结构 过深的嵌套会导致多次递归测量,对 CPU 造成负担。扁平化布局有利于降低整体计算量。 动态调整 随着 ConstraintLayout 等新型布局的引入,开发者有了更多灵活的手段来管理动态界面和响应式设计。 3. 各布局详解3.1 LinearLayout3.1.1 原理与测量机制 线性排列 LinearLayout...
使用Intent传递对象
Created2025-04-06
使用 Intent 传递对象的几种方式(Android)在 Android 开发中,Intent 是启动 Activity、Service 等组件的关键工具,同时也是在组件间传递数据的重要桥梁。 本文介绍如何通过 Intent 安全、高效地传递自定义对象,包括: Serializable 方式 Parcelable 方式(推荐) 使用 Bundle 传递对象 JSON 字符串传递对象(配合 Gson 等库) 1. 使用 Serializable 接口(简单但性能较差)步骤 1:让类实现 Serializable123import java.io.Serializabledata class User(val name: String, val age: Int) : Serializable 步骤 2:通过 Intent 传递发送端: 1234val user = User("Alice", 25)val intent = Intent(this,...
全局获取context的技巧
Created2025-04-06
全局获取 Context 的技巧(Android)在 Android 开发中,我们经常需要获取 Context,例如启动 Activity、创建 View、访问资源、使用系统服务等。但不恰当地获取或保留 Context 会导致内存泄漏等问题。 本篇文章介绍几种安全、规范地全局获取 Context 的技巧,并说明哪些方式应当避免。 为什么需要全局 Context?一些典型的使用场景: 初始化第三方 SDK 弹 Toast 消息 获取系统服务(如 ClipboardManager) 访问资源文件(getString()、getDrawable() 等) 正确方式:使用 Application Context方法 1:自定义 Application 类123456789101112class MyApp : Application() { override fun onCreate() { super.onCreate() appContext = applicationContext } ...
Kotlin DSL
Created2025-04-05
💬 什么是 Kotlin DSL?DSL 就像你用 Kotlin 写的“小语言”或“专属语法”。 比如你写一个配置文件或者描述页面内容时,希望这样写: 123456789page { title = "欢迎来到我的网站" header { text = "Hello!" } paragraph { text = "这里是正文内容" }} 看起来像“自己发明的语言”,对吧?这个就是 Kotlin DSL 的目标:写出接近自然语言的代码,让代码更“会说话”。 🧱 怎么做?用 Kotlin 的 3 个小技巧就可以了:1️⃣ 高阶函数(函数里面传函数)123fun doSomething(block: () -> Unit) { block()} 你可以这样用: 123doSomething { ...
LiveData用法详解
Created2025-04-04
一、概述LiveData 是 Android Jetpack 中的一个生命周期感知型数据容器。它的主要特点是: 生命周期感知:LiveData 会根据观察者(如 Activity、Fragment)的生命周期状态自动管理数据更新,避免内存泄漏和崩溃问题。 数据驱动 UI 更新:当 LiveData 数据发生变化时,所有处于活跃状态的观察者都会被自动通知更新 UI,无需手动管理。 解耦 UI 与数据:在 MVVM 架构中,ViewModel 将数据放入 LiveData 中,UI 层只负责观察数据变化,从而实现数据和 UI 的分离,降低耦合度。 二、为什么选择 LiveData?1. 生命周期安全LiveData 了解观察者的生命周期状态(如创建、启动、暂停、销毁),仅当观察者处于活跃状态时才发送更新,这样可以避免: 内存泄漏:当 Activity 或 Fragment 销毁后,LiveData 不再持有无用的引用。 更新崩溃:例如,当 UI 已经销毁时,不再尝试更新视图。 2. 自动数据更新无需手动调用刷新方法。只要数据变化,所有绑定了 LiveData 的 UI...
Lifecycles用法示例
Created2025-04-04
下面提供一个使用 Kotlin 讲解 Android Lifecycle 的示例,包含 LifecycleObserver、LiveData 和 ViewModel 的使用,帮助你理解如何在 Kotlin 中管理 Activity 的生命周期。 1. 添加依赖在你的 build.gradle 文件中添加 Lifecycle 相关依赖(版本号可根据项目需求调整): 1234567dependencies { // Lifecycle 组件依赖 implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" // 单独使用 ViewModel 与 LiveData(推荐这种方式,依赖更明确) implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0" implementation...
CollapsingToolbarLayout用法详解
Created2025-04-04
一、概述CollapsingToolbarLayout 是 Android Material Components 库中的一个布局组件,主要用于创建可以在滚动过程中折叠和展开的应用栏(AppBar)。它通常与 AppBarLayout 一起使用,以便为应用的顶部区域提供丰富的交互效果。CollapsingToolbarLayout 是实现 Material Design 风格中的可折叠应用栏的重要工具,广泛应用于那些需要动态调整应用栏内容的场景。 CollapsingToolbarLayout 可以结合 Toolbar、ImageView 等控件一起使用,支持滚动时自动折叠、动态改变标题、背景等效果。它能够在用户滚动页面时提供丰富的视觉反馈,提高用户体验。 二、依赖与导入在使用 CollapsingToolbarLayout 之前,确保你的项目已加入 Material Components 的依赖。可以在项目的 build.gradle 文件中添加以下内容: 123dependencies { implementation...
AppbarLayout用法详解
Created2025-04-04
一、概述AppBarLayout 是 Android Material Components 库中的一个重要视图组件,作为布局的一部分,通常用于实现可滚动的应用栏。它通过与其他布局控件(如 Toolbar、CollapsingToolbarLayout)结合使用,支持一些常见的交互效果,比如折叠和展开的动画效果。AppBarLayout 主要用来创建符合 Material Design 风格的顶部区域,它为复杂的应用栏交互提供了强大的支持,尤其是在多层滚动视图中。 主要特性: 滚动行为:支持和子视图(如 RecyclerView)的滚动交互,可以折叠和展开应用栏。 折叠与展开:通过 CollapsingToolbarLayout 支持应用栏的折叠与展开动画。 Material Design 支持:内置 Material Design 风格,符合现代 Android 应用的设计规范。 二、依赖与导入AppBarLayout 是 Android Material Components 库的一部分,在使用时需要确保已经在项目的 build.gradle 文件中添加了...
MaterialCardView用法详解
Created2025-04-04
一、概述MaterialCardView 是 Android Material Components 库中的一个视图控件,它基于 CardView 进行了增强,加入了更多 Material Design 风格的特性,使其更适合现代 Android 应用的设计要求。MaterialCardView 提供了简洁的卡片式界面,能够方便地实现圆角、阴影、背景等效果,从而帮助开发者构建更加美观、易于交互的 UI 元素。 与 CardView 相比,MaterialCardView 支持更多的功能,例如: 形状:支持更复杂的形状,除了圆角外,还支持自定义的形状和阴影效果。 背景:可以设置与背景相关的更多属性。 Ripple 效果:内置 Material Design 风格的水波纹点击效果。 MaterialCardView 适合用于展示内容卡片、列表项、照片、产品展示等,尤其是需要圆角和阴影效果的场景。 二、依赖与导入在使用 MaterialCardView 之前,需要确保你的项目已经加入了 Material Components 库的依赖。可以在项目的 build.gradle...
CoordinatorLayout用法详解
Created2025-04-04
一、概述CoordinatorLayout 是 Android 支持库(Support Library)提供的一个高级布局容器,它继承自 FrameLayout,是一个强大的布局容器,能够协调并支持更复杂的交互设计,尤其是在 Material Design 中。它提供了一种灵活的方式来协作处理子视图之间的行为,如与 AppBarLayout、FloatingActionButton、Snackbar 等组件的交互效果。 CoordinatorLayout 主要目的是提供一种“协调”各个视图行为的机制,可以通过自定义或现成的行为(Behavior)来控制子视图的滑动、动画和响应。 二、CoordinatorLayout 特性CoordinatorLayout 提供了以下几个重要特性: 响应滚动和手势:CoordinatorLayout 能够捕捉子视图的滚动和手势事件,并根据需要调整布局位置。 子视图行为协调:可以让不同的视图(如 AppBarLayout 和 FloatingActionButton)之间协调运动,确保界面一致性和流畅的过渡效果。 支持自定义行为:通过自定义...
1234…8
avatar
GoshenC
Articles
71
Tags
7
Categories
0
Follow Me
Announcement
Welcome
Recent Posts
Vue3处理表格巨量数据2025-12-12
前端分页功能的实现方法2025-12-07
虚拟列表2025-12-07
npm教程2025-11-30
弹性盒布局2025-10-26
Tags
Kotlin语法 前端 Kotlin practice 安卓开发 安卓知识类 汇编
Archives
  • December 2025 3
  • November 2025 1
  • October 2025 4
  • July 2025 1
  • May 2025 6
  • April 2025 20
  • March 2025 27
  • February 2025 9
Website Info
Article Count :
71
Total Word Count :
96.9k
Unique Visitors :
Page Views :
Last Update :
©2019 - 2025 By GoshenC
Framework Hexo|Theme Butterfly
Search
Loading Database