相关疑难解决方法(0)

Android:展开/折叠动画

假设我有一个垂直linearLayout:

[v1]
[v2]
Run Code Online (Sandbox Code Playgroud)

默认情况下,v1具有visibily = GONE.我想用扩展动画展示v1并同时向下推v2.

我试过这样的事情:

Animation a = new Animation()
{
    int initialHeight;

    @Override
    protected void applyTransformation(float interpolatedTime, Transformation t) {
        final int newHeight = (int)(initialHeight * interpolatedTime);
        v.getLayoutParams().height = newHeight;
        v.requestLayout();
    }

    @Override
    public void initialize(int width, int height, int parentWidth, int parentHeight) {
        super.initialize(width, height, parentWidth, parentHeight);
        initialHeight = height;
    }

    @Override
    public boolean willChangeBounds() {
        return true;
    }
};
Run Code Online (Sandbox Code Playgroud)

但是使用这个解决方案,动画开始时我会闪烁.我认为这是由v1在应用动画之前显示完整大小引起的.

使用javascript,这是一行jQuery!用android做任何简单的方法吗?

animation android

435
推荐指数
18
解决办法
26万
查看次数

即使在从GONE变为VISIBLE之前,也可以准确地确定视图的测量高度

目前,我的布局看起来像这样.它包含.

  • 标题文本视图和价格文本视图,始终可见.
  • 说明文本视图,可以显示或消失,具体取决于展开或折叠.

折叠(在应用启动期间)

在此输入图像描述

扩展(当用户点击它时)

在此输入图像描述

我希望周围有一些不错的动画.所以,我提到了/sf/answers/936685991/

其中一个关键因素是,即使在可见之前,也要知道描述文本视图的确切高度.

但是,我意识到了一些类型的代码.他们不准确

// v is description text view.
v.measure(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
final int targtetHeight = v.getMeasuredHeight();
Run Code Online (Sandbox Code Playgroud)
// v is description text view.
v.measure(MeasureSpec.makeMeasureSpec(LayoutParams.MATCH_PARENT, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(LayoutParams.WRAP_CONTENT, MeasureSpec.EXACTLY));
final int targtetHeight = v.getMeasuredHeight();
Run Code Online (Sandbox Code Playgroud)

这将返回值32.(正确的测量高度假设为92).这是第一行文本的高度.这最终我的动画结束了

在此输入图像描述

我是否知道,确定视图的测量高度的正确方法是什么,甚至在它从GONE变为VISIBLE之前?

我的布局代码如下:

        <LinearLayout
            android:clickable="true"
            android:id="@+id/chart_linear_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:background="@drawable/dummy"
            android:orientation="vertical">
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="10dp"
                android:orientation="horizontal">
                <TextView
                    android:layout_width="0dp"
                    android:width="0dp"
                    android:layout_weight="0.6"
                    android:layout_height="match_parent"
                    android:gravity="left"
                    android:textSize="20sp" 
                    android:textColor="#ff000000"
                    android:text="Summary chart" />
                <TextView
                    android:id="@+id/chart_price_text_view"
                    android:layout_width="0dp"
                    android:width="0dp"
                    android:layout_weight="0.4"
                    android:layout_height="match_parent"
                    android:gravity="right"
                    android:textSize="20sp" 
                    android:textColor="#ffF76D3C"
                    android:text="$2.99" /> …
Run Code Online (Sandbox Code Playgroud)

android

11
推荐指数
1
解决办法
2万
查看次数

标签 统计

android ×2

animation ×1