0

演習として、ImageButton便利だと思われるいくつかの機能を追加するために拡張しようとしています。特に、1つはドロウの影です。私はこれでことわざの壁にぶつかりました。

クラスの拡張BitmapDrawableが必要だと私には思えます。このクラスにはPaint、ビットマップを画面に描画するために使用されるオブジェクトが含まれています。Paintもし私がこのオブジェクトにアクセスできたら...私がしなければならないことは、それのsetShadowLayer()メ​​ソッドを呼び出すことだけですprivate. publicペイント オブジェクトを返すメソッドがありgetPaint()ますが、対応するメソッドがない限り、それを変更しても意味がありませんsetPaint()。(ありません。)

現在、私の思考プロセスは次のようになります...

  1. クラスShadowBitmapDrawableを作成するextends BitmapDrawable
  2. このクラス内で、何らかの方法でBitmapDrawablePaintオブジェクトをPaintsetShadowLayer()メソッドで変更します。
  3. 私のカスタムImageButtonクラスでは、 を呼び出して、それを私のオブジェクトsetImageDrawable(Drawable d)に渡します。ShadowBitmapDrawable

ステップ 2 は障害物です。BitmapDrawablePaintオブジェクトを変更するにはどうすればよいですか? この問題のどこにいるのかを示す指標としてのみ、思考プロセスを追加したことに注意してください。私は他の提案を受け入れます。

ここにいくつかの参照があります:



PS 私は、私が得ようとしている答えをすでに知っていて、それが好きではないという気分が悪い. とにかく質問を投稿して、最善を尽くしたいと思いました。

4

1 に答える 1

1

BitmapDrawable の Paint オブジェクトを変更するにはどうすればよいですか?

プロジェクトにクローンBitmapDrawableを作成し、それを独自のパッケージにリファクタリングし、データ メンバーを作成protected(またはprotectedセッターなどを提供) し、変更した を使用してBitmapDrawable、全体をテストします。

于 2011-08-07T16:56:25.197 に答える