ChangeBounds Android Transition

问题描述 投票:2回答:2

我的应用程序中有一个recyclerview,每行包含一个按钮,该按钮在按钮下显示同一单元格中的文本。我使用了ChangeBounds过渡来使文本以平滑动画显示,增加行高,直到文本完全显示。所以当点击一个按钮时,我会:

 TransitionManager.beginDelayedTransition(row, transition)
 holder.hiddenText.setVisibility(View.VISIBLE)

它运作良好,但有问题。隐藏文本会出现一个动画,可以按预期增加其高度。但行高度没有动画,它从原始高度跳到最终高度,没有任何动画。

有没有办法在行上实现高度转换,与文本同时增加?

android animation android-animation android-view android-transitions
2个回答
2
投票

如果你想让动画对row生效,那么你需要在beginDelayedTransition()的一层上执行row,在你的情况下可能是实际的RecyclerView


0
投票

在你的行的布局上试试这个

public static void expand(final View v) {
    v.measure(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
    final int targetHeight = v.getMeasuredHeight();

    // Older versions of android (pre API 21) cancel animations for views with a height of 0.
    v.getLayoutParams().height = 1;
    v.setVisibility(View.VISIBLE);
    Animation a = new Animation()
    {
        @Override
        protected void applyTransformation(float interpolatedTime, Transformation t) {
            v.getLayoutParams().height = interpolatedTime == 1
                    ? LayoutParams.WRAP_CONTENT
                    : (int)(targetHeight * interpolatedTime);
            v.requestLayout();
        }

        @Override
        public boolean willChangeBounds() {
            return true;
        }
    };

    // 1dp/ms
    a.setDuration((int)(targetHeight / v.getContext().getResources().getDisplayMetrics().density));
    v.startAnimation(a);
}

行的线性或相对布局将设置动画和扩展。希望这能解决你的问题

© www.soinside.com 2019 - 2024. All rights reserved.