滑动列表第一次查看动画太快 - Android

时间:2014-05-21 16:07:52

标签: android listview button slider views

我已经在java中为listview实现了一个动画,就像你单击一个列表项时一样,一个视图向下滑动,两个按钮在点击时执行单独的选项,再点击一次,它向上滑动制作列表item看起来很正常(它确实上下推动其他项目)所以这个动画的持续时间已经设置为500,这样就可以顺利进行。

但是,问题是第一次单击列表项会显示动画太快(在第一次点击它之后再次平滑) 这对所有列表项都是一样的。

我尝试了很多来解决这个问题。我将让你看看我的动画类和我的onitemclicklistener。

(问题2: - 第一个是更多的影响,但如果你能解决这个问题,那就去了) 还有一个问题,对不起,但忘记动画一秒钟,当视图向下滑动并向下滚动时,你无法看到列表项,现在当你回到列表项时是' nt扩展了(滑出),这是因为视图的回收,但我怎么能绕过这个

动画类: -

import android.util.Log;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.Transformation;
import android.widget.LinearLayout;

public ExpandCollapseAnimation(View view, int type) {

    setDuration(500);



    mAnimatedView = view;
    mEndHeight = mAnimatedView.getMeasuredHeight();
    mLayoutParams = ((LinearLayout.LayoutParams) view.getLayoutParams());
    mType = type;
    if(mType == EXPAND) {
        setDuration(500);

        mLayoutParams.bottomMargin = -mEndHeight;
    } else {

        setDuration(500);

        mLayoutParams.bottomMargin = 0;
    }
    view.setVisibility(View.VISIBLE);
}

@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
    setDuration(500);

    super.applyTransformation(interpolatedTime, t);
    if (interpolatedTime < 1.0f) {
        if(mType == EXPAND) {
            setDuration(500);
            mLayoutParams.bottomMargin =  -mEndHeight + (int) (mEndHeight * interpolatedTime);
        } else {
            setDuration(500);
            mLayoutParams.bottomMargin = - (int) (mEndHeight * interpolatedTime);
        }
        Log.d("ExpandCollapseAnimation", "anim height " + mLayoutParams.bottomMargin);

        mAnimatedView.requestLayout();
    } else {
        if(mType == EXPAND) {
            setDuration(500);
            mLayoutParams.bottomMargin = 0;
            mAnimatedView.requestLayout();
        } else {
            setDuration(500);
            mLayoutParams.bottomMargin = -mEndHeight;
            mAnimatedView.setVisibility(View.GONE);
            mAnimatedView.requestLayout();
        }
    }
}

}

实施: -

            listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, final View view, int position, long id) {

                View toolbar = view.findViewById(R.id.toolbar);
                if(toolbar.getVisibility() == View.GONE){
                    ExpandCollapseAnimation expandAni = new ExpandCollapseAnimation(toolbar, 0);
                    toolbar.startAnimation(expandAni);
                }else if(toolbar.getVisibility() == View.VISIBLE){
                    ExpandCollapseAnimation expandAmi = new ExpandCollapseAnimation(toolbar, 1);
                    toolbar.startAnimation(expandAmi);
                }



            }
        });

1 个答案:

答案 0 :(得分:0)

解决了,只是要使用ExpandableSlidingListview库,但我觉得它使用了很多ram,所以这个问题仍然存在。 :d