0
我知道,我必須在動畫之後重新定位實際視圖,以便在之後使其可點擊。我發現的解決方案是使用視圖的.layout(l,t,r,b)方法。動畫後的Android位置按鈕(view.layout())
但現在發生的情況是,該視圖向上150px正確動畫,但然後(當調用上述方法時)跳過另一個150px。所以我的觀點中的「hitbox」現在就是我所期望的,但是我的視圖的渲染圖像在它之上。
通過點擊hitbox,視圖開始動畫150px,然後再跳150px。
下面是兩張圖片來說明我的問題。第二個圖像展示了它在「向上動畫」之後的樣子。紅色矩形顯示我想要圖像的位置。
前:
後:
這裏是重要的代碼行:
animSlideUpButton = new TranslateAnimation(Animation.ABSOLUTE, 0, Animation.ABSOLUTE, 0, Animation.ABSOLUTE, 0, Animation.ABSOLUTE, -150);
animSlideDownButton = new TranslateAnimation(Animation.ABSOLUTE, 0, Animation.ABSOLUTE, 0, Animation.ABSOLUTE, -150, Animation.ABSOLUTE, 0);
animSlideUpButton.setDuration(1000);
animSlideDownButton.setDuration(1000);
animSlideUpButton.setFillAfter(true);
animSlideDownButton.setFillAfter(true);
animSlideUpButton.setAnimationListener(this);
animSlideDownButton.setAnimationListener(this);
監聽器:
@Override
public void onAnimationEnd(Animation animation) {
if(animation == animSlideUpButton){
int left = containerBttToggleFooter.getLeft();
int top = containerBttToggleFooter.getTop();
int right = containerBttToggleFooter.getRight();
int bottom = containerBttToggleFooter.getBottom();
containerBttToggleFooter.layout(left, top-150, right, bottom-150);
}else if(animation == animSlideDownButton){
int left = containerBttToggleFooter.getLeft();
int top = containerBttToggleFooter.getTop();
int right = containerBttToggleFooter.getRight();
int bottom = containerBttToggleFooter.getBottom();
containerBttToggleFooter.layout(left, top+150, right, bottom+150);
}
}
任何想法?
謝謝,這就是它!但是現在在重置視圖的動畫和我在onEndAnimation-Listener中設置新的佈局之間有一點點閃爍。 – Mazen 2015-02-10 14:47:40
嘗試在onAnimationEnd方法的視圖上添加對clearAnimation()的調用。 – 2015-02-10 15:58:21