プロが教えるわが家の防犯対策術!

Androidの開発をしてて、
ボタン(画像でボタンを作成するか、Buttonクラスとかのボタンでも可)を押すと
処理を行いたい制御を組み込もうとしてます。

あるサンプルのソースを見てると
Canvasというのを利用して画面を表示して、
onTouchEventというのでタッチされたイベントをひろい、
どこがタッチされたかというのを計算により求めてます。

この方法だと押された場所を計算しないといけない(?)為、別の方法も考えてます。

・Canvasでオブジェクトを追加して、そのオブジェクトが押されたらって処理する事は可能でしょうか?
・Canvasで画面を作成し、同一画面でButtonクラス等でボタンを作り、Buttonクラスの押下イベント処理を取得する事は可能でしょうか?
・ボタン画像を作成した場合、そのボタンの表示と押下イベント取得は一般的にどういう方法が適切なのでしょうか?

初心者ですみません。
画像ボタンとButtonクラスのボタン、どういうイベント取得が適切なのか考えてます。
ちなみに、画面のほかの部分ではCanvasというのを利用し作ってます。

どこか一部でも解答頂けると助かります。よろしくお願いします。

A 回答 (1件)

一般的なGUIとして用意されているButtonなどのパーツは、標準でクリックした時のイベント処理機能などを内蔵しています。

これを使うのがもっとも簡単です。単純に、ボタンや入力フィールドなどを組み合わせた画面を作るときはこれで十分です。ただし、これらのGUIパーツは、既に完成されたものですから表示をカスタマイズしたりできません。

Canvasは、GUIではなく、グラフィックを表示するための部品です。これは描画メソッドを使って自由に表示を作れますが、Canvas全体に関するイベント処理が用意されているのみです。そもそもCanvas内に何がどう表示されるかすべてプログラマが考えて作るのですから、イベント処理も自分で作るしかありません。

Canvasを使っているのであれば、ボタンのグラフィックを自分で作ってそれを表示し、onTouchEventでクリック地点からボタンが押されたかどうかを調べ、押された場合はクリックしたグラフィックを描画してイベント処理を実行する、といったことをすべて自分で実装しないといけません。

それは面倒というのであれば、例えば画面にはRelativeLayoutなどを配置し、そこにCanvasとButtonを表示する、といったやり方はあるでしょう。このへんは、どれが正解というのはありません。そのアプリにどれが最適か考えてみてください。

個人的には、Canvasを使ってグラフィック描画を中心としたアプリを作るなら、面倒でもボタンの表示やイベント処理もすべてCanvasを使い、自前でプログラムを書くのが一番だと思います。面倒ではあっても、それが最終的には一番扱いやすいコードになるでしょう。
    • good
    • 0
この回答へのお礼

丁寧なご回答ありがとうございます。
参考にさせていただきます。

お礼日時:2014/07/09 00:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!