为了代码简洁一些,计划封装消息展示的布局,
使用constraintlayout进行扩展,自定义了一个组合控件布局,
其中包含recyclerview
代码中已为recyclerview设置了itemanimator
执行时发现没有使用itemanimator
没有动画效果。
不封装自定义布局,
直接在activity中操作,动画是可以正常生效的。
public class MessageView<T> extends ConstraintLayout {
private RecyclerView messageListView;
private ImageView redDotImg;
private ImageView arrowImg;
private BaseRecyclerViewAdapter adapter;
private List<T> messages;
boolean container_anim_flag;
private RecyclerView.ItemAnimator animator;
public MessageView(Context context) {
this(context,null);
}
public MessageView(Context context, AttributeSet attrs) {
this(context,attrs,0);
}
public MessageView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initView(context);
}
private void initView(Context context) {
LayoutInflater.from(context).inflate(R.layout.message_view, this, true);
messageListView = findViewById(R.id.message_group_list_view);
redDotImg = findViewById(R.id.red_dot);
arrowImg = findViewById(R.id.arrow);
setVisibility(View.GONE);
redDotImg.setVisibility(View.GONE);
arrowImg.setVisibility(View.GONE);
messageListView.setLayoutManager(new LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false));
//设置item动画
messageListView.setItemAnimator(new SlideInDownAnimator());
//设置item间隔
messageListView.addItemDecoration(new MessageItemDecoration(20));
messageListView.setOnTouchListener(new View.OnTouchListener() {
@SuppressLint("ClickableViewAccessibility")
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
ViewGroup viewGroup = (ViewGroup) view.getParent();
return viewGroup.onTouchEvent(motionEvent);
}
});
}