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