首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ChangeBounds安卓转型

ChangeBounds安卓转型
EN

Stack Overflow用户
提问于 2017-05-26 10:34:48
回答 2查看 3.9K关注 0票数 2

我的应用程序中有一个回收视图,每一行都包含一个按钮,该按钮在按钮下面的同一单元格中显示文本。我已经使用ChangeBounds转换使文本以平滑的动画出现,增加了行高,直到文本完全显示。所以当一个按钮被点击时,我会:

代码语言:javascript
复制
 TransitionManager.beginDelayedTransition(row, transition)
 holder.hiddenText.setVisibility(View.VISIBLE)

它工作得很好,但有问题。隐藏的文本显示的动画,它增加了它的高度,如预期。但是行高不是动画,它从原来的高度跳到最后的高度,没有任何动画。

是否有任何方法来实现对行的高度过渡,同时增加文本?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-29 10:42:43

如果您也希望动画对row生效,那么您需要在row的一个较高层上执行beginDelayedTransition(),在您的示例中,这可能是实际的RecyclerView

票数 3
EN

Stack Overflow用户

发布于 2017-05-26 10:41:10

在你的行布局上试试这个

代码语言:javascript
复制
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);
}

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44199377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档