0

我想为ListView添加动画我正在使用getView()在列表中绘制一些视图。一切正常。Android ListView动画

public View getView(int position, View convertView, ViewGroup parent) { } 

我尝试添加动画时,对列表小区用户点击,那么所有列表中的小区应该左右滑动和新的数据应该来自于就在同一时间,意味着电池数据向左右移动,并同时新的数据来从右侧。

我已经实现下面的代码在OnItemClickListener

@Override 
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
    Animation slideOutAnimation=AnimationUtils.loadAnimation(this, R.anim.slide_out); 
    slideOutAnimation.setDuration(900); 

    Animation slideInAnimation=AnimationUtils.loadAnimation(this, R.anim.slide_in); 
    slideInAnimation.setDuration(500); 

    listView.startAnimation(slideOutAnimation); 

    new Handler().postDelayed(new Runnable() { 

    @Override 
    public void run() { 
     data = newData(); 
     listView.startAnimation(slideInAnimation); 
     myAdapterClass.notifyDataSetChanged(); 
    } 
    }, slideOutAnimation.getDuration()); 
} 
}; 

上面的代码工作,但没有得到期望的输出我得到一个空的观点而改变动画。

左滑动动画开始---空查看----右滑动动画开始

没有得到为什么空视图(显示而空屏)快到了,我与动画的时间和处理程序,但没有出场运气。

如何删除该空视图?如何实现这个输出?

向左滑动动画开始(数据移动)(从右边驶来同时数据)右滑动动画开始

+0

我试图与下面的代码slideOutAnimation.setAnimationListener(新Animation.AnimationListener(){ 公共无效onAnimationStart(动画为arg0){数据= newData(); listView.startAnimation(slideInAnimation); myAdapterClass。notifyDataSetChanged(); } 公共无效onAnimationRepeat(动画为arg0){ } 公共无效onAnimationEnd(动画为arg0){ } });它的剂量工作,它只显示左侧滑动,细胞文本消失,没有任何动画,并离开动画开始。 – Mac

回答

4

我尝试添加动画时,对列表小区用户点击,那么所有 列表中的小区应该左右滑动并且新数据应该同时来自 ,这意味着单元格数据正在向左移动,同时新的 数据来自右侧。

您的代码按预期工作,但它不会做你想要什么只是因为你使用一个ListView部件您第一次动画向左滑动​​,然后滑动动画第一动画结束之后。

尝试使用包含两个ListViewsViewFlipper(其中一个是可见的,另一个是新数据的另一个)。您可以设置在ViewFlipperinout动画)的动画,然后在列表项单击你会做:

@Override 
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
     data = newData(); 
     //set the data for the second list, which currently isn't visible 
     secondListViewAdapter.notifyDataSetChanged(); 
     viewFlipper().showNext(); //show the next list with animation 
} 
0

您可以通过编辑更改Android动画行为:fromXDelta或alpha值,

slideout.xml

<?xml version="1.0" encoding="utf-8"?> 

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <translate android:fromXDelta="-100%p" android:toXDelta="-100%p" android:duration="@android:integer/config_shortAnimTime"/> 

    <alpha android:fromAlpha="1.0" android:toAlpha="0.0" 
      android:duration="@android:integer/config_mediumAnimTime" /> 
</set> 

slidein.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <translate android:fromXDelta="-100%p" android:toXDelta="0" android:duration="@android:integer/config_shortAnimTime"/> 

    <alpha android:fromAlpha="0.0" android:toAlpha="1.0" 
      android:duration="@android:integer/config_mediumAnimTime" /> 
</set>