今天在使用TranslateAnimation位移一個LinearLayout時,發現動畫完成後又會自動回到初始的狀態,設置了fillAfter也不太管用。
在網上搜了一圈,發現:
這種現象很正常,因為TranslateAnimation只負責實現位移動畫效果,並不會真正的改變LinearLayout的位置,所以需要加一個AnimationListener ,在動畫結束(onAnimationEnd() )後,通過設置LayoutParam裡相關屬性來改變LinearLayout位置才行。
- @Override
- protected void onAnimationEnd() {
- super.onAnimationEnd();
- FrameLayout.LayoutParams ll = new FrameLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.FILL_PARENT);
- ll.setMargins(-50, 0, 0, 0);
- main_layout.setLayoutParams(ll);
- }