问题标签 [layouttransition]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - RecyclerView:动画项目调整大小
我有一个RecyclerView
. 回收站视图的每个项目都可以展开或不展开。一次只能展开一项。
本质上,我正在尝试在棒棒糖拨号器中重新创建历史列表。
我发现在 RecyclerView 上使用 LayoutTransition 会使其崩溃。
但是我无法正确地为两种状态之间的项目视图更改设置动画。
我已经尝试过getItemAnimator().setSupportsChangeAnimations(true)
,notifyItemChanged(getPosition())
但有两个问题:
- 视图被重新创建,使过渡变得非常奇怪,因为它在项目移动的同时淡入下一个项目上方。出现的新视图没有调整大小,它已经是全尺寸。
- 重新创建视图时,旧视图淡出而新视图淡入,这使得视图背景颜色闪烁。
我还尝试LayoutTransition
在动画期间在项目视图上设置 a,但这种方法的问题是 RecycleView 的布局会立即更新并且不跟随动画。
我为这两次尝试都创建了一个关于这个问题的小型演示项目。 项目来源在这里。
如何在项目布局更改时创建平滑过渡?
android - 我可以更改 Android 的 LayoutTransition 的行为以消除淡入淡出但保留高度动画吗?
使用此属性添加布局转换很容易:
但是,您获得的动画并不能创造令人愉悦的用户体验。当元素被添加到布局中(我使用的是简单的垂直线性布局)或从消失变为可见时,我认为会有一个两阶段的过程,这很烦人。首先,为新元素准备好房间(其他所有内容都被推下)。然后当有足够的空间时,新的视图就会消失。同样,当视图被移除或从可见变为消失时,首先它会淡出,然后它占用的房间逐渐缩小到零。
我真的很想要一种将动画更改为我真正认为是自然的方式的方法:添加视图时,它的高度逐渐从零变为其全尺寸,所以首先你只看到顶部,而不会改变阿尔法。当移除一个视图时,它的高度逐渐变为它的全尺寸为零,因此在动画快结束时您只看到顶部,而无需更改 alpha。
我怎样才能在 Android 中做到这一点?(注意:用户可以在其他视图的动画结束之前同时点击几个按钮并导致多个元素快速连续出现/消失 - 或者甚至在它仍然出现的时候让某些东西出现)。
另一个问题,这可能不是问的地方:为什么这不是默认值?
(如果可能的话,是否可以指定一个稍微不同的行为,首先只出现视图的底部,而不是顶部,就像新视图从它上面的视图下面滑下来一样?)
android - LayoutTransition 消失和变化不会同时发生
我在这里有这个自定义的“底部操作栏”:https ://youtu.be/TPi5jtcs2wE ,它随着某些类型的网页(例如文章/非文章)出现和消失。我设置了最外层LinearLayout
并animateLayoutTransition
制作了一个不同的LayoutTransition
对象,但我希望栏在 webview 调整其高度的同时消失。需要明确的是,栏(relativeLayout)被设置为View.GONE
并且 webView 应该扩展以匹配父级(由于 layout_weight),因为栏已经消失,但它不会同时进行。我尝试更改LayoutTransition.setDuration()
和.setStartDelay()
.
文章Activity xml:
LayoutTransition的配置:
hide_action_bar.xml:
show_action_bar.xml:
我虽然LayoutTransition.CHANGING
动画会让它工作,但没有。如何让 webView 的高度变化和条形图的移除同时发生?尽管设置了持续时间和开始延迟排队,但它不起作用。我认为问题是CHANGING
必须在之后发生,View.GONE
因为在视图消失后需要知道高度。不管是那个还是这个都不是CHANGING
动画。
android - Android LinearLayout 的子自定义渲染动画
情况如下:
我有一个LinearLayout
包含垂直 n CardView
。
我想通过在卡片上添加动画来自定义它的呈现方式。
当布局被渲染时(可能在onResume()中),我希望每张卡片从底部滑到卡片如果没有动画应该采取的位置,如上图所示:
黄色箭头代表LinearLayout
的paddingTop和紫色箭头代表CardView
' marginBottom。
我不知道如何实现这一点,因为我无法获得最终位置,这就是为什么我来这里问你是否有人已经这样做或类似的。
我尝试在添加/删除时使用LayoutTransition
with ObjectAnimator
added 到LinearLayout
那个动画孩子,但我必须在 的构造函数中传递一个视图(孩子,我现在不知道)ObjectAnimator
。
我也试过这个:
但我无法获得位置的值(我总是得到 0),或者如果我将其更改为.y(-deviceHeight)卡在他的位置呈现,然后在滑到顶部之前移动到底部,LinearLayout
但paddingTop是甚至没有考虑..
编辑:总而言之,我想做一些类似于设置android:animateLayoutChanges="true"并且您删除第一个孩子时发生的事情:其他孩子只是向上滑动以填充该位置仍然是空的(除了我想要在每个子动画之间添加一些延迟)
android - Android - LayoutTransition 在关闭动画视图之前将其隐藏在动画视图中
我有一个LinearLayout
包含多个视图的视图 - 当我从视图中添加或删除它时,我使用了默认值LayoutTransition
。
我正在将视图添加到我的 AppbarLayout - 我通过在添加视图之前在 appbar 上设置新的 LayoutAnimation 并在添加视图后将其设置为 null 以编程方式添加动画 - 我不使用标签中的xml 由于https://code.google.com/p/android/issues/detail?id=191170
问题是当我从视图中删除它时,默认动画分两部分完成
- 里面的所有视图立即消失
- 视图的关闭是从下到上动画的
LayoutTransition
为了只有第二个动画从下到上关闭视图,需要进行哪些更改?
android - Android LayoutTransition - 如何排除视图
我正在使用LayoutTransition
在我的一种布局中进行自动重新排列动画。
我需要将此布局中的给定子视图排除在动画之外(APPEAR 动画)。我仍然想要任何其他视图来做 APPEAR 效果。所以我不能简单地禁用 APPEAR 效果。
我还没有找到实现这一目标的方法。任何帮助深表感谢。
谢谢,安德罗宾。
android - LayoutTransitions 不适用于可见性更改
我正在尝试使用 LayoutTransition 动画,但它们不起作用。
我设置
在我的 Activity 布局的父 LinearLayout 中。然后,我在子线安排上进行固定性(View.ible)或设定性(View.gone),该线安排延误时,该线安排在检查或未选中其他复选框时包含一些复选框。可见性变化不是动画的。父LinearLayout里面有一个ScrollView。
我也尝试过以编程方式设置布局转换
但这也没有效果。
我哪里错了?这应该很简单。
这是在 Android 6.0.1 上并使用 v23.2.0 支持库中的 AppCompatActivity。
编辑:我注意到一些布局更改是动画的。例如,当我在 VISIBLE 和 GONE 之间设置 recyclerView 的可见性时,它的动画效果很好。然而,当它们的可见性设置为 VISIBLE/GONE 时,包含 3 个复选框的简单布局不会动画。
android - 带有 wrap_content 的 LinearLayout 的 LayoutTransition
我正在尝试为LinearLayout
高度设置为的视图的添加/删除操作设置动画wrap_content
。
目前我已经尝试设置android:animateLayoutChanges="true"
LinearLayout 并以编程方式启用这样的转换:
Appearing 似乎工作得非常顺利,它可以根据我的需要设置动画和调整大小。
我遇到的问题LinearLayout
是消失,因为在删除动画完成之前调整了容器的大小。
我也尝试过使用setAnimateParentHierarchy()
,它似乎并没有真正影响容器的大小调整方式和时间。
android - 在 android 布局转换中排除某些元素的动画
我有一个关于 android 布局转换框架的问题。特别是我想实现一种效果,即布局的某个部分根据另一个视图的可见性向下或向上滑动。
想象一下下面的布局。(请忽略此处的嵌套线性布局;))
现在我想要实现的是,当changedView1和changedView2改变它们的可见性时,movingView向上或向下滑动。
通过为父布局启用LayoutTransition.CHANGING,滑动部分可以正常工作。但这有一个副作用,当添加或删除项目时, movingView也会被动画化,因为这个布局改变了它的边界。这就是我的问题,因为这会导致看起来非常奇怪的动画。
所以回到我的问题。有没有一种方法可以保持滑动动画,而无需对movingView上的布局绑定更改进行动画处理?
在movingView 上禁用layoutTransitions显然没有帮助,因为这只会影响子视图的动画。我还尝试在父布局上启用和禁用不同的 LayoutTransitions,但到目前为止还没有达到预期的效果。
如果我可以添加更多详细信息,请告诉我,否则我希望有人可以帮助我。
提前致谢!