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

运动布局-为过渡constraintSetEnd和constraintSetStart使用两个布局文件时,文本大小不会更改

基础概念

在Android开发中,ConstraintLayout是一种灵活的布局管理器,它允许开发者通过约束来定义视图的位置和大小。ConstraintSet是ConstraintLayout的一个辅助类,用于在代码中设置和更新视图的约束。constraintSetStartconstraintSetEnd通常用于动画过渡,允许你在两个不同的布局状态之间平滑地切换。

相关优势

  1. 灵活性:ConstraintLayout允许你创建复杂的布局,而不需要嵌套多个视图组。
  2. 性能:相比于其他布局管理器,ConstraintLayout在渲染时更加高效。
  3. 动画支持:通过ConstraintSet,你可以轻松实现布局的动画过渡效果。

类型

  • 静态布局:使用一个布局文件定义视图的初始状态。
  • 动态布局:通过代码动态修改视图的约束。

应用场景

  • 复杂UI设计:适用于需要复杂布局的应用场景。
  • 动画效果:适用于需要在不同布局状态之间切换的应用场景。

问题分析

当你在两个布局文件中使用constraintSetEndconstraintSetStart时,文本大小不会更改的原因可能是:

  1. 约束未正确设置:确保在两个布局文件中都正确设置了文本大小的约束。
  2. 动画配置错误:确保在动画配置中正确应用了ConstraintSet

解决方法

以下是一个示例代码,展示如何在两个布局文件之间进行动画过渡,并确保文本大小更改:

布局文件1 (activity_main_start.xml)

代码语言:txt
复制
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Start"
        android:textSize="16sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

布局文件2 (activity_main_end.xml)

代码语言:txt
复制
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="End"
        android:textSize="24sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

动画代码

代码语言:txt
复制
import android.os.Bundle;
import android.transition.TransitionManager;
import android.view.ViewGroup;
import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.constraintlayout.widget.ConstraintSet;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_start);

        final ConstraintLayout constraintLayout = findViewById(R.id.constraintLayout);
        final TextView textView = findViewById(R.id.textView);

        ConstraintSet startSet = new ConstraintSet();
        startSet.clone(constraintLayout);

        ConstraintSet endSet = new ConstraintSet();
        endSet.clone(this, R.layout.activity_main_end);

        textView.setOnClickListener(v -> {
            TransitionManager.beginDelayedTransition(constraintLayout);
            endSet.applyTo(constraintLayout);
        });
    }
}

参考链接

ConstraintLayout官方文档 ConstraintSet官方文档

通过以上步骤,你应该能够正确地在两个布局文件之间进行动画过渡,并确保文本大小更改。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

探索 MotionLayout 动画世界

如果我们不使用AndroidStudio来转换布局MotionLayout的话,就需要自己在res\xml文件夹下创建一个根节点MotionScene的xml文件。 4....可以设置true或false。 autoTransition :指定是否在布局文件加载自动开始过渡动画。可以设置 animateToStart :切换到开始状态,有动画效果。...clickAction :点击要执行的操作。 toggle :在transitionToStartconstraintSetEnd状态之间使用动画反复切换。每次点击从一种状态切换到另一种状态。...表示相对参考系的横向纵向的比例。可以设置 0 到 1 之间的浮点数。这两个数值的具体意义keyPositionType 属性的设定有关。...需要在开始结束的两个Constraint中控件设置大小,即使控件大小没有改变也需要在两边都设置好大小。 然后设置开始结束状态,动画执行时间。

13410

【翻译】MotionLayout实现折叠工具栏(Part 1)

当然了,如果你已经在自己的 App 中使用了,那么你在学会了这里的知识后也没什么必要做更改。...这里的 Transition 元素定义了过渡动画的开始结束状态,以及过渡效果如何用户进行交互: <Transition app:constraintSetEnd="@id/collapsed...第二个控件则是包含了标题( ID title )的文本 TextView ,它需要移动的同时改变自身大小尺寸。 让我们首先看看这两个状态下图片 ImageView 的高度差。...如果你对为什么这里选择缩放而非直接通过一个 CustomAttribute 改变 textSize 来实现表示怀疑的话,那么你要知道,在这里的理由就是因为相比简单直接地在文本上应用一个形变,通过改变文本大小重新渲染会非常耗计算资源...,所以我们为了在过渡动画结束尽量减少锯齿的产生需要使用这个技巧。

1.9K31
  • 太有意思了,教你实现实现王者荣耀团战!

    2 功能详解 MotionLayout 是一种布局类型,可帮助您管理应用中的运动微件动画。...这里可以看到有两个新的属性: app:layoutDescription,这个属性就是代表该MotionLayout对应的动画场景,引用的是一个MotionScene(XML资源文件),其中就会包括相应布局的所有运动动画描述...TransitionConstraintSet Transition,包括运动的基本定义,其中motion:constraintSetStartmotion:constraintSetEnd指的是运动的起始状态结束状态...这是设置的linear直线过渡,因为本身就是直线,所以没什么影响。 motion:percentWidth,表示视图相对大小,取值0-1,0代表初始位置宽度,1代表结束位置宽度。...TransitionManager可以提供不同场景之间的过渡转换动画,需要设定两个场景(布局文件),然后两个场景中对应的控件id要对应上。最后通过java代码执行过渡动画。

    1.2K10

    【翻译】MotionLayout实现折叠工具栏(Part 2)

    目前来说,发生的情况是:图片的透明度在过渡动画还没有达到 60% 之前是不会发生变化的(也就是至少超过一半的折叠状态下不发生变化),接下来会慢慢开始淡出,直到工具栏达到 90% 折叠完全透明。 ?...我们在此不会重复 Nicolas Roard 所介绍的那样,相反我们来尝试一些其他的方式并投入使用。 首先我们并不局限于目前仅使用两个关键帧的限制,事实上我们可以创建更多精细动画。...举个例子,假设我们设置 imageAlpha 的开始结束值分别是 255 0 ,然后在 25% 的位置添加一个关键帧,设置值 205 ,在 75% 的位置设置另一个关键帧值 50 。...标题文字的移动缩放在整个过渡动画中是同时进行的,但是通过添加一个单独关键帧后我们可以做到在不更改 ConstraintSets 代码的前提下,也不用改变缩放速度就能让标题文本更快地到达动画最终位置:...你只需要记得在最终发布版本中要关闭这个功能——我建议定义一个布尔值资源,在布局使用,然后你就可以在发布版本总能设置它为 false 就可以了。 好吧,这次就到这里。

    1.7K30

    MotionLayout 使用介绍 (第一章)

    它拥有综合属性动画TransitionManager,CoordinatorLayout的功能 使用MotionLayout你可以像TransitionManager一样通过两个布局文件描述布局过渡动画...ConstraintSets 通常ConstrainSet将所有游戏布局文件中的所有的位置信息规则; 你可以使用多个ConstrainSet,你可以决定将那些规则应用到布局中,在应用时这些查看不会被重建...,只会修改他们的位置大小。...: [strip] 示例1:关联布局文件 需要你使用ConstrainLayout创建³³两个ConstrainSet一个的英文初始位置(组件在屏幕的左面)一个是结束位置(组件在屏幕的右边) 初始位置:...app:layout_constraintTop_toTopOf="parent" /> 使用两个布局文件可以初始化两个

    4.2K00

    MotionLayout教你轻松玩转动画

    MotionLayout,它是google推出的一种实现动画的布局view,基于ConstraintLayout基础,可以让开发者直接通过xml布局的方式来轻松实现动画。...它能够自定义属性,来实现属性动画的特征;可以使用TransitionManager来实现界面的过渡动画,同时也可以结合CoordinatorLayout,来实现特效动画。...对应的就是activity_motion_layout_scene文件 下面我们来看下文件具体内容 MotionScene 在MotionLayout中,如果你需要做动画,需要使用MotionScene...我们也可以改变它的运动方式,例如使用系统提供的easeInOut 除了motioninterpolator,还提供了其他属性设置,例如我们还可以定义动画路线,使用pathMotionArc,设置startVertical...这些代码层面都是在xml中 <Transition app:constraintSetEnd="@id/end" app:constraintSetStart="

    1K20

    ConstraintLayout2.0一篇写不完之Carousel

    与实现此类视图的其他解决方案相比,Carousel可以利用MotionLayout迅速轮播创建复杂的动画效果。 Carousel支持带有开始结束的列表以及循环环绕列表。...ConstraintSet(请确保它们提供ID): previous start next 如果start状态与该基本布局相对应,则previous的状态则应该表示轮播项目向右移动一个。...start,B,C,D可见,而AE在屏幕外。我们要设置previous的状态,以使A,B,C,D的位置现在位于B,C,D,E所在的位置,并且视图从左向右移动。...下图显示了这种机制(请注意“ item#”值): 转场Transitions 在ConstraintSet中定义的这三个状态,在startnext,以及startprevious之间创建两个Transitions...Carousel Helper将自动您处理此问题,默认情况下会将这些视图标记为 View.INVISIBLE在那种情况下(这样,整体布局不会改变)。

    1.4K20

    突破传统动画:探索MotionLayout的独特优势

    它的设计理念是基于约束布局(ConstraintLayout),通过定义不同布局状态之间的过渡,使得布局之间的切换变得平滑自然。...,就可以在布局文件使用MotionLayout了。...我们可以通过修改ConstraintSet来定义不同状态下的布局。 MotionScene:MotionScene是MotionLayout的配置文件,用于定义布局之间的过渡动画效果。...基于ConstraintLayout,具有灵活的布局能力,可以轻松实现复杂的布局结构。 支持在XML文件中定义动画效果,方便开发人员进行调试维护。...简化动画定义,使得动画的定义更加直观和易于理解 结论 本篇文章你介绍了Android MotionLayout,包括其定义、使用方法、优点示例,以及更多的使用细节。

    30040

    MontionLayout:打开动画新世界大门(其一)

    第一眼见到 MotionLayout 无疑是兴奋的,在经过使用熟悉了这个布局组件之后,我就想将这份喜悦传递给国内开发者,从此“拳打”设计,“脚踢”产品?。...当然,你也可以按照字面意思将它简单理解运动布局”。为什么这么说呢?...2.2 在布局文件使用 MotionLayout 想要使用 MotionLayout,只需要在布局文件中作如下声明即可: <android.support.constraint.motion.MotionLayout...由上图可知,MotionLayout 可分为两个部分。部分可简单理解一个 ConstraintLayout,至于其实就是我们的“动画层”了。...为了让大家快速理解使用 MotionScene,本文将重点讲解 ConstarintSet Transition,至于 StateSet 状态管理将会在后续文章中大家介绍具体用法场景。

    94530

    Android-MotionLayout动画

    :constraintlayout:2.0.0' 创建布局 创建一个名为activity_main.xml的布局文件,根布局ConstraintLayout,然后选择Design->Component...用来描述一系列运动过程中的关键,我们稍后说 完善布局 添加背景动画 由于MotionLayout是ConstraintLayout的子类,所以我们可以像使用ConstraintLayout一样使用它....",取值deltaRelative:percentX percentY 坐标系以constraintSetStart指定的位置原点,X轴平行于父布局X轴,方向动画开始的x点指向结束点x点,其值...Y轴平行于父布局Y轴,方向动画开始的y点指向结束点y点,其值0原点,1动画整个动画Y轴方向的运动距离。...-- 用到了两个KeyAttribute每个控件使用两个,是因为要实现在动画的中间部分保持0.0的透明度不变,在快要结束再变得可见。

    1K40

    ConstraintLayout2.0一篇写不完之极坐标布局与动画

    极坐标布局方式在某些场景下,比笛卡尔坐标系的建立更加方便,特别是涉及到一些圆周运动相对中心点运动的场景。...OnSwipe的顺时针滑动逆时针滑动,这两个属性,在设置rotationCenterId后才会生效。...那么借助这个,就可以很方便的实现一些圆形路径的滑动效果动画。 通过下面这个例子,我们来看下Rotational OnSwipe的使用方法。...这样一个复杂的极坐标动画效果,虽然借助ConstraintLayout可以很方便的实现定位布局,但是运动,却无法继续保持极坐标的依赖关系,所以,这里需要使用MotionLayout来维持运动的极坐标约束关系...首先,使用ConstraintLayout来完成起始布局的建立,代码如下所示。 <?xml version="1.0" encoding="utf-8"?

    64850

    ConstraintLayout2.0一篇写不完之嵌套滚动怎么滚

    在没有ConstraintLayout的时候,要实现嵌套滚动布局,通常都是使用CoordinatorLayout来实现,但是这个东西的使用局限性比较大,能非常简单的实现的嵌套布局,就那么几种,如果要实现一些特别的滚动效果...那么在这里,一般又有两个套路,一是直接使用MotionLayout,然后在代码里面通过AppBarLayout.OnOffsetChangedListener的回调,设置MotionLayout的progress...(修改属性也会存在一些问题),所以,如果使用自定义MotionLayout的话,建议通过include的方式,引用新的根布局自定义MotionLayout的方式来使用,而直接使用MotionLayout...progress数据,有了这个progress,内部MotionLayout才能联动,这个使用CoordinatorLayout配合MotionLayout使用要设置progress是一个道理。...解决完外部的MotionLayout之后,内部的MotionLayout就迎刃而解了,因为它真的就是一个平平常常的MotionLayout,你想要对它内部的元素做任何的改动,都之前直接使用MotionLayout

    1.1K30

    一个侧边栏导航组件实现思路

    3D transforms 我们的布局现在是堆叠在一个移动视口大小。除非我添加一些新的样式,否则它将默认覆盖我们的文章。...下面是一些我正在努力实现的用户体验: 动画打开关闭; 只有在用户同意的情况下才使用动画; 键盘焦点不会进入屏幕以外的元素; 当我开始实现动作动画的时候,我想先从可访问性开始。...10vw,以确保当 sidenav 隐藏,它的盒子阴影不会窥视主视图。...我通过在: 目标更改时设置可见性转换来实现这一点。 进入时,请勿过渡可见性;立刻可见,因此我可以看到元素滑入并接受焦点。...退出,给他加一个延迟到过渡效果; 可访问性 UX 增强 链接 此解决方案依赖于更改 URL 以便管理状态。当然,这里应该使用 元素,它可以免费获得一些很好的可访问性特性。

    3.6K40

    Android 4.4.2引入的超炫动画库

    在app中适当得使用上Transition能带来较好的用户体验,视频中介绍了该框架的基本使用以及其中核心的一些类方法,只有学会这些基本的API才能在之后的Activity/Fragment过渡定制一些自己想要的效果...注意这里两个Scene中红绿两个方块除了位置大小不一样,id是一致的,transition记录下两个Scene前后属性值,根据属性值的改变执行过渡动画,默认情况下对SceneRoot下的所有View执行动画效果...Transition的辅助工具,以path的方式指定过渡效果,两个具体实现类ArcMotionPatternPathMotion,看下ArcMotion的效果 ? ?...在两个Scene中使用自定义过渡动画,效果如下: ?...某些特定的转换类型在应用到TextureView可能不会产生所需的动画效果。 继承自AdapterView的如ListView,与该框架不兼容。 不要对包含文本的视图的大小进行动画

    80520

    前端基础篇css

    注:rel是用来建立外部文件文件之间的关系 link标签一般放在head部分 b)使用@import引入css文件 语法: @import “css文件路径”; ★ link@import引入外部样式的区别...12px,行高字体大小的1.5倍,字体类型微软雅黑 注:在font的复合写法中,sizefamily不可互换位置,也不可以其他简写属性互换位置 7.字体颜色 语法:color:颜色值; 注:颜色值的三种写法...,可以实现单行文本在定高容器中垂直居中 b) line-height不允许设置负值 c) line-height的属性值只写数值不加单位,代表行高字体大小的多少倍 3.文本修饰 语法:text-decoration...高度0的情况 八、水平居中 1.如果被设置元素文本、图片等行内元素,水平居中是通过给父元素设置text-align:center;来实现的。...,.4); 注:rgba模式opacity的区别: a) 给容器添加opacity,容器中的文字图片也会跟随透明 b) rgba模式只是给容器的背景添加一定的透明度,容器中的文本图片不会跟随透明

    1.7K30

    第135天:移动端开发经验总结

    3、全屏自适应布局   适用场景:单页面网页,移动web app 页面。 二 、Box-sizing在移动端的使用   在百分比定宽的页面经常使用。...那么,前端的应对方案是:   设计稿切出来的图片长宽保证偶数,并使用backgroud-size把图片缩小原来的1/2   //例如图片宽高:200px*200px,那么写法如下 .css{width...均不会)上会对那些看起来像是电话号码的数字处理电话链接,比如: 7位数字,形如:1234567 带括号及加号的数字,形如:(+86)123456789 双连接线的数字,形如:00-00-00111 11...当移动设备横竖屏切换文本大小会重新计算(或者在内嵌浏览器中设置字体的大小),进行相应的缩放,当我们不需要这种情况,可以选择禁止: html {   -webkit-text-size-adjust...,可以获取手机运动状态下的运动加速度等数据。

    1.6K30

    最新iOS设计规范七|10大视觉规范(Visual Design)

    在iOS应用中,您可以配置界面元素布局,以在iPad上执行多任务处理,在拆分视图中,在屏幕旋转以及在其他设备上自动更改形状大小。设计一个适应性强的界面在任何环境下都提供出色的体验非常重要。...如果可以的话,同时支持纵向横向。用户更喜欢在不同的方向使用APP,因此最好是你能能够满足用户这种期望。 做好更改文本大小的准备。用户希望大多数APP在设置中选择不同的文本大小时都能做出响应。...若要适应某些文本大小更改,你可能需要调整布局 可交互元素提供充足的点击热区。将所有控件的最小可触碰区域保持在44pt x 44pt。 ? 在多个设备上预览你的APP。...在上下文变化时改变焦点可能会令人迷茫沮丧,并且可能让用户觉得他们失去了对APP的控制。 避免不必要的布局更改。当有人旋转设备,整个布局无需更改。...使用字体粗细,大小颜色突出显示应用程序中最重要的信息。 响应文本大小更改时优先处理内容。并非所有内容都同样重要。

    8K30

    这是一篇很好的互动式文章,Framer Motion 布局动画

    到目前为止,我最喜欢 Framer Motion 的部分是它神奇的布局动画--将 layout prop 拍在任何运动组件上,看着该组件从页面的一个部分无缝过渡到下一个部分。...一种方法是直接使用 CSS过渡使属性产生动画: .square { transition: width 0.2s ease-out; } 现在,当 square 改变宽度,它将在其大小之间无缝动画化...position 固定大小 到目前为止,我们已经能够使用FLIP位置大小的变化制作动画。...当我们把位置大小的变化结合起来时,我们在逆向步骤中进行了两个独立的变换--平移缩放。...有了这个见解,我们也可以通过使用中心之间的距离而不是左上角的点来解决这个问题。 纠正子元素的变形 到目前为止,我们已经能够制作一个布局动画,可以无缝过渡大小位置的变化。

    2.6K20

    CSS笔记(21)

    当我们选择box-sizingborder-box以后,它的盒子大小不会因为边框大小而被撑开了,变成了内填充....如果盒子模型我们改为了box-sizing:border-box,即paddingborder就不会撑大盒子了(前提paddingborder不会超过width宽度) 注意: 在使用border-box...CSS3过渡(重点) 过渡(transition)是CSS3中具有颠覆性的特征之一,我们可以在不适用flash动画或JavaScript的情况下,当元素从一种样式转变成另一种样式元素添加效果....过渡动画: 是从一个状态 渐渐地过渡到另一个状态. 可以让我们的页面更加好看,更动感,虽然低版本浏览器不支持(ie9以下版本),但是不会影响页面布局 我们现在经常:hover一起使用....transition:要过渡的属性 花费时间 运动曲线 何时开始 记住过渡的口诀:给谁过渡给谁加. 尝试了一下,特别有意思. <!

    23310

    30分钟了解所有引擎组件,132个Unity 游戏引擎组件速通!【收藏 == 学会】

    由于 TextMeshPro 创建的几何体与 Unity 的文本组件一样,每个字符都使用两个三角形,因此这种改进的视觉质量灵活性不会带来任何性能成本的损失。 用于实现高质量的文本渲染。...使用此关节可按照您所决定的位置和角度保持两个对象之间的相互偏移。 用于将两个物体连接在一起,使它们相对运动。...Audio Source还支持动态更新,可以在运行时更改音频文件、音量、音调等属性。这使得开发者可以根据游戏的需求实时调整音效,以增强游戏的体验效果。...相机可以设置透视投影或正交投影,透视投影可以模拟真实的视野效果,而正交投影则可以保证物体的大小比例不变。 相机还可以设置多个,用于创建多个视角或场景切换过渡效果。...布局控制器按以下顺序布局元素分配宽度或高度: 首先,布局控制器将分配最小大小属性(Min Width、Min Height)。

    2.4K34
    领券