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