android中带有saperate cells动画的动画下拉列表

android中带有saperate cells动画的动画下拉列表,android,animation,drop-down-menu,android-animation,Android,Animation,Drop Down Menu,Android Animation,我需要一个带有动画的下拉列表来像这样打开/关闭。 它需要带有单元格的动画。您可以在下面的动画图像中看到这一点 如果有人有与此解决方案相关的想法或教程,请与我分享。 提前谢谢。 如果您有任何问题或疑问,请随时问我。 我真的很想找到正确的解决方案。您可以使用自定义的展开和折叠动画来显示和隐藏视图。在俯视图上单击,展开并折叠所需视图。为此,必须首先计算视图的高度。 展开和折叠动画功能如下所示 扩展 /** * Expanding a view with animation based on

我需要一个带有动画的下拉列表来像这样打开/关闭。 它需要带有单元格的动画。您可以在下面的动画图像中看到这一点

如果有人有与此解决方案相关的想法或教程,请与我分享。 提前谢谢。 如果您有任何问题疑问,请随时问我。
我真的很想找到正确的解决方案。

您可以使用自定义的展开和折叠动画来显示和隐藏视图。在俯视图上单击,展开并折叠所需视图。为此,必须首先计算视图的高度。 展开和折叠动画功能如下所示

扩展

/**
     * Expanding a view with animation based on its height
     */
    public static void expand(final View v,final int targetHeight) {
        v.measure(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);

        v.getLayoutParams().height = 0;
        v.setVisibility(View.VISIBLE);
        Animation a = new Animation()
        {
            @Override
            protected void applyTransformation(float interpolatedTime, Transformation t) {
                v.getLayoutParams().height = interpolatedTime == 1
                        ? targetHeight
                        : (int)(targetHeight * interpolatedTime);
                v.requestLayout();
            }

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

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

/**
 * Collapsing a view with animation based on its height
 */
public static void collapse(final View v,final int initialHeight)
{

    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;
        }
    };

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

此外,您可以在本教程之后使用可扩展的listview,感谢您在@atifali的回答。我会试试看,然后告诉你们结果。