自定义动画 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);
}
}
我尝试实现与 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);
}
}