gpt4 book ai didi

android - 在不对标题应用动画的情况下为 ListView 设置动画

转载 作者:行者123 更新时间:2023-11-30 03:06:24 26 4
gpt4 key购买 nike

我目前有一个附有页眉和页脚的 ListView 。我现在正在尝试为列表本身中的项目设置动画,但是当我将 LayoutAnimationController 应用于 ListView 时,标题也会设置动画。有没有办法在不影响标题的情况下将动画应用于整个列表?

我目前已经在 Can LayoutAnimationController animate only specified Views 尝试过该解决方案通过创建一个 LinearLayout 子类来检查动画,但标题仍然与其余项目一起动画。

public class AnimationAverseLinearLayout extends LinearLayout {
private boolean mIsAnimatable = true;

public AnimationAverseLinearLayout(Context context) {
super(context);
}

public AnimationAverseLinearLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}

public void setAnimatable(boolean isAnimatable) {
if(!isAnimatable)
clearAnimation();
mIsAnimatable = isAnimatable;
}

@Override
public void startAnimation(Animation animation) {
if(mIsAnimatable) {
super.startAnimation(animation);
}
}
}

....

//in onCreateView
ListView listView = (ListView) v.findViewById(android.R.id.list);
listView.setLayoutAnimation(Animations.animateListView(listView.getContext()));
header = (com.yardi.hud.inspections.util.AnimationAverseLinearLayout) inflater.inflate(R.layout.fragment_case_search_header, null, false);
header.setAnimatable(false);
listView.addHeaderView(header);
...
SearchAdapter adapter = new SearchAdapter(results);
setListAdapter(adapter);

最佳答案

我遇到了与上述相同的问题 - 动画被应用于 ListView 标题以及列表行。我在 this answer 的帮助下解决了这个问题.我将标题的最外层 View (在我的例子中是 FrameLayout)子类化,并覆盖动画方法以不采取任何操作。例如:

list_header.xml:

<my.project.NonAnimatingFrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
...
>
<!-- other views in your header -->
...
</my.project.NonAnimatingFrameLayout>

package my.project

public class NonAnimatingFrameLayout extends FrameLayout {
...
@Override
public void setAnimation(Animation animation) {
// do nothing
}

您需要重写的动画方法因最外层 View 的类型而异。

关于android - 在不对标题应用动画的情况下为 ListView 设置动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21742805/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com