我想为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);
}
});
}
}
}