演習として、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 私は、私が得ようとしている答えをすでに知っていて、それが好きではないという気分が悪い. とにかく質問を投稿して、最善を尽くしたいと思いました。