2012-03-22 16 views
0

私はRelativeLayout、TableLayoutといくつかのボタンで構成されるアプリを持っています。今度は、ユーザーが画面上で押したポイントの下に円を描きたいと思います。 1つの方法は、ビューを拡張し、内部のすべての機能を追加することですが、私はそれ以上のエレガントな(一般的な)ソリューションがあるのだろうかと思っていますか?描画のための透明な表示オーバーレイ

透明なオーバーレイを考えてレイアウトに追加し、MotionEventをキャプチャし、タッチの点に円を描き、イベントを基になるViewコンポーネントに渡します(ボタンはクリック可能なままです)。

その方法は、どのプロジェクトにも簡単にプラグインできるように、ソリューションを再利用できるようになりますが、残念ながらそれが実行可能かどうかはわかりません。何かヒント?

答えて

1

あなたはGestureOverlayViewを使用してあなたが望むものを達成できると確信しています。

リソースと例が用意されています

+0

私はGestureOverlayViewを見た後、ちょうどViewを拡張して自分のクラスを作成しました。これはimportandで、dispatchDrawをオーバーライドし、最初に子を描画し、次にオーバーレイを描画します。それ以外の場合は、ほとんどの場合子どもがオーバードワンしています。 – Andraz

0

私は私の提案は、最善の解決策である場合には知らないが、私は次のようにします: Drawableを拡張する新しいクラスを作成します。
onDrawメソッドをオーバーライドし、キャンバスにサークルを描画します。 a。 addCircle(int x、int y);メソッドをdrawableクラスに追加します。これはサークルを追加するたびに呼び出されます。

あなたのアクティビティで上記のクラスの新しいオブジェクトを作成し、context.getWindow()。setBackgroundDrawable(あなたのオブジェクト)をWindowBackgroundとして設定します。次にあなたのモーションイベントを処理する場所は、このオブジェクト.addCircleメソッドと呼ばれ、サークルが追加されます。

このようにあなたの活動では数行のコードしかなく、再利用可能になります。

関連する問題