登录社区云,与社区用户共同成长
邀请您加入社区
演示:底部view随着软键盘的弹出而弹起
ok,了解各个属性的含义以后,发现并没有直接控制遮罩层的属性存在。但是usePlatformDefaultWidth属性可以控制是否使用系统平台默认的弹窗宽度,那么我们是不是就可以通过自定义一个占满全屏,但是背景透明的内置组件来实现需求呢?然后发现是Material3主题的问题(Material3主题自带的涟漪-水波纹效果应该也可以通过下面这种方法解决):在项目的XML文件中找到主题配置文件的位置
一个裁剪照片的app实现
Jetpack Compose 是 Android 的现代声明式 UI 工具包,它彻底改变了 Android 应用界面的构建方式。不再使用传统的 XML + View 体系,而是用 Kotlin 代码直接描述 UI。Jetpack Compose 代表了 Android UI 开发的未来方向:✅开发效率更高:更少的代码,更快的迭代✅代码更安全:类型安全,减少运行时错误✅UI 更灵活:动态响应状态变
本文系统介绍了Jetpack Compose中的常用控件,分为基础展示控件和交互控件两大部分。基础控件包括Text(文本)、Image(图片)和Icon(图标),详细展示了样式配置、图片加载和矢量图标使用。交互控件部分重点讲解了Button(按钮)及其变体(文本按钮、图标按钮等)的实现方式,以及Checkbox等选择控件的状态绑定。所有示例均提供Kotlin代码片段和关键属性说明,帮助开发者快速掌
Android Jetpack Compose - Snackbar、Box
Android Jetpack Compose - 进度指示器、SegmentedButton、Chip
本文探讨了在Compose开发中采用MVI架构与Kotlin Flow结合的优势。文章指出传统MVVM模式在Compose中容易导致状态管理混乱,而MVI通过单向数据流(意图->状态->界面)实现更清晰的架构。通过登录场景的实战示例,展示了如何定义状态与意图、使用ViewModel调度逻辑,以及在UI层优雅消费状态。作者强调Flow与MVI是天然拍档,能提供并发安全和声明式UI支持,但
在本章中,我们对 ComposeDemo 项目进行了扩展,添加了更多用户界面元素,包括两个 Text 可组合函数、一个 Spacer 和一个 Slider。这些组件通过 Column 可组合函数实现了垂直排列。此外,我们介绍了可变状态变量的概念,解释了它们如何确保在 Compose 运行时执行重组时,应用能保留状态。本示例还演示了如何使用事件处理函数响应用户交互(在本例中,即用户拖动滑块的操作)。
本文介绍了Android Jetpack中的registerForActivityResult API,它替代了传统的startActivityForResult方法。内容涵盖:1)基本用法,包括注册Activity结果合约和启动Activity;2)常用预定义合约如权限请求、图片选择等;3)如何自定义合约;4)完整示例代码。该API具有生命周期安全、类型安全、代码简化和更好封装等优势,是Andr
最近项目中使用到了Compose,为此重新温习一下Compose相关的知识。学习后,长时间不使用忘记的很快,为此记录学习的Compose的入门各种问题。一问一答的方式。为什么要使用compose?compose有哪些好处?基于view的工具包已经存在了十多年,设备的功能更加强,用户对设备的期望越来越高。基于google的调研判断 大家需要一个现代框架的现代的工具包。而且能够充分使用到kotlin的
Kotlin协程、Compose、DataStore等新技术层出不穷,该从何学起?传统Java开发模式向现代Kotlin开发转型,如何平滑过渡?项目架构如何设计才能应对快速变化的业务需求?性能优化、安全防护等进阶主题,如何系统掌握?作为一名在Android开发领域摸爬滚打多年的工程师,我深知学习过程中的痛点。这也是我整理编写《Android现代开发完全指南》的初衷——为Android开发者提供一套
Android Jetpack Compose - PullToRefreshBox、RadioButton、DatePicker、DatePickerDialog、DateRangePicker
Jetpack - WorkManager(WorkManager 引入、指数退避、标签、参数传递、周期性任务、任务链、任务组合)
综合练习:新闻App示例。
Android Jetpack Compose开发纯自定义表盘【可用于体重,温度计等项目】
此外,提及下,如果想使用像ListView或RecyclerView那样的列表组件,在Compose中可以使用LazyRow或LazyColumn,这部分内容之后会讲解到,敬请期待。补充下,Row本身是不支持滚动的(Column同理),但是想要滚动的话,可以使用Modifier.horizontalScroll()来实现,代码如下。Spacer,直接翻译的话,应该是空格,其主要就是充当margin
PS:上面链接可能不能显示,这都要“归功于CSND”,据说前段时间很多同学发表了带链接的博文之后,整个账号都被永久封号了 ==||compose博物馆。compose博物馆。compose博物馆。
摘要 本文详解Jetpack Compose中实现瀑布流布局的两种方案:官方推荐的LazyVerticalGrid方案(通过GridCells.Fixed设置列数,利用aspectRatio控制高度)和兼容方案(手动管理多列LazyColumn)。对比了瀑布流与其他布局的差异,并提供了性能优化技巧,包括图片加载优化(使用Coil的Size.ORIGINAL)、内存优化(remember缓存)和布局
Jetpack Core-Animation不是一个直接面向 UI 的动画 API(如 Compose Animation 或 ObjectAnimator),它是一个现代化的、基于 Kotlin 的底层动画引擎,可以将其理解为一个强大的“动画发动机”。我们有理由相信,随着库的成熟,它将成为 Compose 动画乃至整个 Android 平台的底层基石,与更多的 Jetpack 组件深度集成,共同
Jetpack Compose 1.6.6 中的 Hover 事件问题可以通过多种方式解决。建议根据项目实际情况选择合适的方案,并及时关注官方更新以获取永久性修复。
本文介绍了使用ExoPlayer实现视频播放功能的开发流程。主要包括:1. 核心组件配置,通过Dagger Hilt依赖注入创建ExoPlayer实例,并设置100MB的缓存策略;2. 状态管理设计,使用ViewModel管理播放状态、加载状态和错误信息;3. 生命周期处理,通过LifecycleEventObserver实现暂停时自动停止播放;4. UI组件实现,包含播放器视图和网络视频播放按钮
如果需要更复杂的动画,可以使用。
本文详细介绍了如何在Jetpack Compose中利用Canvas和手势控制创建交互式绘图应用。主要内容包括:1)基础手势集成,通过detectDragGestures、detectTransformGestures实现拖拽、缩放和旋转;2)复杂交互实现,如拖拽绘制对象和视图变换;3)手势控制绘图应用开发,包括路径绘制和状态管理;4)手势控制图表交互的实现方法;5)高级技巧包括手势冲突解决、性能
自Android诞生以来的十多年里,我们一直遵循着一套固定的UI开发模式:在XML文件中定义界面结构,在Java/Kotlin代码中通过查找控件,然后通过命令式代码手动更新UI状态。这种方式陪伴了一代又一代Android开发者,但随着移动应用复杂度的爆炸式增长,它的局限性也日益凸显。让我们来看一个简单的登录界面实现,感受一下传统方式的复杂性:1. XML布局文件(activity_login.xm
Android Jetpack Compose - Alignment、Arrangement、Carousel、Checkbox、TriStateCheckbox
详细解释 MVVM 设计模型是目前 Android(乃至前端 Vue、iOS 等)最主流、官方最推荐的 UI 架构模式。
记录了使用AndroidStudio2022.3 Giraffe版本在搭建环境时遇到的问题,包括连接超时,gradle无法读取等。
上图是Google官网对于Compose的介绍图,熟悉Flutter的朋友,可能会觉得,这代码格式,似曾相识啊,但是也仅仅是因为都是声明式编程,格式上有稍微相似而已。那么,Compose到底是什么?Compose=========================================================================Google是这么定义的几个关键定位是工具
不同于文件的存储方式,如果要保存的键值集合相对较小,则应使用SharedReferences API。SharedReferences对象指向一个包含键值对的文件,并提供简单的读写方法。本文从SharedReferences开始逐步引入Preference、MMKV。
Android 开发 Base64 问题:java.lang.IllegalArgumentException: Illegal base64 character 3a
解决:room无论如何怎么修改数据库版本都报错Room cannot verify the data integrity
try {DataStore 是 Google 面向现代 Android 架构推出的响应式本地数据存储方案,它通过协程、Flow 和类型安全特性,为开发者提供更强的能力和更清晰的数据管理模型。但这并不意味着 SharedPreferences 立即过时。两者各有适用场景:如果你正在开发一个新的 MVVM 架构项目,推荐使用 DataStore,它能很好地与 ViewModel、StateFlow
跳槽季整理面试题已经成了我多年的习惯!在这里我和身边一些朋友特意整理了一份快速进阶为Android高级工程师的系统且全面的学习资料。涵盖了Android初级——Android高级架构师进阶必备的一些学习技能。附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题(含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展
Android多进程开发 - AIDL 最简单的实现、传递数据大小限制
如果用一个公式来定义未来开发的效率:没有 Compose 的基础,你无法辨别 AI 是否在“胡说八道”;而没有 AI 的加持,你将永远被淹没在繁琐的胶水代码中。这十篇专栏,我们从思维出发,历经状态、架构、性能、副作用、导航、混合开发、绘图、测试,最后在AI 赋能中画上句号。Android 开发的黄金时代并没有过去,它只是在进化。在这个时代,**“学会学习”**比“学会代码”更重要。希望这套系列文章
摘要:Android Jetpack Compose核心组件体系分为7大类:1.基础UI组件(Text/Image等)替代传统View控件;2.布局组件(Column/LazyColumn等)构建界面结构,其中懒加载布局优化列表性能;3.交互组件(按钮/输入框/选择器等)处理用户操作;4.容器组件(卡片/弹窗等)增强样式功能;5.导航组件实现页面跳转;6.动画组件提升交互体验;7.辅助工具(状态管
用一句话概括,大体就是:“不要自己内部创建依赖,而是让外部提供的方式来完成”;核心思想是将程序的控制权从应用程序代码本身转移给一个外部容器或框架;3.2.5中使用到了Singleton注解,这个是作用域注解,作用是为依赖项提供生命周期管理;作用域必须与Component的作用域匹配,组件跟作用域关系如下:作用域注解绑定到的组件生命周期@Singleton应用级别(整个应用生命周期)Activity
摘要 本文介绍了如何将Jetpack Compose开发的模块嵌入传统View布局的Android项目中。项目采用模块化开发,传统View代码保留在app模块,而Compose功能开发在独立模块gapp-quotation中。重点阐述了通过Fragment的onCreateView方法,使用ComposeView将Compose界面(如QuotationMain)转换为View并嵌入传统布局的实践
——一个关于“代码解耦”与“开发效率”的江湖故事2012年,Dagger横空出世,凭借编译时依赖注入的独门绝技,成为Java界的“解耦大师”。它的核心哲学是:“依赖关系必须清晰,代码生成绝不手软!”但Dagger的硬核操作也让开发者叫苦不迭:程序员吐槽:“写Dagger配置比写业务代码还累,简直是‘配置地狱’!”2020年,谷歌推出Hilt,口号是:“让依赖注入像点外卖一样简单!”对比示例:程序员
LiveData是一个可以被观察的数据持有类,它可以感知并遵循Activity、Fragment或Service等组件的生命周期。其中主要包含的方法有:setValue、postValue以及observe;
此前发过一篇文章介绍了我开发的Desktop端端跨平台Android设备调试软件——DebugManager。包含了基础设备信息,应用管理,文件管理,性能监测,主题切换等。记录为开发AI大模型对话功能页面中,对TextField输入框回车键监听问题的解决。
Android 对话框 - 对话框全屏显示(设置 Window 属性、使用自定义样式、继承 DialogFragment 实现、继承 Dialog 实现)
ViewModel是Android架构组件中管理UI数据的核心类,其生命周期比Activity/Fragment更长,能在配置变更(如屏幕旋转)时保持数据存活。ViewModel会在所属Activity完全销毁时被清除,而Fragment的ViewModel则随Activity销毁而清除。开发者可通过重写onCleared()释放资源,但需避免在ViewModel中持有Activity/Fragm
ViewModel 需继承ViewModel基类,内部存储需要保留的数据,并提供操作数据的方法。// 存储计数数据(初始值为 0)// 获取当前计数// 计数 +1counter++// 重置计数注意:ViewModel 中不要持有 Activity/Fragment 的引用(如Context),否则会因生命周期不匹配导致内存泄漏。若需Context,可使用(需传入。
具备宿主生命周期感知能力的组件。它能持有组件(如Activity或Fragment)生命周期状态的信息,并且允许其他观察者监听宿主的状态。
Android滑动冲突解决方案摘要 在Android项目开发中,当BottomSheetDialog内嵌Compose的LazyColumn组件时,出现了滑动冲突问题。解决方案是通过NestedScrollInterop实现手动管理滚动冲突:在调用方设置ComposeView时创建nestedScrollInteropConnection,并将该连接传递给LazyColumn组件;在组件方使用.n
android jetpack
——android jetpack
联系我们(工作时间:8:30-22:00)
400-660-0108 kefu@csdn.net