Android自定义UI实战(基础篇1)---组合控件封装

在实际开发过程中,我们会碰到许多这种界面

这里写图片描述

下面来介绍怎样封装成为一个通用的控件

1.首先新建一个类,在这里继承自FrameLayout,实现对应的构造方法

  public class ItemGroup extends FrameLayout{
   

        public ItemGroup(Context context) {
            super(context);
        }

        public ItemGroup(Context context, AttributeSet attrs) {
            super(context, attrs);
        }

        public ItemGroup(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
        } 
    }

2.属性的定义,在完成类的创建后,来自定义相关属性
首先需要在values目录下面新建一个attrs.xml文件 , 自定义相关属性,在这里定义了一个标题文字,文字左右的图片,最右边的图片,分割线,分割线颜色这几个属性。

<declare-styleable name="ItemGroup">

     <attr name="title" format="string"/>
     <attr name="drawable_left" format="reference"/>
     <attr name="drawable_right" format="reference"/>
     <attr name="line_color" format="color"/>
     <attr name="line_height" format="integer"/>

</declare-styleable>

其定义格式如下:

<declare-styleable name="自定义属性名称">
    <attr name="属性名称" format="属性类型"/>
</declare-styleable>

属性类型主要包括:
reference 引用
color 颜色
boolean 布尔值
dimension 尺寸值
float 浮点值
integer 整型值
string 字符串
enum 枚举值

3 属性的引入,在定义完属性后,接下来将定义的属性值引入到类中

/**
 * 初始化,引入相关属性
 * @param context
 * @param attrs
 */
private void initAttrs(Context context,AttributeSet attrs){
    TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.ItemGroup);
    strTitle = typedArray.getString(R.styleable.ItemGroup_title);
    drawableLeft = typedArray.getDrawable(R.styleable.ItemGroup_drawable_left);
    drawableright = typedArray.getDrawable(R.styleable.ItemGroup_drawable_right);
    lineHeight    = typedArray.getInt(R.styleable.ItemGroup_line_height,1);
    lineColor     = typedArray.getColor(R.styleable.ItemGroup_line_color,0xff999999);
    typedArray.recyc
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值