自定义动画 TextView,如 TextInputLayout 中的浮动标签

Custom animate TextView like the floating label present in TextInputLayout

我尝试实现与 TextInputLayout class 相同的浮动标签文本行为,但目的不同

除了 textview 的 x 翻译外,我的一切都正常工作。我不知道如何移动正确数量的像素。

它正确地向上移动并正确地缩小但没有直接向上移动,因为比例中心在文本视图的中间。但我希望文本视图直接向上移动。所以我的目的是计算文本的长度,也用比例值缩放它并将它除以 2(左和右)。这是行不通的。无论文本长度如何,有什么想法可以实现吗?

private void triggerAnimation(boolean fadeOut) {
    if (fadeOut) {
        float xTranslation = b.tvHint.getPaint().measureText(tvHint.getHint().toString())*0.6f/2;
        tvHint.animate().translationY(-tvHint.getHeight() * 0.28f).translationXBy(-xTranslation).scaleX(0.6f).scaleY(0.6f);
    } else {
        tvHint.animate().translationY(0).translationX(0).scaleX(1f).scaleY(1f);
    }
}

好的,事实证明可以更改坐标枢轴点,因此这将准确地重现浮动标签

private void triggerAnimation(boolean fadeOut) {
    if (fadeOut) {
        tvHint.setPivotX(0);
        tvHint.animate().translationY(-tvHint.getHeight() * 0.32f).scaleX(0.7f).scaleY(0.7f);
    } else {
        tvHint.animate().translationY(0).scaleX(1f).scaleY(1f);
    }

}