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>