自定义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 有更深的需求,像柱状图、动画交互,强烈建议看看下面这些例子。
1.62MB
文件大小:
评论区