練習として、私は役に立つと思ういくつかの機能を追加するためにImageButton
を拡張しようとしています。 1つは、特に、溺れた影です。私はこの1つで諺壁を打った。カスタムビューの作成:クラスを拡張し、基本クラスのprivateメンバー変数にアクセスするにはどうすればよいですか?
BitmapDrawable
を拡張するクラスが必要だと思います。このクラスには、ビットマップを画面に描画するために使用されるPaint
オブジェクトが含まれています。私がこのPaint
オブジェクトにアクセスできたら、それはsetShadowLayer()
メソッドと呼ばれています...しかし、ああ、それはprivate
です。塗りつぶしオブジェクトを返すメソッドgetPaint()
がありますが、対応するsetPaint()
メソッドがない限り、そのオブジェクトへの変更は役に立たなくなります。 (ありません。)現在、私の思考プロセスは、以下のようになります
...
- は何とか
BitmapDrawable
のPaint
オブジェクトを変更し、このクラスにはextends BitmapDrawable
- クラス
ShadowBitmapDrawable
を作成します。Paint
のsetShadowLayer()
メソッドを使用します。 - 私のカスタムではクラスでは、
setImageDrawable(Drawable d)
と呼び、私のShadowBitmapDrawable
オブジェクトを渡します。
ステップ2はロードブロックです。 BitmapDrawable
のPaint
オブジェクトを変更するにはどうすればよいですか?私はこの問題にどこにいるのかを示す指標としてのみ考えプロセスを追加しました。私は他の提案にもオープンしています。ここで
は、いくつかの参照は、以下のとおりです。
- BitmapDrawable source(ビットマップを描画する
Drawable
を拡張) - ImageView source(
ImageButton
の基底クラス) - Drawable source
P.S.私は、私が得ようとしている答えをすでに知っているという悪い気持ちがあります。私はそれを気に入らないでしょう。とにかく質問を投稿し、ベストを願っていると思った。
音が面白いです。 Androidのリポジトリをクローンし、Eclipseプロジェクトでライブラリプロジェクトとして追加し、ビルドパスにライブラリを追加して変更を加えますか?もしそうでなければ、正しい方向に私をスタートさせるために私をオンラインリソースに導くことができますか? – dfetter88
"Androidリポジトリをクローンして、Eclipseプロジェクトでライブラリプロジェクトとして追加し、ビルドパスにライブラリを追加して変更を加えますか?" - いいえ。 「もしそうでなければ、オンラインリソースに私を向けることができますか? - あなたのポストで 'BitmapDrawable'のソースコードへのリンクをクリックしてください。マウスでソースコードを強調表示します。 - を入力してコピーします。プロジェクトに新しいJavaソースファイルを作成します。コピーしたコードを貼り付けます。パッケージ名を 'android.widget'以外に変更してください。 –
CommonsWare
'inflate()'メソッドは 'com.android.internal.R'の' Styleable'を使用するという問題のみです。私の理解から、このパッケージツリーのこの内部ブランチから何も含めることはできません。助言がありますか? – dfetter88