首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Jetpack Compose 1.1 现已进入稳定版!

例如,即使您调低 RadioButton 的大小,RadioButton's 触摸目标的尺寸仍将扩展至少 48x48dp。...如果您发现此更改破坏了现有的布局逻辑,请将 LocalMinimumTouchTargetEnforcement 设置 false 来禁用此行为,但此操作可能会降低应用的可用性,因此需要您格外注意,并谨慎使用...主要包括: 动画相关 API,例如: EnterTransition、ExitTransition、一些 AnimatedVisibility API 矢量相关 API: rememberVectorPainter...您可以使用 Modifier.animateItemPlacement() LazyColumn/LazyRow 项目位置进行动画处理。...我们很感激开发者们 Alpha 版和 Beta 版期间,通过 问题跟踪页 提交的错误报告和功能请求,帮助我们改进了 Compose 并构建您需要的 API。

1.1K20
您找到你想要的搜索结果了吗?
是的
没有找到

一文了解如何使用Compose动画~

这里设置了默认效果。EnterTransition这个密封类中定义了fadeIn、fadeOut、slideIn、slideOut 以及scaleIn、scaleOut动画效果。...动画效果是可以自由组合的,如上源码所示动画进入设置了fadeIn+expandVertically的组合效果。...接着我们自己设置动画效果scaleIn和scaleOut,修改代码如下所示: AnimatedVisibility(     visible = visible,     enter = scaleIn...有一种丝滑般的感觉,一起纵享丝滑吧~ Crossfade Crossfade可用于两个视图间的切换动画,编写代码:按钮控制当前页面显示Screen1页面或Screen2页面,为了便于区分,两个页面分别设置背景蓝色和绿色...flag }) {         Text(text = "视图切换")     } }                为了便于观察效果,此处动画设置tween的间隔时间3秒,运行程序,效果图如下所示

1.1K30

来聊聊 Jetpack Compose 动画,一篇搞定(上篇)

1.1 声明式编程 得益于声明式编程的优势,大多数的动画类型的选择上,你不需要像原来那样帧动画、补间动画和属性动画中选择太久;也不需要纠结用 XML 动画还是使用 Animation 类;...var isVisible by remember { mutableStateOf(true) } AnimatedVisibility( visible = isVisible, enter...var isVisible by remember { mutableStateOf(true) } AnimatedVisibility( visible = isVisible,...复制代码 四、基于效果状态的动画 4.1 视图单个属性的变化 animate*AsState 是一个非常简单的 API,只需要提供最终值,API 就会从当前值开始播放动画; Compose 对 Float...4.3 对于自定义类型的属性变化 无论是 animate*AsState 还是 Transition.animate* ,我们都会遇到变化的属性自定义类型(非基本类型) 的情况。

95400

写给初学者的Jetpack Compose教程,Lazy Layout

当然,Yigit大佬这波更多是商业互吹,Compose作势,毕竟基于两种完全不同的UI架构设计出来的控件是不好直接对比的。...比如上述例子中使用的LazyColumn,它就是用于垂直方向上滚动的可复用列表。而LazyRow则是用于水平方向上滚动的可复用列表。...然而这个解决方案并不完美,因为如果你尝试滚动一下列表的话,你会发现由于给Lazy Layout设置了边距,左右两侧内容会出现切割现象: 为了解决这个问题,我们可以使用专门Lazy Layout打造的边距设置属性...最后MainLayout()函数中将以上两个函数都包含进去,并加了一个布尔变量,只有firstVisibleItemIndex0,也就是列表中第一个子项元素可见的时候,Fab按钮才显示。...除此之外,还可以Lazy Layout中添加item函数来指定单个数据项,最终它们都会形成一个整体可滚动的列表。

28610

compose--CompositionLocal、列表LazyColumn&LazyRow、约束布局ConstraintLayout

CompositionLocal中的内容,针对组件的颜色、样式等属性值,他们往往按照一套风格来设计,使用隐式调用更加合适 1.MaterialTheme主题 之前我们使用一些Shape、Color、TextStyle...isSystemInDarkTheme(), // Dynamic color is available on Android 12+ dynamicColor: Boolean = true...rememberLazyListState(),// 可以获取当前第一个显示的元素索引的状态 contentPadding: PaddingValues = PaddingValues(0.dp),// 内容组件设置的...flingBehavior: FlingBehavior = ScrollableDefaults.flingBehavior(), userScrollEnabled: Boolean = true...ChainStyle.Packed:空间会分布第一个可组合项之前和最后一个可组合项之后,各个可组合项之间没有空间,会挤在一起。

76830

从0上手Jetpack Compose,看这一篇就够了~

("Android") } } setContent类似setContentView一样Activity设置布局,这里的Compose01Theme是根据项目名称生层的主题名称。...Column Column布局使得组件垂直排列,类似LinearLayout 的orientation属性设置vertical。我们使用Column布局来解决上面的问题。...在上面的图中我们看到,两个Text紧紧的贴在一起了,XML布局中我们可以使用padding或者margin来解决这个问题,Compose中如何处理呢?以及我们如何为文字设置颜色、大小等样式呢?...快来一起学习一下吧~ 延迟列表组件 Compose我们提供了LazyColumn和LazyRow组件,相当于XML中的RecycleView组件,从名字中我们也可以知道一个是垂直滚动一个是水平滚动。...设置其他属性,具体可自行参照LazyColumn的源码。

42321

Jetpack-Compose 学习笔记(二)—— Compose 布局你学会了么?

查看源码会发现, ContentAlpha.kt 中将 LocalContentAlpha 同样使用了 compositionLocalOf 方法设置了它的默认值 1f,而在这里就重新赋值 0.74f...List 中布局的使用 笔记一中,我们见识到了 Compose 使用 LazyColumn 来实现一个可滑动的 List,其实实现一个可滑动的 List 并不需要用到 LazyColumn,只需要用...所以一般是使用 LazyColumn 来展示列表数据,LazyColumn 开始时并不会把所有的列表数据都加载进内存,它会先将展示屏幕上的列表数据加载进内存,当滑动查看更多列表数据时,才会将这些数据加载到内存中...50% 的地方,这里由于 ConstraintLayout 默认尺寸是 wrap_content,所以父布局的宽度会设置 text 的两倍的宽度,这样就满足了 text 起始位置父布局的中间,根据图中的布局分界线也可以看出...而 guideline2 是竖直方向上距离屏幕高度三分之一的位置,需要把父布局的高度设置屏幕高度才可以实现。

2.6K31

Jetpack Compose实现的一个优雅的 Toast 组件——简单易用~

Toast 是Android中常见的轻量级提示\ 本文将介绍如何使用Compose技术实现一个Toast组件 不是一个简单的toast 优雅-简洁-动画 才是我的风格 \ 系统原生的Toast默认是底部弹出...fun Context.toast(text: CharSequence) = Toast.makeText(this, text, Toast.LENGTH\_SHORT).show() github...可以很轻松实现各种组合动画\ 弹出效果 :渐渐**显示**+垂直往下\ 消失效果 :渐渐**消失**+垂直往上\ 将ToastUI放在AnimatedVisibility组件下即可 AnimatedVisibility...cornerRadius = CornerRadius(6.dp.toPx()), alpha = 0.1f, ) animateTo开始动画 从0f-1f animationSpec设置动画时长...为了简洁而且 material3 提供的图标基本满足大部分场景的使用 图片 接口的实现 ToastData接口的实现ToastDataImpl 主要是启动一个协程监听animationDuration,经过

90440

Android | Compose 生命周期和附带效应

下面示例中将请求的结果当做成了键,这样当请求成功后,下次重组的时候也不会重新执行协程。如果重新重新获取数据,只需要修改 value 即可,例如示例中的按钮点击事件。...当 `state.hasError` false 时,此协程将取消,并且仅在 `state.hasError` true(由于上述 if-check)或 `scaffoldState.snackbarHostState...SideEffect 将 Compose 状态发布 非 Compose 代码。...如果需要与非 Compose 管理的对象共享 Compose 状态,请使用 SideEffect 可组合项,因为每次成功重组都会调用该可组合项, 例如:每次重组的时候都设置状态栏 @Composable...snapshotFlow 将 Compose 的 State 转为 Flow val listState = rememberLazyListState() LazyColumn(state = listState

1.2K10

Compose中使用Paging分页库

前言 大约在两年前,写了一篇Jetpack 系列之Paging3,看这一篇就够了~,本篇文章主要来看,Compose中如何使用Paging3,这里不得不说一句,xml中使用Paging3和在Compose...举个例子,请求出错时会调用refresh方法加载 ,如果当前已经请求了第一页到第四页的数据, 可以通过设置refresh 后会加载第5 - 8页的数据,并且前四页的数据都没了。...DataSource我们自动生成了load方法,我们主要的请求操作就在load方法中完成。...Int>): LoadResult {         return try {             //页码未定义置1...androidx.lifecycle:lifecycle-viewmodel-compose:2.4.1" 通过调用collectAsLazyPagingItems方法将结果转为LazyPagingItems实例,LazyColumn

1.5K30

安卓13又来了?快!扶起我来!

细化的媒体权限如果要将应用升级 Android 13 ,必须请求一个或多个新权限,Android 13 中将媒体权限细分为了图片、视频和音频文件,而不是之前的 READ_EXTERNAL_STORAGE...如需选择启用预测性返回手势,请在 AndroidManifest.xml 的 标记中将 android:enableOnBackInvokedCallback 标志设置 true...可以指定用户只能看到照片或只能看到视频,并且默认情况下,允许的媒体选择量上限设置 1。...如果你的应用支持多种语言,官方强烈建议我们应用的清单中声明 android:localeConfig 属性,这样用户就可以同一位置像更改其他应用的语言设置一样更改应用的语言设置。...autoStoreLocales 值设置 true 并将 android:enabled 设置 false,以指示 AndroidX 处理语言区域存储空间,如以下代码段所示:<application

81140

Android Compose开发

如果一条数据多个位置呈现,很容易忘记更新显示它的某个视图。此外,当两项更新以出人意料的方式发生冲突时,也很容易造成异常状态。例如,某项更新可能会尝试设置刚刚从界面中移除的节点的值。...padding 元素周围留出空间。 fillMaxWidth 使可组合项填充其父项它提供的最大宽度。 size() 指定元素的首选宽度和高度。...modifier = Modifier.requiredSize(150.dp) ) Column { /*...*/ } } } 在此示例中,即使父项的 height 设置...它控制了视图屏幕上的显示顺序。具有较高 zIndex 值的视图将显示具有较低 zIndex 值的视图之上。 默认情况下,视图的 zIndex 值0。...如果设置一个较大的正值,则视图将显示在其他视图的上方。如果设置一个较小的负值,则视图将显示在其他视图的下方。当两个视图的 zIndex 相同时,它们将按照它们布局文件中的顺序进行绘制。

18710
领券