2011-08-07 12 views
0

練習として、私は役に立つと思ういくつかの機能を追加するためにImageButtonを拡張しようとしています。 1つは、特に、溺れた影です。私はこの1つで諺壁を打った。カスタムビューの作成:クラスを拡張し、基本クラスのprivateメンバー変数にアクセスするにはどうすればよいですか?

BitmapDrawableを拡張するクラスが必要だと思います。このクラスには、ビットマップを画面に描画するために使用されるPaintオブジェクトが含まれています。私がこのPaintオブジェクトにアクセスできたら、それはsetShadowLayer()メソッドと呼ばれています...しかし、ああ、それはprivateです。塗りつぶしオブジェクトを返すメソッドgetPaint()がありますが、対応するsetPaint()メソッドがない限り、そのオブジェクトへの変更は役に立たなくなります。 (ありません。)現在、私の思考プロセスは、以下のようになります

...

  1. は何とかBitmapDrawablePaintオブジェクトを変更し、このクラスにはextends BitmapDrawable
  2. クラスShadowBitmapDrawableを作成します。 PaintsetShadowLayer()メソッドを使用します。
  3. 私のカスタムではクラスでは、setImageDrawable(Drawable d)と呼び、私のShadowBitmapDrawableオブジェクトを渡します。

ステップ2はロードブロックです。 BitmapDrawablePaintオブジェクトを変更するにはどうすればよいですか?私はこの問題にどこにいるのかを示す指標としてのみ考えプロセスを追加しました。私は他の提案にもオープンしています。ここで

は、いくつかの参照は、以下のとおりです。



P.S.私は、私が得ようとしている答えをすでに知っているという悪い気持ちがあります。私はそれを気に入らないでしょう。とにかく質問を投稿し、ベストを願っていると思った。

答えて

1

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

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

+0

音が面白いです。 Androidのリポジトリをクローンし、Eclipseプロジェクトでライブラリプロジェクトとして追加し、ビルドパスにライブラリを追加して変更を加えますか?もしそうでなければ、正しい方向に私をスタートさせるために私をオンラインリソースに導くことができますか? – dfetter88

+0

"Androidリポジトリをクローンして、Eclipseプロジェクトでライブラリプロジェクトとして追加し、ビルドパスにライブラリを追加して変更を加えますか?" - いいえ。 「もしそうでなければ、オンラインリソースに私を向けることができますか? - あなたのポストで 'BitmapDrawable'のソースコードへのリンクをクリックしてください。マウスでソースコードを強調表示します。 - を入力してコピーします。プロジェクトに新しいJavaソースファイルを作成します。コピーしたコードを貼り付けます。パッケージ名を 'android.widget'以外に変更してください。 – CommonsWare

+0

'inflate()'メソッドは 'com.android.internal.R'の' Styleable'を使用するという問題のみです。私の理解から、このパッケージツリーのこの内部ブランチから何も含めることはできません。助言がありますか? – dfetter88

関連する問題