Joh*_*ler 31 android android-animation android-layout android-listview
我正在尝试使用以下方法动画删除ListView项:
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, final View view, final int i, long l) {
view.animate().setDuration(500).x(-view.getWidth()).alpha(0f);
adapter.remove(tasks.get(i));
adapter.notifyDataSetChanged();
}
});
Run Code Online (Sandbox Code Playgroud)
这是行不通的.我基本上遵循了这篇文章顶部第四个答案的建议:
然而,有一些有趣的绘图内容正在进行,或回收,或者某些东西,因为在动画发生时,屏幕滑落的项目下方的项目也会因某种原因被删除.不幸的是,问题提示者最终标记为正确的答案是整个Android来源的RTFM.我已经浏览了那里,我无法在JellyBean中找到我正在尝试模拟的通知下拉.
TIA.约翰
Ale*_*xey 38
想法:当用户选择行时我开始动画.动画完成后,我从适配器中删除该行.以下代码为所选行设置动画:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ListView listView = (ListView) findViewById(R.id.listView1);
final ArrayList<String> values = new ArrayList<String>();
values.add("Android");
values.add("iPhone");
values.add("WindowsMobile");
values.add("Blackberry");
values.add("Windows7");
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, android.R.id.text1, values);
listView.setAdapter(adapter);
final Animation animation = AnimationUtils.loadAnimation(this,
R.anim.slide_out);
animation.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
adapter.remove(adapter.getItem(selectedRow));
adapter.notifyDataSetChanged();
}
});
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Toast.makeText(getApplicationContext(),
" " + values.get(position), Toast.LENGTH_LONG).show();
view.startAnimation(animation);
selectedRow = position;
}
});
}
Run Code Online (Sandbox Code Playgroud)
slide_out.xml文件:
<?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="@android:integer/config_mediumAnimTime"/>
</set>
Run Code Online (Sandbox Code Playgroud)
Mic*_*ian 34
我刚刚找到了一个漂亮的解决方案:https://github.com/paraches/ListViewCellDeleteAnimation
这是视频:http://www.youtube.com/watch?v = bOl5MIti7n0
非常感谢'paraches';)
编辑
从Android版本22.0.0开始,新版本android.support.v7.widget.RecyclerView作为后续版本提供ListView.标准的添加/删除/更新动画可立即使用.小部件动画也很容易定制(很少自定义动画).
如果您需要自定义项目动画,我强烈建议您切换ListView到RecyclerView.
| 归档时间: |
|
| 查看次数: |
32547 次 |
| 最近记录: |