因此,我們試圖製作一個動畫,在FAB消失並打開工具欄之前移動FAB。問題是當我運行TranslationAnimation時,FAB消失,然後從屏幕滑出。 fromxDelta和FromDelta從來沒有像我期望的那樣行事。翻譯動畫從屏幕開始而不是它所屬的位置
任何人都可以指出我做錯了什麼或幫助我瞭解這個調用的工作原理嗎?
private void circularReveal(View toolbar, View fab) {
final View view1 = toolbar;
// get the center for the clipping circle
int cx = (toolbar.getLeft() + toolbar.getRight())/2;
int cy = (toolbar.getTop() + toolbar.getBottom())/2;
// get the final radius for the clipping circle
int finalRadius = Math.max(toolbar.getWidth(), toolbar.getHeight());
// create the animator for this view (the start radius is zero)
final SupportAnimator anim = ViewAnimationUtils.createCircularReveal(toolbar, cx, cy, 0, finalRadius);
//todo create an animation to move the fab.
TranslateAnimation translateAnimation = new TranslateAnimation(Animation.ABSOLUTE, 0f,
Animation.ABSOLUTE , -100f,
Animation.ABSOLUTE , 0f,
Animation.ABSOLUTE , -100f);
translateAnimation.setDuration(2000L);
translateAnimation.setFillAfter(true);
Animation.AnimationListener animationListener = new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
view1.setVisibility(View.VISIBLE);
anim.start();
}
@Override
public void onAnimationRepeat(Animation animation) {
}
};
translateAnimation.setAnimationListener(animationListener);
fab.startAnimation(translateAnimation);
}
編輯我的代碼片段清理了一些變量名。
你怎麼稱呼這個方法? circularReveal(fab,toolbar); ?因爲您在名爲工具欄的視圖上應用translateAnimation。 –
該方法是從 onClickListener調用的,該onClickListener在片段onCreatView()上的Fab上設置。 –