自定义View与属性开发详解

自定义 View 的魅力就在于它的灵活性和可玩性。在 Android 开发里,想要打造点不一样的视觉效果或者加点个性功能,光靠系统自带的 View 肯定不够用。这个时候,自定义 View 就派上用场了,尤其是加上自定义属性之后,配合 XML 使用,真的是又方便又强大。

自定义 View 的套路其实也挺清晰的:先写个类,继承个View或者其他控件,比如TextView;重写构造方法,搞定初始化。接下来就是重头戏——在onDraw()里画你的东西,用Canvas随便玩,画图形、文字、渐变都行。

尺寸怎么来?重写onMeasure(),你说多少它就给你多少。还可以管布局变化,重写onLayout()就行。想要响应用户手势?重写onTouchEvent()就能做到,逻辑爱怎么写怎么写。

自定义属性这个事也蛮重要的,毕竟多时候不想把东西都写死在代码里。你可以在res/values/attrs.xml里加自己的属性,比如颜色、文字之类的:


    
    
<;/declare-styleable>;

你在布局文件里就可以用这些属性了,前缀一般是app开头的:

在代码里获取也不难,用obtainStyledAttributes()搞定:

TypedArray attributes = context.obtainStyledAttributes(attrs, R.styleable.MyView);
int customColor = attributes.getColor(R.styleable.MyView_custom_color, DEFAULT_COLOR);
String customText = attributes.getString(R.styleable.MyView_custom_text);
attributes.recycle();

整个过程下来,其实并不复杂,关键是你能用这些自定义属性让组件变得更通用,也方便复用。想做个炫酷的按钮、进度条、取色器啥的,全靠它了。

对了,性能上记得别在onDraw()里写太多逻辑,计算什么的能提前搞就提前搞,别让 UI 线程太累。如果你对 View 有更深的需求,像柱状图、动画交互,强烈建议看看下面这些例子。

zip 文件大小:1.62MB