我在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>
答案 0 :(得分:0)
我建议使用Property Animation API而不是真正的旧的AnimationUtils。
它可以产生非常流畅的动画效果,但只能从Android级别11开始。
如果您需要较低版本,可以使用名为nineoldandroids
的库