RecyclerView动画,用于按顺序滑动的项目

时间:2017-03-06 15:45:38

标签: android android-recyclerview android-animation

我想为recyclerview设置动画,以便按顺序添加项目(从右向左滑动),我的意思是,第一项开始滑动,然后当它围绕屏幕中间,第二项开始滑动等等。

我尝试添加此库(https://github.com/wasabeef/recyclerview-animators),但我不确定我是否做错了,或者它是不是像这样工作。

有什么想法吗?

活动

private ArrayList<OptionListItem> mOptionsList = new ArrayList<>();
    private RecyclerView mRecyclerView;
    private OptionListAdapter mListAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        mListAdapter = new OptionListAdapter(mOptionsList);
        mRecyclerView = (RecyclerView) findViewById(R.id.options_list);
        RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());
        mRecyclerView.setLayoutManager(mLayoutManager);
        mRecyclerView.setItemAnimator(new DefaultItemAnimator());
        mRecyclerView.setAdapter(mListAdapter);
        mRecyclerView.setItemAnimator(new SlideInLeftAnimator());

        addOptionsToList();
    }

    private void addOptionsToList() {
        OptionListItem listItem = new OptionListItem(
                ScanActivity.class,
                "Controle",
                "Efetue o bloqueio/desbloqueio",
                R.drawable.ic_lock,
                R.drawable.colored_bar_bg1
        );
        mListAdapter.add(listItem);

        listItem = new OptionListItem(
                ScanActivity.class,
                "Opção 2",
                "Descrição da opção 2",
                R.drawable.ic_car,
                R.drawable.colored_bar_bg2
        );
        mListAdapter.add(listItem);

        listItem = new OptionListItem(
                ScanActivity.class,
                "Opção 3",
                "Descrição da opção 3",
                R.drawable.ic_lightbulb,
                R.drawable.colored_bar_bg4
        );
        mListAdapter.add(listItem);
}

适配器

public class OptionListAdapter extends RecyclerView.Adapter<OptionListAdapter.OptionListItemHolder> {

    private final ArrayList<OptionListItem> optionList;

    public OptionListAdapter(ArrayList<OptionListItem> optionList) {
        this.optionList = optionList;
    }


    @Override
    public OptionListItemHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View item = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.options_list_item_layout, parent, false);
        return new OptionListItemHolder(item);
    }

    @Override
    public void onBindViewHolder(OptionListItemHolder holder, int position) {
        OptionListItem item = optionList.get(position);
        holder.cardTitle.setText(item.getTitle());
        holder.cardSubtitle.setText(item.getSubtitle());
        holder.icon.setImageResource(item.getIcon());
        holder.coloredBar.setBackgroundResource(item.getBar());
        holder.activity = item.getActivity();
    }

    public void add(OptionListItem item) {
        int position = getItemCount();
        this.optionList.add(position, item);
        notifyItemInserted(position);
    }

    @Override
    public int getItemCount() {
        return optionList.size();
    }

    public class OptionListItemHolder extends RecyclerView.ViewHolder {

        private TextView cardTitle;
        private TextView cardSubtitle;
        private ImageView icon;
        private View coloredBar;
        private View optionBackground;
        private Class<?> activity;

        public OptionListItemHolder(View v) {
            super(v);
            cardTitle = (TextView)v.findViewById(R.id.card_title);
            cardSubtitle = (TextView)v.findViewById(R.id.card_subtitle);
            icon = (ImageView)v.findViewById(R.id.icon);
            coloredBar = v.findViewById(R.id.colored_bar);
            optionBackground = v.findViewById(R.id.option_background_container);

            v.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent intent = new Intent(view.getContext(), activity);
                    view.getContext().startActivity(intent);
                }
            });
        }
    }
}

0 个答案:

没有答案