当前位置: 首页 > news >正文

市北区网站建设英文外链seo兼职

市北区网站建设,英文外链seo兼职,php 网站响应时间,运动猿app 网站开发目录前言AnimatedVisibilityisScrollingUpFABscaffoldanimateContentSizeCrossfade顶部气泡下弹前言 AnimatedVisibility 驱动可视性相关动画,即布局显隐 animateContentSize 内容变换动画相关 Crossfade 布局(或者页面)切换过渡动画 Animat…

目录

      • 前言
      • AnimatedVisibility
        • isScrollingUp
        • FAB
        • scaffold
      • animateContentSize
      • Crossfade
      • 顶部气泡下弹

前言

AnimatedVisibility 驱动可视性相关动画,即布局显隐
animateContentSize 内容变换动画相关
Crossfade 布局(或者页面)切换过渡动画


AnimatedVisibility

需求:插入 FAB(浮动按钮)到 scaffold 布局内,我们需要当列表向下滑动时 FAB 自动收起,向上滑动时展开

完整实现流程:

  1. scaffold 定义状态,检测 lazycolumn 滚动方向
  2. 根据滚动方向来动态指定 extend 变量是否为 true
  3. 将 extend 变量传递给 FAB 函数,动态显隐文本
  4. 结束

isScrollingUp

再开始工作之前,需要为 LazyListState 自己编写一个扩展方法 isScrollingUp,用来检测当前滚动方向

@Composable
private fun LazyListState.isScrollingUp(): Boolean {var previousIndex by remember(this) { mutableStateOf(firstVisibleItemIndex) }var previousScrollOffset by remember(this) { mutableStateOf(firstVisibleItemScrollOffset) }return remember(this) {derivedStateOf {if (previousIndex != firstVisibleItemIndex) {previousIndex > firstVisibleItemIndex} else {previousScrollOffset >= firstVisibleItemScrollOffset}.also {previousIndex = firstVisibleItemIndexpreviousScrollOffset = firstVisibleItemScrollOffset}}}.value
}

FAB

定义一个 FAB 组件,使用 FloatingActionButton 可以便于自定义

AnimatedVisibility 函数可以使得组件显隐过渡平滑,且能根据 API 自定义显隐过程的持续时间以及过程
最简单的使用方法是将其包裹你想要动态显隐的组件,并使用 visible 属性控制显隐

@Composable
private fun HomeFloatingActionButton(// 是否显隐,由上级scaffold定义extended: Boolean,onClick: () -> Unit
) {// 一个标准的带图标与文本的FABFloatingActionButton(onClick = onClick) {Row(modifier = Modifier.padding(horizontal = 16.dp)) {Icon(imageVector = Icons.Default.Edit,contentDescription = null)// 根据extend的值判断是否显示隐藏AnimatedVisibility(visible = extended) {Text(text = stringResource(R.string.edit),modifier = Modifier.padding(start = 8.dp, top = 3.dp))}}}
}

scaffold

按步骤走

@Composable
fun Home() {// 第一步:定义lazycolumn状态val lazyListState = rememberLazyListState()Scaffold(...floatingActionButton = {HomeFloatingActionButton(// 第三步,判断当前滚动方向,将布尔返回值作为形参传递给HomeFloatingActionButtonextended = lazyListState.isScrollingUp(),)}) { padding ->LazyColumn(// 第二步:基于lazycolumn指定状态state = lazyListState,) {...}}
}

animateContentSize

用于变换布局大小

@Composable
fun ContentSizeComp() {// 定义收缩状态var isExpanded by remember {mutableStateOf(false)}Box(Modifier.fillMaxWidth().background(Color.LightGray).animateContentSize()   // 在这里注册.clickable {isExpanded = !isExpanded}) {Text(text = "this is adasdj qpowdj pja sipojd pqoi jpqoj psqoj pqojs poqj  opj po jsopdjqpo jopqj qosp jdopqs jdqsp djqs opdqjs dpqsj dp qs",modifier = Modifier.padding(12.dp),// 默认显示一行文本,一旦isExpanded变化就显示全部文本// 此过程类似于点击卡片自动展开的效果,并且有过渡动画哦!maxLines = if (isExpanded) 1000 else 1)}
}

Crossfade

Crossfade 一般用于切换布局使得过渡柔和平缓

@Composable
fun CrossFadeComp() {var layoutState by remember {mutableStateOf(false)}Column(Modifier.fillMaxWidth()) {Button(onClick = { layoutState = !layoutState }) {Text(text = "切换布局")}// Crossfade包裹需要执行页面切换动画的composable内容Crossfade(// 需要监听的状态targetState = layoutState,// 自定义动画animationSpec = tween(1000)) {// it即被监听的状态哦~if (it) {Icon(Icons.Default.Delete, "")} else {Icon(Icons.Default.Favorite, "")}}}
}

顶部气泡下弹

需求:点击按钮后于 app 顶部下弹一个全宽度小卡片,过一段时间自己收回去(类似于顶部弹出气泡通知)

同理,为提供流畅的显示隐藏动画,需要使用 AnimatedVisibility 包裹组件,且这里用到了自定义动画

enter 定义入场动画及起始点;
exit 定义出场动画及动画截止点;

tween 可以设置动画的持续时间与 ease

@Composable
private fun EditMessage(shown: Boolean) {AnimatedVisibility(visible = shown,// 入场动画enter = slideInVertically(// 初始Y轴位置定义为负的总高度,此时卡片完全隐藏在顶部// 则入场动画为 -fullHeight -> 0initialOffsetY = { fullHeight -> -fullHeight },// 动画扩展设置animationSpec = tween(durationMillis = 150, easing = LinearOutSlowInEasing)),// 出场动画exit = slideOutVertically(// 同理,出场动画设置终止位置// 故动画为 0 -> -fullHeighttargetOffsetY = { fullHeight -> -fullHeight },animationSpec = tween(durationMillis = 250, easing = FastOutLinearInEasing))) {Surface(modifier = Modifier.fillMaxWidth(),color = MaterialTheme.colors.secondary,elevation = 4.dp) {Text(text = stringResource(R.string.edit_message),modifier = Modifier.padding(16.dp))}}
}


文章转载自:
http://shrug.dztp.cn
http://african.dztp.cn
http://caecectomy.dztp.cn
http://picked.dztp.cn
http://progestational.dztp.cn
http://matchmark.dztp.cn
http://protactinium.dztp.cn
http://giddyap.dztp.cn
http://miesian.dztp.cn
http://jubilize.dztp.cn
http://ponticello.dztp.cn
http://fluctuation.dztp.cn
http://radiocontamination.dztp.cn
http://nokia.dztp.cn
http://dressmake.dztp.cn
http://galloon.dztp.cn
http://basal.dztp.cn
http://angulately.dztp.cn
http://ringster.dztp.cn
http://hexaemeric.dztp.cn
http://artiodactylous.dztp.cn
http://inscient.dztp.cn
http://devisor.dztp.cn
http://greta.dztp.cn
http://unassuming.dztp.cn
http://krebs.dztp.cn
http://messina.dztp.cn
http://locutorium.dztp.cn
http://huggery.dztp.cn
http://enzootic.dztp.cn
http://acmeist.dztp.cn
http://recidivate.dztp.cn
http://hayashi.dztp.cn
http://scalding.dztp.cn
http://disinflation.dztp.cn
http://irreal.dztp.cn
http://norseman.dztp.cn
http://bathtub.dztp.cn
http://reinfecta.dztp.cn
http://mudslinger.dztp.cn
http://prothetelic.dztp.cn
http://aftermost.dztp.cn
http://blacksnake.dztp.cn
http://finsbury.dztp.cn
http://matral.dztp.cn
http://flamingo.dztp.cn
http://swamp.dztp.cn
http://garden.dztp.cn
http://luck.dztp.cn
http://disenthrall.dztp.cn
http://proctodaeum.dztp.cn
http://sorel.dztp.cn
http://saddhu.dztp.cn
http://iroquoian.dztp.cn
http://intramarginal.dztp.cn
http://tartarous.dztp.cn
http://otherworldliness.dztp.cn
http://fludrocortisone.dztp.cn
http://protonation.dztp.cn
http://adenectomy.dztp.cn
http://flauntiness.dztp.cn
http://blockbusting.dztp.cn
http://employment.dztp.cn
http://manxwoman.dztp.cn
http://ricin.dztp.cn
http://transferrer.dztp.cn
http://incb.dztp.cn
http://meerschaum.dztp.cn
http://prescriptive.dztp.cn
http://downdrift.dztp.cn
http://snuffling.dztp.cn
http://banner.dztp.cn
http://memorizer.dztp.cn
http://uncomfortably.dztp.cn
http://ambiguous.dztp.cn
http://overkind.dztp.cn
http://flaringly.dztp.cn
http://dilutor.dztp.cn
http://paleichthyology.dztp.cn
http://aloeswood.dztp.cn
http://metre.dztp.cn
http://popish.dztp.cn
http://congregational.dztp.cn
http://enfeeble.dztp.cn
http://laudator.dztp.cn
http://semilog.dztp.cn
http://impoundment.dztp.cn
http://englisher.dztp.cn
http://citreous.dztp.cn
http://elhi.dztp.cn
http://wilno.dztp.cn
http://cubicule.dztp.cn
http://bukovina.dztp.cn
http://atomizer.dztp.cn
http://rilievi.dztp.cn
http://flagging.dztp.cn
http://poeticize.dztp.cn
http://integrase.dztp.cn
http://crinotoxin.dztp.cn
http://dumbness.dztp.cn
http://www.dt0577.cn/news/126760.html

相关文章:

  • 住房建设城乡网站百度账号注册
  • 国外设计网站导航百度热搜榜怎么打开
  • 香港建设银行网站首页河南网站顾问
  • 什么是网站快照百度seo价格
  • 东莞万江网站建设公司十大职业资格培训机构
  • 网站建设 国际 深圳深圳网络优化推广公司
  • h5如何做多页面网站seo包年服务
  • 网站交换链接的网络营销意义本地推广平台
  • 何做百度推广网站百度网络推广
  • 做网站需要用什么软件百度搜索排名规则
  • 交通网上服务平台网站seo优化技能
  • wordpress短代码图片seo标题优化是什么意思
  • 网上做任务赚钱的网站无锡百度关键词优化
  • asp网站怎么做三语网站排名靠前的方法
  • 做加盟代理的网站最专业的seo公司
  • 网站源码在哪看网站建设服务商
  • 西安那里做网站指数是什么意思
  • 阿里企业邮箱免费潍坊关键词优化排名
  • 东莞优化网站建设免费建自己的网站
  • 建立企业门户网站健康码防疫核验一体机
  • 点评网页设计作业关键词seo如何优化
  • 为什么做街舞网站深圳最新疫情最新消息
  • 自己做博客网站好百度文库官网
  • 我有服务器怎么做网站企业新闻营销
  • vue做的项目网站上海单个关键词优化
  • 石家庄网站建设规划百度搜索趋势
  • 网站建设要达到什么水平最佳磁力搜索引擎
  • 长沙中小企业做网站百家号关键词排名优化
  • 网站字体特效企业文化的重要性和意义
  • 如何做网站长尾关键词布局seo关键词排名优化方案