动画(充值和自上而下)不顺畅

时间:2015-11-18 13:51:40

标签: android animation

我在LinearLayout之上ListView。当我向下滚动列表时,我希望LinearLayout消失,顶部动画给出列表空间。此外,当我向上滚动列表时,我希望LinearLayout再次显示自上而下的动画。

这是我正在使用的代码,但动画并不流畅:

XML -

<LinearLayout
    android:id="@+id/choicelayout"
    android:layout_width="250dp"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:orientation="horizontal">
.
.
.
</LinearLayout>


<ListView
    android:id="@android:id/list"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/choicelayout"
    android:divider="@null"
    android:paddingBottom="10dp"
    android:clipToPadding="false"
    android:scrollbarStyle="outsideOverlay"
    android:dividerHeight="0dp" />

片段

    topup = AnimationUtils.loadAnimation(mActivity.getApplicationContext(), R.anim.top_up);
    topdown=AnimationUtils.loadAnimation(mActivity.getApplicationContext(),R.anim.top_down);

    mListView.setOnScrollListener(new AbsListView.OnScrollListener() {
        private int mLastFirstVisibleItem;

        @Override
        public void onScrollStateChanged(AbsListView view, int scrollState) {

        }

        @Override
        public void onScroll(AbsListView view, int firstVisibleItem,
                             int visibleItemCount, int totalItemCount) {

            if (mLastFirstVisibleItem < firstVisibleItem) {
                if(mChoiceLayout.getVisibility()==View.VISIBLE) {
                    mChoiceLayout.startAnimation(topup);
                    mChoiceLayout.setVisibility(View.GONE);
                }
            }
            if (mLastFirstVisibleItem > firstVisibleItem) {
                if(mChoiceLayout.getVisibility()==View.GONE) {
                    mChoiceLayout.startAnimation(topdown);
                    mChoiceLayout.setVisibility(View.VISIBLE);
                }
            }
            mLastFirstVisibleItem = firstVisibleItem;

        }
    });

充值动画

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromYDelta="0%" android:toYDelta="-100%" android:duration="500"/>
</set>

自上而下动画

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromYDelta="-100%" android:toYDelta="0%" android:duration="500"/>
</set>

1 个答案:

答案 0 :(得分:0)

我建议使用Property Animation API而不是真正的旧的AnimationUtils。

它可以产生非常流畅的动画效果,但只能从Android级别11开始。

如果您需要较低版本,可以使用名为nineoldandroids

的库