自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 《Android样式进阶:善用Style与扩展函数提升开发效率》

Android样式进阶:善用Style与扩展函数提升开发效率 摘要:本文探讨了Android开发中Style与扩展函数的高阶应用。在样式方面,详细分析了将布局属性抽成Style的三个核心价值:1)效率与一致性(集中修改全局生效);2)可靠性与协作(减少错误隔离风险);3)可维护性与架构(关注点分离)。通过DslTabLayout案例展示了如何构建基础样式并进行功能扩展(如Scrollable、NoIndicator等样式)。在Kotlin扩展函数方面,提出应在复用高频操作时使用,并给出了addTabsFro

2025-12-11 08:05:53 775

原创 Android事件分发机制完全解析

本文解析了Android事件分发机制的核心要点:首先阐述了了解该机制的必要性,包括解决开发问题、实现复杂交互、处理滑动冲突和优化代码质量。其次介绍了触摸事件的定义类型(DOWN/UP/MOVE/CANCEL)和事件序列概念。重点分析了事件分发的三个关键对象(Activity、ViewGroup、View)及其核心方法(dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent),并通过流程图展示了事件传递的层级过程。最后提出解决滑动冲突的两大思路:父容器优先决

2025-10-28 23:21:25 944

原创 什么是Android View的绘制原理?一篇就够了

View绘制原理核心要点 掌握原理的重要性 实现精准高效的自定义View开发 从根本上解决UI性能问题(如卡顿、过度绘制) 高级工程师必备的核心能力 View的添加流程 从Activity.setContentView()开始 通过PhoneWindow创建顶级容器DecorView 根据主题加载基础布局到DecorView 最终将用户布局添加到内容容器mContentParent 关键方法解析 installDecor():初始化DecorView和基础布局 generateDecor():创建Decor

2025-10-22 23:46:24 1091

原创 Android ConstraintLayout约束属性完全指南:原理、用法与实战案例

本文详细介绍了Android开发中ConstraintLayout约束布局的核心概念和使用方法。ConstraintLayout通过扁平化视图层次显著提升性能,解决了传统布局嵌套过深的痛点。文章重点讲解了约束属性的重要性,包括水平方向的约束属性如layout_constraintLeft_toLeftOf和layout_constraintLeft_toRightOf,并通过具体示例演示了如何实现视图的精确定位。掌握ConstraintLayout及其约束属性是构建高效、响应式UI的关键技能,能够帮助开发者

2025-10-14 22:40:23 439

原创 Handler机制详解:从入门到精通,再也不怕面试官追问

Handler机制解析与内存泄漏防范 摘要:Handler是Android线程间通信的核心机制,通过MessageQueue和Looper实现任务调度。本文首先解析Handler的工作原理,包括其作为"线程邮差"的角色及四大核心组件(Handler、Message、MessageQueue、Looper)。重点通过实际案例演示常见的内存泄漏场景:当Activity销毁后,延迟Message仍被执行导致页面异常跳转。解决方案强调在onDestroy()中必须调用removeMessages

2025-10-12 18:34:41 825

原创 带着疑问深入剖析Android Lifecycle工作机制

Lifecycle工作机制解析 Lifecycle是Android Jetpack的核心组件,通过响应式方式管理Activity/Fragment的生命周期。其核心优势是减少模板代码、防止内存泄漏、实现代码解耦,并提供一致的开发规范。 工作机制上,Lifecycle通过ComponentActivity内部的LifecycleRegistry实现。关键的实现细节是:在Activity的onCreate方法中注入ReportFragment(无UI界面),这个Fragment负责监听和分发生命周期事件。

2025-09-25 23:03:08 1091

原创 Android ViewModel 原理解析

摘要: ViewModel是Android Jetpack中用于管理界面数据的组件,解决了Activity/Fragment在配置变更时数据丢失、内存泄漏和职责过重的问题。ViewModel生命周期更长,配置变更时自动保留数据。AndroidViewModel继承自ViewModel,通过构造函数传入Application,允许访问应用资源,但避免直接持有Activity/View引用。实例化时,ViewModelProvider使用SavedStateViewModelFactory自动处理Applica

2025-09-22 22:24:54 1006

原创 RxBus vs EventBus:为何我最终选择了RxBus?

RxBus vs EventBus:为何选择RxBus? RxBus和EventBus都是基于发布-订阅模式的事件总线机制,用于Android组件间通信。但RxBus基于RxJava实现,相比EventBus具有明显优势: 线程控制更灵活:通过observeOn/subscribeOn操作符自由切换线程 强大的操作符支持:提供map/flatMap/filter等丰富的事件处理能力 更优雅的错误处理:通过onError回调机制简化错误处理 生命周期管理:可结合RxLifeCycle自动管理订阅,避免内存泄漏

2025-09-17 22:18:56 926

原创 MVC、MVP、MVVM 架构对比:为什么最终选择 MVVM?

本文介绍了Android开发中三种主流架构模式:MVC、MVP和MVVM。通过流程图展示了MVC的基本流程及存在的问题(Activity承担多重角色、代码臃肿等);MVP通过Presenter层实现解耦,但存在样板代码过多、内存需手动释放等问题;MVVM通过ViewModel和数据绑定实现双向自动更新,结合LiveData实现生命周期感知,是架构演进的优化选择。文章指出实际项目中可综合使用多种架构,以MVVM为主导构建可维护性项目。

2025-09-15 22:58:17 1040

原创 Android如何优雅的在应用内切换语言

本文介绍了Android应用内优雅切换语言的实现方案。通过分析系统API和版本适配,提出完整的语言切换流程:1)使用LanguageManager更新配置并持久化语言设置;2)遍历所有Activity调用recreate()重建界面;3)在BaseActivity中重写attachBaseContext()方法确保Context更新。该方案解决了应用内实时切换语言的需求,避免了杀进程重启,支持多次切换不同语言,并提供了完整的持久化实现。文中还通过GIF动图展示了中英文切换的实际效果,验证了方案的可行性。

2025-08-31 20:27:55 1183

原创 android 如何构建一个具有模块组件化的项目结构

本文介绍了如何构建一个模块化、组件化的Android项目架构。通过创建基础组件库(base)、业务模块库(home、Assets)和中间模块(module_app)实现解耦,其中module_app起到承上启下的作用。项目采用DRouter路由框架解决跨模块调用问题,通过在module_app定义公共接口和服务,各业务模块实现具体功能,最终通过服务调用实现模块间通信。这种架构设计实现了高内聚低耦合,便于维护和扩展。

2025-08-26 22:14:19 1078

一键扫描Android国际化问题:Intellij脚本自动化检查指南

国际化脚本代码资源

2025-09-06

android应用内切换语言demo

android应用内切换语言demo

2025-08-31

android 如何构建一个具有模块组件化的项目结构

具体代码资源包

2025-08-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除