2013-09-25 46 views
1

我想在ListViews中做類似iOS7的刪除行爲。即點擊一個 - 符號並將包含 - 符號的行動畫(轉換)到左邊的刪除按鈕將顯示的行。然後,如果用戶點擊另一行 - 在另一行上登錄,則舊行將回到其原始位置,新點擊的行將轉化爲左側,顯示刪除按鈕。現在,在屏幕上顯示的行上執行此操作,但向下滾動列表或向上滾動列表,以及在向右移動之前不會生成動畫的隨機視圖(取消刪除時的效果)沒有任何問題。我知道這是因爲視圖回收。我已經嘗試了很多次,打開了保存位置(顯示刪除按鈕)行,將標籤設置爲打開/關閉,但沒有成功,我仍然沒有觸及到動畫的行。我曾與代碼你錯過,所以如果我發佈它,它不會反映問題:(,所以請我真的很感激任何幫助Android的Listview回收利用動畫行

PS:我使用view.animate().translateXBy([width of delete button])propertyAnimator

回答

1

前。動畫開始告訴列表視圖不回收的觀點

view.setHasTransientState(true); 

view.setHasTransientState(false); 
+0

這需要API等級16 ,截至2014年第一季度,我認爲這是IMO的過早 – CQM

1

有點晚,但也許這可以幫助索姆ebody,我實際上做這在getView方法和工作正常,這個樣本是一次運行多個anims,但仍容易修改它的一個簡單的動畫:

private void translationY(View convertView) { 
    ObjectAnimator anim1 = ObjectAnimator.ofFloat(convertView, View.TRANSLATION_Y, 400f, 0f); 
    anim1.setDuration(TRANSLATION_Y_DURATION); 

    ObjectAnimator anim2 = ObjectAnimator.ofFloat(convertView, View.ALPHA, 0f, 1f); 
    anim2.setDuration(FADE_IN_DURATION); 

    startAnimation(anim1, anim2); 
} 

private void startAnimation(Animator... items){ 
    AnimatorSet set = new AnimatorSet(); 
    set.playTogether(items); 
    set.start(); 
}