我正在创建一个Android应用程序。我需要在许多UI类上覆盖draw
方法来创建自定义外观。这些类都是子类View
。我想知道最好的方法是什么。我希望能够尽可能多地重用代码,因此我在组织事情时寻求帮助。正如我现在所看到的,我有两个选择:
选项1 - 子类一切
如果我想使用LinearLayout
,我会创建CustomLinearLayout
。如果我想使用ImageView
,我会创建CustomImageView
。在每个自定义类中,我都以完全相同的方式覆盖draw
。这似乎并不高效,因为我重复代码并扩展了几乎几乎没有的类。
选项2 - 超类的子类
我最初的想法是扩展View
并创建CustomView
,因为它已经是我想要使用的所有类的超类。但是,这并不起作用,因为我想要使用的所有现有子类仍在扩展View
,而不是CustomView
。
有更好的方法吗?我错过了什么吗?
答案 0 :(得分:4)
一种可能的解决方案是将绘制逻辑提取到单独的类DrawingCode
中。这可能包含静态方法,或者您甚至可以使用DrawingCode
的实例来使用其他参数自定义绘图代码。当然,您仍然需要覆盖draw()
方法,但只需编写一行代码来调用DrawingCode.draw(param1, param2)
。这样您就可以将绘图代码存储在一个中心位置,不要重复自己。