gpt4 book ai didi

Android:如何先隐藏再显示带动画效果的View?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:07:13 28 4
gpt4 key购买 nike

我有类似的问题:Update layout with the animation

基本上:我有一个垂直的 LinearLayout View ,带有编辑文本、按钮和列表。我想在按下按钮后隐藏 exittext 以便为列表腾出更多空间(按钮会上升)。第二次按下 edittext 应该再次可见。 Edittext 和按钮具有“wrap_content”高度。

我想用动画隐藏和显示编辑文本。

我通过重载 Animation 的 applyTransformation 成功实现了隐藏动画:

final float edittextheight= edittext.getHeight();
[....]
@Override
protected void applyTransformation(float interpolatedTime,
Transformation t)
{
super.applyTransformation(interpolatedTime, t);
android.view.ViewGroup.LayoutParams lp = edittext.getLayoutParams();
lp.height = (int)(edittextheight*(1.0-interpolatedTime));
edittext.setLayoutParams(lp);
}

问题:

我不知道如何计算高度以动画显示 - edittext.getHeight();当小部件被隐藏并且在布局定义中我使用“wrap_content”时返回 0。

帮忙吗?

最佳答案

在 Activity 完成绘制之前,您无法获取 edittext 的高度。所以你可以通过在你的编辑文本上添加 onpredrawListner 来获得它。

ViewTreeObserver treeObserver = edittext.getViewTreeObserver();
treeObserver.addOnPreDrawListener(new OnPreDrawListener() {
public boolean onPreDraw() {
int height = edittext.getHeight();
ViewTreeObserver removeTreeObserver = edittext.getViewTreeObserver();
removeTreeObserver.removeOnPreDrawListener(this);
}
}

现在你得到了高度,应用你想要的任何动画。

关于Android:如何先隐藏再显示带动画效果的View?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2495812/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com