Android obtainStyledAttributes获取属性值

obtainStyledAttributes是干什么的有过自定义属性或者查看过系统View相关子类源码的人可能对这个方法都不会陌生。 该方法是Context类为我们提供的获取style中特定属性值的方法。通过这个方法,我们就可以获取在style中定义的各种属性值,然后根据获取到的不同的属性值实现差异化的效果。一种典型的使用方式是: //TextView 构造方法片选代码
摘要由CSDN通过智能技术生成

obtainStyledAttributes是干什么的

有过自定义属性或者查看过系统View相关子类源码的人可能对这个方法都不会陌生。
该方法是Context类为我们提供的获取style中特定属性值的方法。通过这个方法,我们就可以获取在style中定义的各种属性值,然后根据获取到的不同的属性值实现差异化的效果。

一种典型的使用方式是:

        //TextView 构造方法片选代码

        //首先通过obtainStyledAttributes获取TypedArray
        TypedArray a = theme.obtainStyledAttributes(attrs,
                com.android.internal.R.styleable.TextViewAppearance, defStyleAttr, defStyleRes); 
        //接着从TypedArray中提取相应的值,此处提取的是resourceId,对于的attr声明应为“reference”        
        //除此之外,TypedArray还有getInt,getDrawable等一系列方法用于提取其他类型的值。
        int ap = a.getResourceId(
                com.android.internal.R.styleable.TextViewAppearance_textAppearance, -1);

        //回收TypedArray
        a.recycle();

从以上代码片看到调用obtainStyledAttributes的变量是theme,其实是因为context中的该方法最终也是调用其持有的theme对象的该方法,因此是一致的。如下:

    //Context obtainStyledAttributes实现
    public final TypedArray obtainStyledAttributes(
            AttributeSet set, @StyleableRes int[] attrs, @AttrRes int defStyleAttr,
            @StyleRes int defStyleRes) {
        return getTheme().obtainStyledAttributes(
            set, attrs, defStyleAttr, defStyleRes);
    }

既然如此,我们就直接分析Theme中的obtainStyledAttributes方法。

obtainStyledAttributes API解析

这里写图片描述

以上是文档中对该方法的说明。我们先从参数部分看。该方法总共有四个参数:

参数名 说明
set 直接内嵌在View中的属性集合&#
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值