返回顶部
首页 > 资讯 > 移动开发 >Android 自定义view时用到的TypedArray
  • 862
分享到

Android 自定义view时用到的TypedArray

view自定义viewAndroid 2022-06-06 13:06:10 862人浏览 安东尼
摘要

前言: 在自定义控件的时候,如果我们想额外的添加一些属性,就会用到TypedArray这个类,那么这个类是怎么得到的,以及怎么使用的,这里作个简单介绍。 创建自定义属性 首先创

前言:

在自定义控件的时候,如果我们想额外的添加一些属性,就会用到TypedArray这个类,那么这个类是怎么得到的,以及怎么使用的,这里作个简单介绍。

创建自定义属性

首先创建values\attrs.xml,在attrs.xml中声明自定义属性:



自定义string类型,属性名为text 自定义color类型,属性名为textColor 自定义dimension类型,属性名为textSize

declare-styleable这个标签的作用其实就是可以为我们完成很多常量(int[]数组,下标常量)等的编写,简化我们的开发工作

format还有如下类型:

fORMat 介绍
reference 表示引用,参考某一资源ID
string 表示字符串
color 表示颜色值
dimension 表示尺寸值
boolean 表示布尔值
integer 表示整型值
float 表示浮点值
fraction 表示百分数
enum 表示枚举值
flag 表示位运算

自定义空间在xml里面布局的时候引用自定义的属性。

CustomView是自定义控件,引用了app:text、app:textColor、 app:textSize="18sp"三个自定义属性


当然,起作用的前提是,要在自定义的view里面处理:


public class CustomView extends View {
public Paint paint;
private String text = "";//文本内容
private int textColor = 0xDD333333;  //字体颜色
private float textSize = 20;//字体大小设置
public CustomView(Context context) {
    this(context, null);
}
public CustomView(Context context, AttributeSet attrs) {
    this(context, attrs, 0);
}
public CustomView(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    init(attrs);
}
private void init(AttributeSet attrs) {
    TypedArray a = getResources().obtainAttributes(attrs, R.styleable.MyFirstCustomerView);//获取TypedArray
    textColor = a.getColor(R.styleable.CustomerView_textColor, textColor);//获取布局中设置的自定以颜色
    textSize = a.getDimension(R.styleable.CustomerView_textSize, textSize);//获取布局中设置的自定义字体大小
    text = a.getString(R.styleable.CustomerView_text);//获取布局中设置的自定义文本
    paint = new Paint();//初始化 画笔
    paint.setTextSize(textSize);//画笔字体大小设置
    paint.setColor(textColor);//画笔的颜色
    paint.setStyle(Paint.Style.FILL);//画笔风格
    a.recycle();//切记:在使用TypedArray后需要回收
}
@Override
protected void onDraw(canvas canvas) {
    super.onDraw(canvas);
    canvas.drawText(text, 100, 100, paint);
}}

-TypedArray用完一定要回收。其实obtainAttributes()底层是native方法,也就是用c++实现的,他会提取自定义控件属性的的值保存TypedArray中的mData数组中,这个数组的大小是由你定义控件属性的个数决定的,是它的6倍,上面的attrs其实就是你自定义属性的个数。

Context 当前上下文
AttributeSet 为xml里一个节点下面的属性的集合,这个类一般都是系统在生成有xml配置的组件时生成,可以理解为当前自定义控件下的所有属性集合;提供TypedArray检索的范围
defStyleAttr

在当前包含了一个引用到为TypedArray提供默认值的样式资源的theme中的一种属性。可以为0,但是为0的时候就不会再去寻找默认的;提供TypedArray检索的范围(注:这里的默认也就是defStyleRes)

总结 declare-styleable标签可以为我们完成很多常量(int[]数组,下标常量)等的编写,简化我们的开发工作,可以不声明,但是需要在自定义控件中,声明引用自定义属性数组 TypedArray 可有obtainAttributes()、obtainStyledAttributes()方法创建,常用obtainStyledAttributes(int resid, int[] attrs)构造方法
作者:Jason_Lee155


--结束END--

本文标题: Android 自定义view时用到的TypedArray

本文链接: https://lsjlt.com/news/28967.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android 自定义view时用到的TypedArray
    前言: 在自定义控件的时候,如果我们想额外的添加一些属性,就会用到TypedArray这个类,那么这个类是怎么得到的,以及怎么使用的,这里作个简单介绍。 创建自定义属性 首先创...
    99+
    2022-06-06
    view 自定义view Android
  • Android 自定义View时使用TypedArray配置样式属性详细介绍
     Android 自定义View时使用TypedArray配置样式属性详细介绍       在自定义vie...
    99+
    2022-06-06
    view 属性 自定义view Android
  • Android自定义View倒计时圆
    本文实例为大家分享了Android自定义View倒计时圆的具体代码,供大家参考,具体内容如下 创建attr<?xml version="1.0" encoding="utf-8"?><resour...
    99+
    2023-05-30
    android view 倒计时圆
  • android自定义短信倒计时view
    android自定义短信倒计时view 倒计时实现有三种方式 而这个自定义view是通过handler实现的。为了保证activity销毁的同时...
    99+
    2022-06-06
    view Android
  • Android自定义View实现时钟效果
    本文实例为大家分享了Android自定义View实现时钟效果的具体代码,供大家参考,具体内容如下 自定义时钟 初学自定义View,先画一个不太成熟的时钟(甚至只有秒针) 时钟效果 ...
    99+
    2024-04-02
  • Android自定义View实现时钟功能
    最近在练习自定义view, 想起之前面试的时候笔试有道题是写出自定义一个时钟的关键代码. 今天就来实现一下. 步骤依然是先分析, 再上代码. 实现效果 View分析 时钟主要分为五...
    99+
    2024-04-02
  • Android 自定义View步骤
    例子如下:Android 自定义View 密码框 例子 1 良好的自定义View 易用,标准,开放。 一个设计良好的自定义view和其他设计良好的类很像。封装了某个具有易...
    99+
    2022-06-06
    view 自定义view Android
  • Android自定义View详解
    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24252901 很多的Android入门程序猿来说对于An...
    99+
    2022-06-06
    view Android
  • Android怎么自定义View
    这篇文章主要介绍“Android怎么自定义View”,在日常操作中,相信很多人在Android怎么自定义View问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android怎么自定义View”的疑惑有所帮助!...
    99+
    2023-06-30
  • Android 自定义View的使用介绍
    在项目开发中,可能系统自带的一些widget不能满足我们的需求,这时就需要自定义View。 通过查看系统中的常用widget如Button,TextView,EditText,...
    99+
    2022-06-06
    view 自定义view Android
  • 详解Android自定义View--自定义柱状图
    绪论 转眼间,2016伴随着互联网寒冬和帝都的雾霾马上就过去了,不知道大家今年一整年过得怎么样?最近票圈被各个城市的雾霾刷屏,内心难免会动荡,庆幸自己早出来一年,也担忧着自己的...
    99+
    2022-06-06
    view 柱状图 Android
  • 详解Android自定义控件属性TypedArray以及attrs
    最近在研究android自定义控件属性,学到了TypedArray以及attrs。大家也可以结合《理解Android中的自定义属性》这篇文章进行学习,后续一篇还有应用。 1、a...
    99+
    2022-06-06
    Android
  • Android自定义View-Paint详解
    Paint的使用 setStyle Paint.Style.FILL:填充模式 Paint.Style.STROKE:画线模式 Paint.Style.FI...
    99+
    2024-04-02
  • Android自定义view实现日历打卡签到
    本文实例为大家分享了Android自定义view实现日历打卡签到的具体代码,供大家参考,具体内容如下 1.说明 自己写一个view实现每天签到的功能,设置背景图片 源码下载 2.效果...
    99+
    2024-04-02
  • Android 自定义View之倒计时实例代码
    Android 自定义View之倒计时实例代码 需求: 大多数app在注册的时候,都有一个获取验证码的按钮,点击后,访问接口,最终用户会收到短信验证码。为了不多次写这个获取验...
    99+
    2022-06-06
    倒计时 view 自定义view Android
  • Android自定义View实现计时文字详解
    目录前言一、XML样式二、构造方法三、API方法四、使用五、源码前言   在Android开发中,常常会有计时的一些操作,例如收验证码的时候倒计时,秒表的计时等等...
    99+
    2023-05-17
    Android 自定义View计时文字 Android View
  • android自定义View圆圈拖动
    本文实例为大家分享了android自定义View圆圈拖动的具体代码,供大家参考,具体内容如下 问题: 1 . 累加问题:“点击坐标”坐标在移动时必须改变位置,不然将导致累加过载 2....
    99+
    2024-04-02
  • Android自定义View原理(实战)
    目录1、为什么需要自定义View2、自定义View的基本方法3、自定义View的属性如何操作4、View的视图结构5、View的坐标系6、View树的绘制流程6.1 measure过...
    99+
    2024-04-02
  • Android 自定义View 之 Dialog弹窗
    Dialog弹窗 前言正文一、弹窗视图帮助类二、弹窗控制类三、监听接口四、样式五、简易弹窗六、常规使用七、简易使用八、源码 前言   在日常开发中用到弹窗是比较多的,常用于提示作用,比如错误操作提示,余额不足提示,退出登录提...
    99+
    2023-08-18
    自定义Dialog 简易提示弹窗 EasyDialog
  • Android自定义短信倒计时view流程分析
    倒计时实现有三种方式 而这个自定义view是通过handler实现的。为了保证activity销毁的同时倒计时线程依然进行同时重新创建销毁又不会导致内存泄漏,我使用了handl...
    99+
    2022-06-06
    view Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作