Ale*_*lav 210 animation android listview
在iOS中,有一个非常简单和强大的工具来动画添加和删除UITableView行,这里是来自youtube视频的剪辑,显示默认动画.请注意周围行如何折叠到已删除的行上.此动画可帮助用户跟踪列表中的更改以及数据更改时列表中的位置.
自从我在Android上开发以来,我发现没有相同的工具来动画TableView中的各个行.调用notifyDataSetChanged()我的适配器会导致ListView立即使用新信息更新其内容.我希望在数据发生变化时显示一个新行推入或滑出的简单动画,但我找不到任何记录的方法来执行此操作.看起来LayoutAnimationController可能包含一个键来使其工作,但是当我在ListView上设置LayoutAnimationController(类似于ApiDemo的LayoutAnimation2)并在列表显示后从我的适配器中删除元素时,元素立即消失而不是被动画化.
我还尝试过以下内容来删除单个项目时的动画:
@Override
protected void onListItemClick(ListView l, View v, final int position, long id) {
Animation animation = new ScaleAnimation(1, 1, 1, 0);
animation.setDuration(100);
getListView().getChildAt(position).startAnimation(animation);
l.postDelayed(new Runnable() {
public void run() {
mStringList.remove(position);
mAdapter.notifyDataSetChanged();
}
}, 100);
}
Run Code Online (Sandbox Code Playgroud)
但是,动画行周围的行不会移动位置,直到它们在notifyDataSetChanged()调用时跳转到新位置.一旦放置了元素,ListView就不会更新它的布局.
虽然编写我自己的ListView实现/分支已经超出了我的想法,但这看起来似乎不应该那么困难.
谢谢!
小智 124
Animation anim = AnimationUtils.loadAnimation(
GoTransitApp.this, android.R.anim.slide_out_right
);
anim.setDuration(500);
listView.getChildAt(index).startAnimation(anim );
new Handler().postDelayed(new Runnable() {
public void run() {
FavouritesManager.getInstance().remove(
FavouritesManager.getInstance().getTripManagerAtIndex(index)
);
populateList();
adapter.notifyDataSetChanged();
}
}, anim.getDuration());
Run Code Online (Sandbox Code Playgroud)
从上到下动画使用:
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromYDelta="20%p" android:toYDelta="-20"
android:duration="@android:integer/config_mediumAnimTime"/>
<alpha android:fromAlpha="0.0" android:toAlpha="1.0"
android:duration="@android:integer/config_mediumAnimTime" />
</set>
Run Code Online (Sandbox Code Playgroud)
Eri*_*ric 14
在RecyclerView需要添加,删除,并重新排序动画的呵护!

这个简单的AndroidStudio项目有一个RecyclerView.看看提交:
| 归档时间: |
|
| 查看次数: |
106719 次 |
| 最近记录: |