1
这GIF说明了什么,我试图完成:Android的平稳过渡删除
所有ListView的项目,除了被点击的一个被移除,并平滑过渡到ListView控件的中心,现在大小为1
的问题是,每当在适配器的ArrayList中的前项目被移除,换句话说,被点击除了第一任何其他项目时,我得到这种不连续的过渡所在的地方d项目及其文字跳到前面第一个项目的位置转移前:
final String[] items = {"foo", "bar", "The Quick Brown Fox", "qwerty"};
final ArrayList<String> alItems = new ArrayList<>(Arrays.asList(items));
final ArrayAdapter adapter = new ArrayAdapter<String>(this, R.layout.list_item, R.id.tv1, alItems);
final ViewGroup main = (ViewGroup) findViewById(R.id.main);
final ListView lv = (ListView)findViewById(R.id.theListView);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// Remove all items except for the chosen one
TransitionManager.beginDelayedTransition(main);
alItems.subList(0, position).clear(); // Remove items before clicked item
alItems.subList(1, alItems.size()).clear(); // Remove items after clicked item
adapter.notifyDataSetChanged();
}
});
我怀疑它与ArrayList中越来越设置为幕后新的ArrayList的事情。没有跳跃的情况下完成所需效果的好方法是什么?