【梅开三度】1.2 自定义 View

173406131   ·   发表于 6个月前   ·   编程代码
引言
自定义 View,一个顾名思义的东西,在 Android 开发中说多也不多,不多在面向百度/谷歌的开发大快人心的使用着,说少也不少,任何 APP 都想把自己的应用做的美轮美奂的。
简介
在开始关于自定义的 View 的话题时,先对对他做个简单的介绍把,虽然小猪前辈在之前的问题也有提及( View 与 ViewGoup 的概念),但是感觉有点粗糙(这是前辈一年多前写的,那时候我还在搭酱油呢!)。
Android 给我们有限的控件时,同时也提供了扩展的渠道,通过继承控件,可以任性的丰富我们的APP(控件)。也就是所谓的自定义让 Android 能像 js 等语言在 github,掘金等很多社区中有大量的开源,好的作品不断的会被学习仿效,这么说来,这个自定义 View(Group) 看起来非学不可了。 打住,当然一味的追求自定义在实际开发中不是特别好,尤其是面对适配的问题,虽然说和上面一句话有点矛盾,希望大家仁者见仁智者见智(其实博主不怎么写自定义控件,因为 material design 足以完成个性的花样了,当然该说的还是要说,每星期的博客还是给自己交代的)。
自定义 View 的继承与构造方法
凡事总有有个开头,关于集成的话,其实只要是 View 的子类包括 View 就可以了,当然 View 的子类(比如 TextView,ImageView 都已经自带了一些属性,如何选择请自行掂量),自定义啥的就先从构造函数说起吧。

话不多说,先上代码
//就称呼为方法一吧
public MyView(Context context) {
super(context);
}
//就称呼为方法二吧
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
}
如果这个控件会在 java 代码中 new 的话,必须实现方法一,如果控件直接在 xml 中使用,必须实现方法二,两者至少实现一个,也有的时候,可以简单粗暴点,把方法一中的 super(context) 改成 this(context,null)。当然,什么情况下可以这么做就不阐述了,下面我们还是介绍下关于 AttributeSer这个参数把。
AttributeSer - 自定义属性
每个控件都会有属性,既然是自定义控件怎么能少了自定义属性呢! 1.为了方便展开话题,我们先照做在 res/values/ 目录下添加一个 attrs.xml 这个文件。
attrs.xml















0 Reply   |  Until 6个月前 | 397 View
LoginCan Publish Content
程序耗时 0.0346秒 内存:1352KB