具有动画可见性切换的自定义ListView

时间:2013-11-05 13:31:03

标签: android listview android-listview android-animation

我有一个自定义列表视图,其中包含大量文本..我希望当我点击ListView时,其他文本将显示在单击的行下...我设法将此文本设置为GONE in custom_row.xml然后在ClickListener中将它设置为VISIBLE ..但是这太毛刺了所以我想制作像JQUERY的盲目节目那样的切换动画...

enter image description here

如何在Android中使用动画制作?

2 个答案:

答案 0 :(得分:0)

您可以创建自己的动画并更改项目的高度,例如:

public class ExpandAnimation extends Animation {
...
    @Override
    protected void applyTransformation(float interpolatedTime, Transformation t) {
       super.applyTransformation(interpolatedTime, t);
        if (interpolatedTime < 1.0f) {
            viewLayoutParams.height = heightStart + 
                    (int) (( heightEnd - heightStart) * interpolatedTime);
            animatedView.requestLayout();
        }
    }
}

并在点击项目时将此动画设置为项目。

答案 1 :(得分:0)

使用ValueAnimator将ListView的高度从0更改为最终高度。

你可以找到一个非常好的例子in this tutorial

代码如下:

ValueAnimator animator = ValueAnimator.ofInt(intialHeight, finalHeight);    
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
    @Override
    public void onAnimationUpdate(ValueAnimator v) {
        int value = (Integer) v.getAnimatedValue(); // get the most recent value calculated by the ValueAnimator 
        ViewGroup.LayoutParams lp = yourLayout.getLayoutParams(); // get the height of your ListView
        lp.height = value; //change the height
        mLinearLayout.setLayoutParams(layoutParams); //update it to the view
    }   
animator.start(); //start the animation