为什么不调用applyTransformation()

时间:2018-06-14 01:27:40

标签: java android

我在某个项目中需要一个TreeView。所以我简化了AndroidTreeView并遇到了这个问题:

private static void expand(final View view) {
    view.measure(LinearLayout.LayoutParams.MATCH_PARENT, 
         LinearLayout.LayoutParams.WRAP_CONTENT);
    final int targetHeight = view.getMeasuredHeight();

    view.getLayoutParams().height = 0/*1*/;
    view.setVisibility(View.VISIBLE);

    Animation expansion = new Animation() {
        @Override
        protected void applyTransformation(float interpolatedTime, 
                       Transformation t) {
            view.getLayoutParams().height = interpolatedTime == 1
                    ? LinearLayout.LayoutParams.WRAP_CONTENT
                    : (int)(targetHeight * interpolatedTime);
            view.requestLayout();
        }

        @Override
        public boolean willChangeBounds() { return true; }
    };
    expansion.setDuration((int)(targetHeight / 
    view.getContext().getResources().getDisplayMetrics().density));
    view.startAnimation(expansion);
}

问题在于:

 view.getLayoutParams().height = 0/*1*/;

在原始代码中,height设置为0并使用动画展开。 在我的情况下,如果height设置为0,则不会调用applyTransformation()!所以我最终将它设置为1并且工作正常。 有原因吗? 提前致谢! 说实话,我可能会导致不同的viewgroup图层包装itemview,略有不同。我的代码已经解决here

0 个答案:

没有答案