我正在嘗試使用TranslateAnimation爲按鈕的位置設置動畫。我已經在多個地方讀過,實際按鈕的移動方式和可繪製的方式是在動畫之後改變其佈局。我已經做了,但我碰到的兩個問題/解決方案:翻譯按鈕並使其保持不變
要麼我添加setFillAfter(真)。這是很好的,因爲drawable在動畫之後仍然存在,但是當佈局被改變時,drawable從應該在的位置偏移平移距離,而按鈕的空白框架現在應該是它的位置。
添加setFillAfter(false)。這樣做,然後在動畫工作之後設置佈局,但圖標會閃爍,我認爲這是動畫結束和新佈局參數刷新屏幕之間的延遲。我目前使用這個代碼,但閃光燈是不可接受的,所以我想找到一個解決方案來解決它。
這裏是目前我的代碼:
final View aniView = v; // v is some view
TranslateAnimation ani = new TranslateAnimation(0,
240 - v.getLeft() - v.getWidth()/2,
0,
240 - v.getTop() - v.getHeight()/2);
ani.setDuration(500);
ani.setFillAfter(false);
ani.setAnimationListener(new AnimationListener() {
public void onAnimationEnd(Animation a) {
aniView.setTag(new Boolean(true));
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(aniView.getWidth(),
aniView.getHeight());
params.leftMargin = 240 - aniView.getWidth()/2;
params.topMargin = 240 - aniView.getHeight()/2;
aniView.setLayoutParams(params);
}
public void onAnimationStart(Animation a) {}
public void onAnimationRepeat(Animation a) {}
});
v.animationStart(ani);