Java 显示时为Listview的每个项目设置动画
我正在尝试以一种方式显示listview元素,使它们中的每一个都动画化,然后变得可见,这样,在一个接一个地动画化之后,它们就会对用户可见。 但当我实现动画时,它不是针对单个项目,而是针对整个listview:( 如何在列表视图的每个元素上逐个制作动画。我是extend ArrayAdapter。Java 显示时为Listview的每个项目设置动画,java,android,android-listview,android-animation,Java,Android,Android Listview,Android Animation,我正在尝试以一种方式显示listview元素,使它们中的每一个都动画化,然后变得可见,这样,在一个接一个地动画化之后,它们就会对用户可见。 但当我实现动画时,它不是针对单个项目,而是针对整个listview:( 如何在列表视图的每个元素上逐个制作动画。我是extend ArrayAdapter。int delay=(position list.getFirstVisiblePosition)*200; int delay=(position-list.getFirstVisiblePositi
int delay=(position list.getFirstVisiblePosition)*200;
int delay=(position-list.getFirstVisiblePosition)*200;
if(delay<=200)
delay=200;
animation.setStartOffset(delay);
如果(延迟您可以在列表视图上应用android:layoutimation
- 在
anim
文件夹中创建动画XML文件。例如(slide\u right\u in.XML
):
- 将其应用于所需的任何
ViewGroup
。例如ListView
:
<ListView
android:layoutAnimation = "@anim/my_layout_animation"
... />
在搞乱了我自己的动画实现后,我发现这正是我所需要的
这是他们在Google Play上的API演示应用程序:这是一个
编辑:
其想法是创建一个侦听器并在其中设置视图动画:
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView,final View view, final int position,
long id) {
anim.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {}
@Override
public void onAnimationEnd(Animation animation) {
ItemDetail item = aAdpt.getItem(position);
aAdpt.remove(item);
}
});
view.startAnimation(anim);
}
});
lv.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(适配器视图适配器视图,最终视图视图,最终整型位置,
长id){
anim.setAnimationListener(新的Animation.AnimationListener(){
@凌驾
onAnimationStart上的公共无效(动画){
}
@凌驾
公共无效onAnimationRepeat(动画){}
@凌驾
onAnimationEnd上的公共无效(动画){
ItemDetail item=aAdpt.getItem(位置);
aAdpt.移除(项目);
}
});
视图。startAnimation(动画);
}
});
这会导致应用程序crash@Postback让我知道您得到的崩溃类型(stacktrace)刚刚尝试了这个代码,然后我又把它取出来了。所以无法向您提供详细信息。当我用listView打开活动时,应用程序crashed@Postback我已经在我的应用程序中多次使用了这段代码,效果很好。你可以参考关于布局动画的文档,或者发布你的堆栈跟踪。很简单,很好。你能添加一些解释吗?
<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
android:animation="@anim/slide_right_in"
android:delay="0.5"/>
<ListView
android:layoutAnimation = "@anim/my_layout_animation"
... />
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView,final View view, final int position,
long id) {
anim.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {}
@Override
public void onAnimationEnd(Animation animation) {
ItemDetail item = aAdpt.getItem(position);
aAdpt.remove(item);
}
});
view.startAnimation(anim);
}
});