1

我正在创建一个 Android 应用程序。我需要draw在许多 UI 类上重写该方法以创建自定义外观。这些类都是子类View。我想知道最好的方法是什么。我希望能够尽可能多地重用代码,所以我正在寻求组织方面的帮助。正如我现在所看到的,我有两个选择:

选项 1 - 将一切子类化

如果我想使用LinearLayout,我创建CustomLinearLayout. 如果我想使用ImageView,我创建CustomImageView. 在这些自定义类中的每一个上,我都以draw完全相同的方式覆盖。这似乎效率不高,因为我重复代码并扩展了许多几乎什么都不做的类。

选项 2 - 超类的子类

我最初的想法是扩展View和创建CustomView,因为它已经是我想要使用的所有类的超类。但是,这不起作用,因为我要使用的所有现有子类仍在扩展View,而不是CustomView.

有一个更好的方法吗?我错过了什么吗?

4

1 回答 1

4

一种可能的解决方案是将您的绘图逻辑提取到一个单独的类DrawingCode中。这可以包含一个静态方法,或者您甚至可以使用 的实例DrawingCode来使用其他参数自定义您的绘图代码。当然,您仍然需要覆盖该draw()方法,但只需编写一行代码即可调用DrawingCode.draw(param1, param2). 通过这种方式,您可以将绘图代码存储在一个中心位置,而不必重复自己。

于 2012-11-08T18:07:45.153 回答