admin管理员组文章数量:1552022
public class MainActivity extends AppCompatActivity {
private MyAdapter myAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final List<String> list = new ArrayList<String>() {{
for (int i = 0; i < 8; i++) {
add("我是第" + i + "条!");
}
}};
myAdapter = new MyAdapter(R.layout.item, list);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(MainActivity.this, LinearLayoutManager.VERTICAL, false);
RecyclerView rv = findViewById(R.id.rv);
rv.setLayoutManager(linearLayoutManager);
rv.setAdapter(myAdapter);
findViewById(R.id.but).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int size = list.size();
new CountDownTimer(size * 1500, 1500) {
@Override
public void onTick(long millisUntilFinished) {
list.remove(0);
myAdapter.removeData(0);
}
@Override
public void onFinish() {
}
}.start();
// 0 3 6
// list.remove(0);
// list.remove(3-1);
// list.remove(6-2);
// myAdapter.removeDatas(0,3-1,6-2);
}
});
}
}
public class MyAdapter extends BaseQuickAdapter<String, BaseViewHolder> {
List<View> itemList = new ArrayList<View>();
public MyAdapter(int layoutResId, @Nullable List<String> data) {
super(layoutResId, data);
}
@Override
protected void convert(@NotNull BaseViewHolder baseViewHolder, String s) {
itemList.add(baseViewHolder.itemView);
baseViewHolder.setText(R.id.tv, s);
}
// 删除动画
public void removeData(final int position) {
View view = itemList.get(position);
ObjectAnimator translationX = ObjectAnimator.ofFloat(view, "TranslationX", 0, -view.getWidth());
translationX.setDuration(1000);
translationX.start();
translationX.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationCancel(Animator animation) {
super.onAnimationCancel(animation);
//删除数据
notifyItemRemoved(position);
//如果不是按照顺序删除就需要整体刷新
// notifyDataSetChanged();
}
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
//删除数据
notifyItemRemoved(position);
//如果不是按照顺序删除就需要整体刷新
// notifyDataSetChanged();
itemList.remove(position);
}
});
}
// 删除动画
public void removeDatas(final int... positions) {
List<ObjectAnimator> list = new ArrayList<>();
for (int i = 0; i < positions.length; i++) {
final int position = positions[i];
View view = itemList.get(position);
ObjectAnimator translationX = ObjectAnimator.ofFloat(view, "TranslationX", 0, -view.getWidth());
translationX.setDuration(1000);
translationX.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationCancel(Animator animation) {
super.onAnimationCancel(animation);
//删除数据
notifyItemRemoved(position);
//如果不是按照顺序删除就需要整体刷新
// notifyDataSetChanged();
}
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
//删除数据
notifyItemRemoved(position);
//如果不是按照顺序删除就需要整体刷新
// notifyDataSetChanged();
}
});
list.add(translationX);
itemList.remove(position-i);
}
for (int i = 0; i < list.size(); i++) {
list.get(i).start();
}
}
}
版权声明:本文标题:Android 仿一个垃圾清理的效果 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1727265798a1105516.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论