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

标签 android animation layout hide

我有类似的问题: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/

相关文章:

java - 如何获取 tessbase.init 中需要使用的目录 ("directory", "eng")?

android - 解析 XML 时出错 :unbound prefix

android - 负 marginTop 在 Android 上没有按预期工作,在 iOS 上工作正常

language-agnostic - Qt 小部件覆盖

html - css中的半动态内容背景

android - RxJava Observable 从不执行 onCompleted

java - 将一段声音保存为铃声

android - 如何从 android 中的 ArrayList<Integer> 中删除特定数据

ios - 像 Periscope 应用程序一样的 UIView 动画

Java 图形 : setClip vs clipRect vs repaint(int, 整数、整数、整数)