演習として、ImageButton
便利だと思われるいくつかの機能を追加するために拡張しようとしています。特に、1つはドロウの影です。私はこれでことわざの壁にぶつかりました。
クラスの拡張BitmapDrawable
が必要だと私には思えます。このクラスにはPaint
、ビットマップを画面に描画するために使用されるオブジェクトが含まれています。Paint
もし私がこのオブジェクトにアクセスできたら...私がしなければならないことは、それのsetShadowLayer()
メソッドを呼び出すことだけですprivate
. public
ペイント オブジェクトを返すメソッドがありgetPaint()
ますが、対応するメソッドがない限り、それを変更しても意味がありませんsetPaint()
。(ありません。)
現在、私の思考プロセスは次のようになります...
- クラス
ShadowBitmapDrawable
を作成するextends BitmapDrawable
- このクラス内で、何らかの方法で
BitmapDrawable
のPaint
オブジェクトをPaint
のsetShadowLayer()
メソッドで変更します。 - 私のカスタム
ImageButton
クラスでは、 を呼び出して、それを私のオブジェクトsetImageDrawable(Drawable d)
に渡します。ShadowBitmapDrawable
ステップ 2 は障害物です。BitmapDrawable
のPaint
オブジェクトを変更するにはどうすればよいですか? この問題のどこにいるのかを示す指標としてのみ、思考プロセスを追加したことに注意してください。私は他の提案を受け入れます。
ここにいくつかの参照があります:
- BitmapDrawable ソース(
Drawable
ビットマップを描画するように拡張) - ImageView ソース(の基本クラス
ImageButton
) - 描画可能なソース
PS 私は、私が得ようとしている答えをすでに知っていて、それが好きではないという気分が悪い. とにかく質問を投稿して、最善を尽くしたいと思いました。