我在RelativeLayout中有兩個視圖,它們都填滿了屏幕,所以視圖B位於視圖A的頂部。我還定義了一個動畫,可以將視圖B部分移到屏幕外顯示在底下查看A.動畫效果很好,但我有一個經典問題,即視圖邊界不隨視圖移動,因此我用來觸發動畫的按鈕(位於視圖B上)只能從其原始位置點擊,而不是問題B位於哪裏。我遇到的問題是,在動畫結束後,當我設置佈局參數時,它將導致視圖B再次被重新繪製,從動畫結束位置開始翻譯。作爲一個具體的例子,視圖B的左邊緣最初在x = 0處,在x = 450處有按鈕。當按下按鈕時,動畫將視圖移動到x = -400。此功能正常工作 - 視圖部分偏離屏幕左側,並且該按鈕現在位於x = 50處,因此它仍在屏幕上。按鈕的點擊區域雖然仍是在x = 450。所以,現在我設定的佈局PARAMS的觀點B:移動Android視圖點擊動畫後的邊界
RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) viewB.getLayoutParams();
lp.rightMargin = 400;
viewB.setLayoutParams(lp);
一旦新PARAMS設置,視圖得到填充400像素右側,移動整個視圖到x = -800。雖然按鈕的可點擊區域現在在x = 50處正確,所以看起來好像我可以讓它看起來正確或行爲正確。任何想法我做錯了什麼?這是如何設置動畫。
Animation anim = null;
anim = new TranslateAnimation(0, -400, 0, 0);
anim.setAnimationListener(this);
anim.setDuration(duration);
viewB.startAnimation(anim);