發現裡面有個火車票的出票效果,發現可以優化下:
baseanimation內的仿出票效果
可是它的出的票的布局高度啥都是寫死的,通過這個思路,我便想到要做個類似於資料是通過網路獲取,高度不一定的listview的訂單出票效果。
一. 思路:
1)疊在布局上層的是訂單資訊,而在下層的就是訂單內選單的詳細條目,詳細條目的布局是置於布局最底層,並且在訂單資訊相對位置下方,這裡使用了framelayout來處 理 詳細條目布局。
2)出票的詳細條目列表採用了listview,它的動畫初始位置要通過計算listview的總高度進行計算獲取,之後通過translateanimation 進行animation動畫。
3)採用執行緒來模擬網路獲取延遲的效果。
二. 碰到解決的問題:
1)碰到乙個問題,就是如果資料一多,超過了一螢幕,在動畫過程中動畫銜接效果就很差,並有可能出現斷層效果。
解決:通過重寫listview,計算高度,並且在listview 外面巢狀了一層scrollview,這樣便可以解決這樣的問題。
2) 如果在訂單資訊布局下方直接放置乙個listview的話,這樣,動畫時候,listview就會蓋在訂單資訊上方。
解決:listview外層一定要巢狀一層布局,並且設定在訂單資訊下方,這樣便不會產生上述問題。
3)由於訂單底部
一開始就是出現的,並且在資料重新整理後跟隨listview一起下滑。
解決:採用listview的addfooterview(底部view)方法,把它新增到listview底部,在開始新增完畢後就直接初始化讓listview.setadapter(null);
這樣便在開始底部就顯示出來了。
4)如何去計算listview的總高度
解決:本demo採用了2種方式,
第一種:鑑於訂單中每個item的布局都是固定的,於是在布局中設定item的高度為固定值,之後乘以listadapter.getcount() 加上分割線listview.getdividerheight() 的總高度
第二種:如果每個item的布局是高度是不一定的話,就會造成影響,便找了一些資料,使用了以下方法:
/** listview 總高度 */
public static int totalheight = 0;
public static void setlistviewheightbasedonchildren(listview listview)
totalheight = 0;
// 由於add了個footer,所以總量減去1
log.d("listadapter.getcount()", "" + listadapter.getcount());
for (int i = 0, len = listadapter.getcount() - 1; i < len; i++)
totalheight = totalheight + (listview.getdividerheight() * (listadapter.getcount() - 1));
}
計算得到了總高度。
5)實現動畫效果
解決:
/**
* 啟動列印訂單動畫
*/private void startanimation()
@override
public void onanimationrepeat(animation animation)
@override
public void onanimationend(animation animation)
});clistview.startanimation(anim);
}
最後來看看動畫效果把:
由於是第一次寫部落格,有不足之處望各位大神提出意見和建議,共同進步。謝謝!
android 仿花椒送花效果
今天寫乙個單個的,明天寫乙個很多那種花向上運動的效果,單個的很簡單,就是繪製乙個二階或者三階貝塞爾曲線,然後不斷的去改變這個離曲線起點位置的值,就可以求出座標,這個都是api給我們提供好了的,我們只負責調就行,如果對path不熟悉的話,要先去看下path是怎麼回事,path是在繪製界是很重要的乙個類...
Android 仿電視關閉的退出效果
一 實現效果 1.要求螢幕瞬間黑屏。2.黑色螢幕以勻加速或勻減速向中間擠壓,直至一條白線後消失不見,整個過程大概200毫秒。3.露出黑漆漆一片的黑色背景。二 思路 很容易想到用動畫效果來做,本例子確實也是這樣做的。如果你想自己動手繼承乙個view去寫也沒問題,但是既然已經有現成的api了,就不需要重...
Android 仿愛奇藝Loading效果
這是乙個由基本圖形組成的loading效果圖,從圖上可以看出,整個效果分為兩個部分 1 三角形 2 圓環。當圓環轉動一圈時,三角形並未發生變化,當圓環轉動第二圈時,三角形隨圓環的消失而旋轉。有一定自定義view經驗的朋友一定知道,我們可以用畫筆畫出圓 矩形 扇形等基本圖形,也能通過path 路徑 來...