【发布时间】:2015-10-11 19:03:00
【问题描述】:
当我在 RecyclerView 中使用动画时遇到问题,我想在所有项目的 RelativeLayout 上启动 TranslateAnimation,并在结束时 setFillAfter(true) 保持动画,动画开始时一切看起来都很好,但是当我滚动 RecyclerView 如下所示:
[
某些项目的动画丢失:
[
这是我的代码:
public class MainActivity extends Activity {
private static final List<Model> DATA = Model.getModels();
private List<RelativeLayout> layouts = new ArrayList<>();
@InjectView(R.id.recycler_view)
RecyclerView recyclerView;
@InjectView(R.id.main_edit_btn)
Button btnEdit;
private MainAdapter adapter;
private boolean isEdit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ac_main);
ButterKnife.inject(this);
recyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
adapter = new MainAdapter();
recyclerView.setAdapter(adapter);
}
@OnClick(R.id.main_all_btn)
public void selectAll() {
}
@OnClick(R.id.main_del_btn)
public void delete() {
}
@OnClick(R.id.main_edit_btn)
public void edit() {
if (isEdit) {
btnEdit.setText("Edit");
isEdit = false;
for (Model model : DATA) {
model.isEdit = false;
}
} else {
btnEdit.setText("Cancel");
isEdit = true;
for (Model model : DATA) {
model.isEdit = true;
}
}
adapter.notifyDataSetChanged();
}
class MainAdapter extends RecyclerView.Adapter<MainAdapter.MainHolder> {
@Override
public MainHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new MainHolder(LayoutInflater.from(MainActivity.this)
.inflate(R.layout.ac_main_item, parent, false));
}
@Override
public void onBindViewHolder(MainHolder holder, int position) {
holder.tvTitle.setText(DATA.get(position).title);
holder.tvDate.setText(DATA.get(position).date);
if (DATA.get(position).isEdit) {
holder.startAnim();
}
}
@Override
public int getItemCount() {
return DATA.size();
}
class MainHolder extends RecyclerView.ViewHolder {
@InjectView(R.id.main_item_title_tv)
TextView tvTitle;
@InjectView(R.id.main_item_date_tv)
TextView tvDate;
@InjectView(R.id.main_item_content_rl)
RelativeLayout rlContent;
public MainHolder(View itemView) {
super(itemView);
ButterKnife.inject(this, itemView);
}
public void startAnim() {
Animation anim = new TranslateAnimation(0, 100, 0, 0);
anim.setDuration(500);
anim.setFillEnabled(true);
anim.setFillAfter(true);
rlContent.startAnimation(anim);
}
}
}
}
有人可以帮我解决这个问题吗?谢谢。
【问题讨论】: