如何使用android中的动画将视图移动到屏幕中心

dus*_*usm 6 android relativelayout android-animation android-view

我想移动一个视图(在我的情况下 - 一个按钮,但它并不重要)到屏幕的中心.当我在没有动画的情况下进行移动时,它可以工作.但是,我很难决定我应该使用哪些动画,因为TranslateAnimation只允许我这样做,但指定了我没有的精确x,y坐标(尝试使用指标,但计算不起作用,我不想使用这种方法).

所以,这段代码没有动画:

RelativeLayout.LayoutParams parms2 = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
parms2.addRule(RelativeLayout.CENTER_VERTICAL);
parms2.addRule(RelativeLayout.CENTER_HORIZONTAL);
_buttonC.setLayoutParams(parms2);
Run Code Online (Sandbox Code Playgroud)

当我尝试添加动画时,它没有.

ObjectAnimator ani = ObjectAnimator.ofFloat(_buttonC, "Y", 2000);
ani.setDuration(4000);
ani.addListener(new AnimatorListenerAdapter()
{
    @Override
    public void onAnimationStart(Animator animation) {

        RelativeLayout.LayoutParams parms2 = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
        parms2.addRule(RelativeLayout.CENTER_VERTICAL);
        parms2.addRule(RelativeLayout.CENTER_HORIZONTAL);
        _buttonC.setLayoutParams(parms2);               
    }


    @Override
    public void onAnimationEnd(Animator animation)
    {

    }
});
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激 :)

Shi*_*e85 14

你有没有尝试过:

_buttonC.animate().translationX(parentCenterX - _buttonC.getWidth()/2).translationY(parentCenterY - _buttonC.getHeight()/2);
Run Code Online (Sandbox Code Playgroud)

当然,您必须计算父centerX和centerY:

float parentCenterX = parent.getX() + parent.getWidth()/2;
float parentCenterY = parent.getY() + parent.getHeight()/2;
Run Code Online (Sandbox Code Playgroud)

希望这会有所帮助.