在Material Design中实现视图的动态调整大小

14

除了使用layoutParams之外,还有其他方法可以调整、折叠或扩展视图吗?我在一些新材料设计的视频和新的Android拨号应用程序中看到了动画效果。谷歌表示材料可以轻松地改变形状、大小、旋转、颜色等...但我找不到任何相关内容。

是否存在向后兼容性?

直到现在,为了调整、折叠或扩展视图,我们必须像这样使用layoutParams:

public static void collapse(final View v) {
final int initialHeight = v.getMeasuredHeight();

Animation a = new Animation()
{
    @Override
    protected void applyTransformation(float interpolatedTime, Transformation t) {
        if(interpolatedTime == 1){
            v.setVisibility(View.GONE);
        }else{
            v.getLayoutParams().height = initialHeight - (int)(initialHeight * interpolatedTime);
            v.requestLayout();
        }
    }

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

a.setDuration((int)(initialHeight / v.getContext().getResources().getDisplayMetrics().density));
v.startAnimation(a);

这是我想要的新版Google Android拨号应用程序的示例:

enter image description here

}

1个回答

8

使用 scaleY(..) 不会影响布局。只有项目的可见大小会改变,但视图在布局中占用的空间不会改变。 - Gareth
是的,PropertyValuesHolder 将是更好的选择。 - user3285324

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接