Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 显示时为Listview的每个项目设置动画_Java_Android_Android Listview_Android Animation - Fatal编程技术网

Java 显示时为Listview的每个项目设置动画

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

我正在尝试以一种方式显示listview元素,使它们中的每一个都动画化,然后变得可见,这样,在一个接一个地动画化之后,它们就会对用户可见。 但当我实现动画时,它不是针对单个项目,而是针对整个listview:(

如何在列表视图的每个元素上逐个制作动画。我是extend ArrayAdapter。

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);
  }
});