1

私はAndroidアプリケーションを作成しています。drawカスタムの外観を作成するには、多数の UI クラスでメソッドをオーバーライドする必要があります。これらのクラスはすべてサブクラスViewです。これを行う最善の方法は何だろうと思っています。できるだけコードを再利用できるようにしたいので、整理の助けを求めています。私が今見ているように、私には2つのオプションがあります:

オプション 1 - すべてをサブクラス化する

使いたければLinearLayout作るCustomLinearLayout。使いたければImageView作るCustomImageView。これらのカスタム クラスのそれぞれで、drawまったく同じ方法でオーバーライドします。コードを繰り返し、ほとんど何もしない多くのクラスを拡張しているため、これは効率的ではないようです。

オプション 2 - スーパー クラスをサブクラス化する

私の最初の考えは、 を拡張Viewして作成するCustomViewことでした。これは、使用したいすべてのクラスのスーパークラスであるからです。ただし、これは機能しません。使用したい既存のすべてのサブクラスがまだViewではなくを拡張しているためCustomViewです。

これを行うより良い方法はありますか?何か不足していますか?

4

1 に答える 1

4

考えられる解決策の1つは、描画ロジックを別のクラスに抽出することDrawingCodeです。これには静的メソッドを含めることも、のインスタンスを使用DrawingCodeして他のパラメーターを使用して描画コードをカスタマイズすることもできます。もちろん、draw()メソッドを上書きする必要がありますが、呼び出すコードは1行だけ記述してDrawingCode.draw(param1, param2)ください。このようにして、描画コードを1つの中央の場所に保存し、繰り返す必要はありません。

于 2012-11-08T18:07:45.153 に答える