编程

当前位置:澳门新莆京娱乐官网 > 编程 > 自定义组合控件

自定义组合控件

来源:http://www.drgigabytes.com 作者:澳门新莆京娱乐官网 时间:2020-03-16 18:41

百依百顺广大人都看见过,右下角带V标的头像,他们独特,代表着一个和民众不等的地方。他们悄悄或许是二个供销社,可能是个段子手,可能是个明星……

十分少说,先上效果:

图片 1Paste_Image.png图片 2Paste_Image.png图片 3Paste_Image.png

是还是不是还不易啊。由于类别中头像大约无处不在。假设各样都协和写一回代码,那或许要累死了,所以本人想开了自定义组合控件。那样,每趟只必要调用一行代码就足以兑现上海体育场所效果了。

  1. 看图即知,这些组成控件供给五个ImageView,当中头疑似居中于父结构,V标居于父构造的右下方。也便是说,这是二个相对结构。这些构造不习于旧贯用代码写的也足以用xml哦。下边是代码展示:
 RoundImageView avatar; ImageView icon; private void initViews(Context context) { avatar = new RoundImageView; RelativeLayout.LayoutParams paramsAvatar = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); paramsRoundAvatar.addRule(CENTER_IN_PARENT); addView(avatar, paramsAvatar); icon= new ImageView; RelativeLayout.LayoutParams paramsIcon = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); paramsGradeIcon.addRule(ALIGN_PARENT_BOTTOM); paramsGradeIcon.addRule(ALIGN_PARENT_RIGHT); addView( icon, paramsIcon); }

2.写完了构造之后,大家还亟需做什么样吗?大家的头像在差别的地点显得是有大有小的,有的可点击,有的不可点击,有的有边框,有的无边框,所以啊,下一步,大家要求设置那一个组合控件的性质。张开attrs.xml文本,表明属性:

 <declare-styleable name="CommonAvatarView"> <!--V标宽--> <attr name="gradeIconWidth" format="dimension" /> <!--V标高--> <attr name="gradeIconHeight" format="dimension" /> <!--是否可点击--> <attr name="clickable" format="boolean" /> <!--边框的厚度--> <attr name="mBorderThickness" format="dimension" /> <!--外边框的颜色--> <attr name="mBorderOutsideColor" format="color" /> <!--内边框的颜色--> <attr name="mBorderInsideColor" format="color" /> <!--V标的右外边距--> <attr name="gradeIconMarginRight" format="dimension" /> </declare-styleable>

3.属性已经希图好了,下一步和我们的控件联系起来呢。在CommonAvatarView的结构里写入:

public CommonAvatarView(Context context, AttributeSet attrs) { super(context, attrs); this.mContext = context; initViews; TypedArray mTypedArray = context.obtainStyledAttributes(attrs, R.styleable.CommonAvatarView); int gradeIconWidth =  mTypedArray.getDimension(R.styleable.CommonAvatarView_gradeIconWidth, ScreenUtils.dp2px(context, 10)); int gradeIconHeight =  mTypedArray.getDimension(R.styleable.CommonAvatarView_gradeIconHeight, ScreenUtils.dp2px(context, 10)); int gradeIconMarginRight =  mTypedArray.getDimension(R.styleable.CommonAvatarView_gradeIconMarginRight, 0); Boolean clickable = mTypedArray.getBoolean(R.styleable.CommonAvatarView_clickable, false); int mBorderThickness =  mTypedArray.getDimension(R.styleable.CommonAvatarView_mBorderThickness, 0); int mBorderInsideColor = mTypedArray.getColor(R.styleable.CommonAvatarView_mBorderInsideColor, defaultColor); int mBorderOutsideColor = mTypedArray.getColor(R.styleable.CommonAvatarView_mBorderOutsideColor, defaultColor); avatar.setmBorderThickness(mBorderThickness); avatar.setmBorderInsideColor(mBorderInsideColor); avatar.setmBorderOutsideColor(mBorderOutsideColor); avatar.invalidate(); LayoutParams params = (LayoutParams) icon.getLayoutParams(); params.setMargins(0, 0, gradeIconMarginRight, gradeIconMarginRight); params.width = gradeIconWidth; params.height = gradeIconHeight; if (clickable) { setOnClickListener; } }

4.到了这一步,整个控件已经做到百分之90了。欢呼当然前提是前面包车型大巴步子代码你都看懂了哦最终就起来写小编前面说的一行代码落成vip头像效果了~其实非常粗大略,只要求传入要求的参数就足以了啊!将头像地址和顾客类型参数传入方法里。头像标志独有二种处境:黄V,蓝V。

/*userType值:0普通用户 1黄V用户 2蓝v用户*/ public void setUserAvatar(String avatarUrl, int userType) { Glide.with.load(avatarUrl).asBitmap().error(R.mipmap.user_null_icon).placeholder(R.mipmap.user_null_icon).centerCrop().into; icon.setVisibility; if (userType == 1) { icon.setImageResource(R.mipmap.vip); } else if (userType == 2) { icon.setImageResource(R.mipmap.corp); } else { icon.setVisibility; } }

好了,到此,自定义组合控件——vip头像达成了!是还是不是不曾假造的那么难呢OO

动用情势和常常性的控件是相似的,只须要在xml文件引进就好了。上边代码完毕的便是上面第八个头像的效果哦~

 <com.luck.app.custom_view.CommonAvatarView android: android:layout_width="@dimen/private_detail_avatar_height_width" android:layout_height="@dimen/private_detail_avatar_height_width" android:layout_centerHorizontal="true" imagecontrol:gradeIconHeight="@dimen/setup_row_right_margin_left_right" imagecontrol:gradeIconMarginRight="5dp" imagecontrol:gradeIconWidth="@dimen/setup_row_right_margin_left_right" imagecontrol:mBorderInsideColor="@color/roung_image_view_border_inside_color" imagecontrol:mBorderOutsideColor="@color/roung_image_view_border_outside_color" imagecontrol:mBorderThickness="@dimen/round_image_view_border_thickness" />

本文由澳门新莆京娱乐官网发布于编程,转载请注明出处:自定义组合控件

关键词:

上一篇:BoradcastReceiver基础

下一篇:没有了