我有一個RecyclerView,其中包含一個藝術家列表。藝術家可以被標記爲最喜歡的或不是最喜歡的。Android - TransitionDrawable在開始繪製時以'結束'狀態閃爍開始
有一顆心代表這種狀態,並且我有一個可以繪製的過渡,我從一個輪廓的心臟到一個充滿的心臟,如果相關藝術家被標記爲最愛。當用戶點擊心臟時,動畫本身工作正常,並且在兩者之間平滑過渡,並且看起來很漂亮。
TransitionDrawable td = new TransitionDrawable(new Drawable[]{
ContextCompat.getDrawable(getActivity(), R.drawable.favorite_border),
ContextCompat.getDrawable(getActivity(), R.drawable.favorite)});
artistViewHolder.image.setImageDrawable(td);
if (artist.isFavorite()) {
td.startTransition(0);
}
在onclick用於該項目時,我打電話或者.reverseTransition(300)或.startTransition(300),這取決於下一個狀態。
我在任何時候創建視圖(第一屏幕加載)時遇到問題,我需要從第二個位置開始(最喜歡)。儘管我的動畫時間在創建時設置爲0,但您可以看到它的初始加載從空心到閃爍的心臟閃爍。這種情況也會在列表失效時發生,例如,如果它被過濾爲一小部分藝術家。
我猜想,因爲它需要做的事情,並不是實際上只是設置drawable,0實際上並不是「即時」。但是我找不到任何其他方式在「結束」位置開始,除了在可轉換繪製本身中顛倒圖像的起始位置。
如果我這樣做,啓動/反向將以不同的心態爲基礎。充其量,我需要擴展可繪製的轉換,並覆蓋啓動/反轉/重置方法,以考慮它處於哪個初始狀態,並且這看起來有點怪異?
我是否錯過了一些顯而易見的東西,但不會導致閃爍?
謝謝!
這就是我所做的最後做做到這一點,但它需要我的回答完全工作,因爲啓動/反轉成爲你考慮的邊界翻轉關閉和最喜歡的完成。 – Ben987654