在我的应用程序中,我将在一个动画后设置alpha.如:
hideMenu = AnimationUtils.loadAnimation( getApplication(), R.anim.menu_layout_hide);
menuLayout.startAnimation(hideMenu);
menuLayout.setVisibility(View.GONE);
Run Code Online (Sandbox Code Playgroud)
但是我想在Alpha设置View之前设置1秒的延迟.因为我无法看到该布局的动画.那怎么可能呢?
谢谢.
我正在研究一个使用布局更改动画的Android应用程序.我想知道的是,有没有人知道如何使用java代码更改"andorid:animateLayoutChanges"proberty.
我目前的价值是
android:animateLayoutChanges="false"
Run Code Online (Sandbox Code Playgroud)
我想在活动onResume()方法中将其更改为"true".
我无法为膨胀的布局添加视图动画.我使用了以下代码片段
pageView.startAnimation(AnimationUtils.loadAnimation(this,R.anim.right_to_left_anim.xml));
Run Code Online (Sandbox Code Playgroud)
和xml
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate android:fromXDelta="0%" android:toXDelta="100%"
android:fromYDelta="0%" android:toYDelta="0%"
android:duration="700"/>
</set>
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
谢谢.
我有一个包含一系列笔记的ListView.
目前我使用布局动画在列表首次加载时从侧面滑动所有笔记; 这很完美.
但是,我试图弄清楚如何仅应用布局动画来列出某个点以下的项目.假设我删除了列表中的项目:我希望它下面的所有项目都转移到已删除的笔记的旧位置.
我试图找到一种方法来通过子索引自定义动画延迟或插值器,但没有找到适合此位置的任何内容.有没有办法使用自定义布局动画(例如扩展LayoutAnimationController)或者我必须执行此低级别并单独为每个视图设置动画?
有什么建议?
animation android listview android-listview layout-animation
我正在尝试用新的RecyclerView(使用GridLayoutManager)替换我的GridView,但似乎它不能很好地处理gridLayoutAnimation(ClassCastException: LayoutAnimationController$AnimationParameters cannot be cast to GridLayoutAnimationController$AnimationParameters
).它适用于常规布局动画,但因为它是一个网格,所以在平板电脑上完成需要很长时间.
我想要完成的是类似于Hierarchical Timing.如果您查看示例视频,它会显示布局动画从左上角到右下角.常规布局动画将逐行执行动画,因此在更大的网格(例如平板电脑)上花费太多时间来完成.我也尝试过探索ItemAnimator,但这只会像在"不要"的例子中那样同时在所有单元格上运行动画.
有没有办法在RecyclerView中完成此网格布局动画?
这是gridview_layout_animation.xml:
<!-- replace gridLayoutAnimation with layoutAnimation and -->
<!-- replace column- and rowDelay with delay for RecyclerView -->
<gridLayoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
android:columnDelay="15%"
android:rowDelay="15%"
android:animation="@anim/grow_in"
android:animationOrder="normal"
android:direction="top_to_bottom|left_to_right"
android:interpolator="@android:interpolator/linear"
/>
Run Code Online (Sandbox Code Playgroud)
这是动画grow_in.xml:
<set android:shareInterpolator="false"
xmlns:android="http://schemas.android.com/apk/res/android">
<scale
android:interpolator="@android:interpolator/decelerate_quint"
android:fromXScale="0.0"
android:toXScale="1.0"
android:fromYScale="0.0"
android:toYScale="1.0"
android:pivotX="50%"
android:pivotY="50%"
android:fillAfter="true"
android:duration="400"
android:startOffset="200"
/>
</set>
Run Code Online (Sandbox Code Playgroud)
编辑:基于Galaxas0的答案,这是一个解决方案,只需要您使用扩展的自定义视图RecyclerView
.基本上只覆盖attachLayoutAnimationParameters()
方法.这<gridLayoutAnimation>
与GridView一样.
public class GridRecyclerView extends RecyclerView {
public GridRecyclerView(Context context) {
super(context);
} …
Run Code Online (Sandbox Code Playgroud) 简而言之,我想缩放视图 - 就像Android Market一样,当你单击"更多"按钮时,在例如'描述'上.
我弄清楚,Android Market具有以下结构的布局:
<FrameLayout
android:id="@+id/artists_frame"
android:layout_width="fill_parent"
android:layout_height="64dip"
android:layout_below="@id/something1"
android:layout_above="@id/something2"
>
<!-- Some view there, which height >> 64dip -->
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)
所以,我在FrameLayout(via view.setAnimation(), view.setLayoutAnimation()
和ScaleAnimation
)上尝试了各种动画/ LayoutAnimations ,但效果总是一样的:视图动画,但是缩放后的真实layout_height仍然是相同的(所以其他视图的位置,那个取决于给定的FrameLayout,保持不变).
之后,我想 - 我在循环中更改了给定FrameLayout的layout_height:
layoutParams = view.getLayoutParams()
layoutParams.height = scaleTo;
layout.setLayoutParams(layoutParams);
Run Code Online (Sandbox Code Playgroud)
我有它的动画,市场般的观点,但成本(性能!!!)是高...
因此,问题是:是否有任何其他适当的方法来缩放(例如将高度从50dip更改为200dip)给定的View/ViewGroup,以便动画视图下方的视图位置也发生变化?
我有一个带有自定义适配器的ListView,显示来自数据库的信息.当我启动应用程序时,数据将从数据库中读取,并提供给适配器,然后将适配器附加到ListView.在ListView上运行LayoutAnimationController,平滑地显示内容.
this._lvList = (ListView)_v.findViewById(R.id.lvList);
this._lvList.setAdapter(new TableAdapter(getActivity(),R.layout.tablerow,Category.getCategories()));
LayoutAnimationController lac = new LayoutAnimationController(AnimationUtils.loadAnimation(getActivity(), R.anim.slide_in_left));
lac.setDelay(0.2f);
this._lvList.setLayoutAnimation(lac);
this._lvList.startLayoutAnimation();
Run Code Online (Sandbox Code Playgroud)
没问题.
现在,当我单击ListView的任何条目时,未单击的条目将消失,单击的条目将成为列表中唯一的条目,并按预期显示在顶部.
View v;
for(int i = 0;i<_lvList.getChildCount();i++) {
v = this._lvList.getChildAt(i);
if(v!=clickedView) {
Animation animSlideOut = AnimationUtils.loadAnimation(getActivity(), i%2==0?R.anim.slide_out_left:R.anim.slide_out_right);
animSlideOut.setStartOffset(i*50);
// some more stuff
}
v.startAnimation(animSlideOut);
}
Run Code Online (Sandbox Code Playgroud)
这也有效,但现在问题是,如果我再次单击该单个列表条目,我希望列表重新填充,再次显示所有项目.
我认为我可以从一开始就使用代码(第一个代码段),因为它在启动应用程序时工作正常,但是......这次......它没有.没有动画发生.原因是,我的ListView中没有动画视图(除了上一步中的动画).
而不是创建一个新的Tableadapter我已经尝试清除它,填写新的,称为notifyDataSetChanged()...没有用,因为
_lvList.getChildCount();
Run Code Online (Sandbox Code Playgroud)
stills返回1个视图,而适配器包含所有18个条目.我也试过了
requestLayout();
forceLayout();
invalidate();
invalidateViews();
Run Code Online (Sandbox Code Playgroud)
强制ListView在动画之前生成其子视图,但它不起作用.因此,在我调用布局动画之后,ListView会立即出现.
简介:我的ListView在布局动画开始之前不包含子视图,如何强制它生成它们?
Thx提前:)
我正在尝试按照这个例子(这里是代码)并在我的RN项目中使用LayoutAnimation(与该示例的不同之处在于我只想渲染我的圈子而没有按下按钮).
但是当我添加了LayoutAnimation时,它就是整个视图/屏幕/组件,它可以完成"弹入"的动画,而不仅仅是我想要的圆圈.我必须在哪里移动LayoutAnimation才能实现动画的圆形对象?
再次注意:Heed bennygenel
建议制作一个单独的Circles组件然后在Favorites上,有一个componentDidMount
会逐个添加每个Cricle组件,导致个别动画,因为状态会随着时间延迟而更新.但是我仍然没有逐一获得圆形渲染/动画的预期效果......
class Circle extends Component {
componentWillMount() {
LayoutAnimation.configureNext(LayoutAnimation.Presets.spring);
}
render() {
return (
<View>
{ this.props.children }
</View>
);
}
}
class Favorites extends React.Component {
constructor(props) {
super(props);
this.state = {
circleCount: 0
}
}
componentDidMount() {
for(let i = 0; i <= this.props.screenProps.appstate.length; i++) {
setTimeout(() => {
this.addCircle();
}, (i*500));
}
}
addCircle = () => {
this.setState((prevState) => ({circleCount: prevState.circleCount …
Run Code Online (Sandbox Code Playgroud) 我想为某些组件启用布局动画,但是一旦激活它,所有正在渲染的组件都会受到布局动画的影响。例如,我有
<container>
<waterfall/>
<menu/>
</container>
Run Code Online (Sandbox Code Playgroud)
我只希望对组件菜单使用布局动画,但是该动画将应用于已经具有自己的动画代码的瀑布渲染。
通过本机反应可能吗?
LayoutAnimation 是 React Native 的一部分,它在渲染视图时自动为组件设置动画。
官方文档在这里:
https://reactnative.dev/docs/layoutanimation
但是,文档中的示例不起作用。示例中应该设置动画的对象只是从起始位置跳到结束位置。
这是文档中似乎没有动画的 Snacks 之一的示例:
https://snack.expo.io/91MUQd5IH
这将导致人们得出结论,该 API 只是不受支持或不再起作用。
是不是 Layout Animation 就不起作用了?或者,如果它在某些情况下确实有效,请分享一个包含工作 Snack / Gist 的链接,其中包含一个非常简单但有效的 LayoutAnimation 示例。
更新:LayoutAnimation 可能不支持 web。有没有人对此有任何了解,或者谁能向读者介绍文档中的解释?
layout-animation ×10
android ×7
animation ×4
react-native ×3
reactjs ×2
java ×1
javascript ×1
layout ×1
listview ×1
xml ×1