github地址
是对下方底部的封装
如果不封装的话,更多的是
大的布局轮廓是 外面是一个大的容器(比如LinearLayout),里面是四个小的容器(比如LinearLayout)
而BottomBarLayout是上面大的容器的自定义View封装,BottomBarItem是下面每个四个小容器的自定义View的封装
所以大致思路清晰了,不是一件特别复杂的,就把它自定义组合布局去看
如何封装布局
- 如何动态灵活的操作元素
- 内存回收情况下的处理
BottomBarItem属性介绍
如何封装布局
- BottomBarItem
属于一种组合布局
@NonNull
private View initView() {
View view = View.inflate(this.mContext, layout.item_bottom_bar, (ViewGroup)null);
关键是学习如何用代码操作布局的属性,而这些属性和外部的自定义属性相关联。
比如给mImageView控件设置
private void init() {
this.setOrientation(1);
this.setGravity(17);
View view = this.initView();
this.mImageView.setImageResource(this.mIconNormalResourceId);
if (this.mIconWidth != 0 && this.mIconHeight != 0) {
LayoutParams imageLayoutParams = (LayoutParams)this.mImageView.getLayoutParams();
imageLayoutParams.width = this.mIconWidth;
imageLayoutParams.height = this.mIconHeight;
this.mImageView.setLayoutParams(imageLayoutParams);
}
this.mTextView.setTextSize(0, (float)this.mTextSize);
this.mTvUnread.setTextSize(0, (float)this.mUnreadTextSize);
this.mTvUnread.setTextColor(this.mUnreadTextColor);
this.mTvUnread.setBackground(this.mUnreadTextBg);
this.mTvMsg.setTextSize(0, (float)this.mMsgTextSize);
this.mTvMsg.setTextColor(this.mMsgTextColor);
this.mTvMsg.setBackground(this.mMsgTextBg);
this.mTvNotify