博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android 自己定义控件属性(TypedArray以及attrs解释)
阅读量:6853 次
发布时间:2019-06-26

本文共 2206 字,大约阅读时间需要 7 分钟。

近期在捣鼓android 自己定义控件属性,学到了TypedArray以及attrs。在这当中看了一篇大神博客。我就更加深入学习力一番。我就沿着这个学习,讲一下流程吧,兴许一篇还有应用。

1、attrs文件编写

看到这上面的代码有三个属性,首先attr标签是定义名字以及属性。后面是一个declare-styleable组,这个组名字AuthCodeView,后面class中会用到。

2、在xml里面怎么引用以及使用。对照系统空间属性

先看两张图。就了解大半了,也理解大半了。

a、自己定义属性的名字的引用

b、细致看图上说明以及a跟b图的比較。你就知道属性名改变。以及怎么引用。

怕上面图片看不清。附上部分xml代码

重点看头部layout中xmlns:android="http://schemas.android.com/apk/res/android"这是引用系统属性的作用。

然而 xmlns:authcodeview="http://schemas.android.com/apk/res/com.example.authcodeview"是引用自己定义属性。

 xmlns:+名称 = "http://schemas.android.com/apk/res/ + 应用的包名"

后面使用时候自己定义属性就是这样啦

            authcodeview:titleText="3712"

            authcodeview:titleTextColor="#00ffff"
            authcodeview:titleTextSize="40sp"

顺便附上系统arrs自己定义的路径

3、在自己定义控件中class怎么引用问题了

看一段代码先

/**	 * 获得我自己定义的样式属性	 * 	 * @param context	 * @param attrs	 * @param defStyle	 */	public AuthCodeView(Context context, AttributeSet attrs, int defStyle)	{		super(context, attrs, defStyle);		/**		 * 获得我们所定义的自己定义样式属性		 */		TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.AuthCodeView, defStyle, 0);				//获取在attr文件下,名字为AuthCodeView的declare-styleable属性有几个		int n = a.getIndexCount();		for (int i = 0; i < n; i++)		{			int attr = a.getIndex(i);			switch (attr)			{			//这个属性能够不要,由于都是随机产生			case R.styleable.AuthCodeView_titleText:				mTitleText = a.getString(attr);				break;			case R.styleable.AuthCodeView_titleTextColor:				// 默认颜色设置为黑色				mTitleTextColor = a.getColor(attr, Color.BLACK);				break;			case R.styleable.AuthCodeView_titleTextSize:				// 默认设置为16sp。TypeValue也能够把sp转化为px				mTitleTextSize = a.getDimensionPixelSize(attr, (int) TypedValue.applyDimension(						TypedValue.COMPLEX_UNIT_SP, 16, getResources().getDisplayMetrics()));				break;			}		}		a.recycle();		}

这个TypedArray的作用就是资源的映射作用。写法是这种。

R.styleable.AuthCodeView这个是不是非常熟悉。

还有R.styleable.AuthCodeView_titleText,后面就是名称加上下横线加上属性。

这样做就把自己定义属性在xml设置值映射到class,怎么获取都非常easy。 

有空格看以去看看生成id的R文件。

这篇先到这里结束,还有这篇的续集。自己定义属性控件。也是自己定义view。随机验证码demo学习。

你可能感兴趣的文章
squid+iptables实现透明代理
查看>>
phpMyWind本地伪静态设置方法_已迁移
查看>>
CentOS相关知识
查看>>
按钮特效
查看>>
Django 之 模板语言
查看>>
常用的敏捷测试工具
查看>>
JavaEE程序员必读图书大推
查看>>
CKEditor使用配置
查看>>
变频电源与变频器不同浅释
查看>>
利用HTML5将摄像头视频流转换成ascii码流,通过websocket实时传输给其它浏览器展示。...
查看>>
运维之道:16 张图片带你 1 小时学会 Ansible
查看>>
分享:IT管理员都喜欢用的Outlook超大附件系统
查看>>
objective-c设计模式之---单例
查看>>
golang读取json格式的天气预报
查看>>
每周一书《大数据搜索引擎原理分析及编程实现》分享!
查看>>
【网优谷】如何快速写出有吸引力的网站标题?
查看>>
Linux运维之lLinux文件系统及文件类型
查看>>
网站SEO优化过程中什么样的文章容易被秒收
查看>>
stata初学者常用命令语
查看>>
tomcat的安装
查看>>