Canvas にシェイプを描画し、ユーザーがその Canvas で実行したクリックに関する情報を取得しようとしています。
Button クラスを拡張するクラスを作成しました。
class CustomDrawableButton extends Button {
private final ShapeDrawable mDrawable;
int x = 50;
int y = 50;
int width = 30;
int height = 30;
public CustomDrawableButton (Context context) {
super(context);
mDrawable = new ShapeDrawable (new OvalShape ());
mDrawable.getPaint().setColor(Color.GREEN);
mDrawable.setBounds(x, y, x + width, y + height);
}
protected void onDraw(Canvas canvas) {
mDrawable.draw(canvas);
}
}
次に、View も拡張するクラスで、インスタンス化とリスナーを追加しました。
CustomDrawableButton mCustomDrawableButton = new CustomDrawableButton(getBaseContext());
layout.addView(mCustomDrawableButton);
mCustomDrawableButton.draw(canvas);
mCustomDrawableButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
System.out.println("Yey clicked");
Toast.makeText(view.getContext(), "Yey", Toast.LENGTH_LONG).show();
}});
これを実行すると、画像/ボタンのクリックを検出できません。ShapeDrawable オブジェクトは「クリック可能」にできないことを読みましたが、ボタン (ビューであり、「クリック可能」) を拡張しているので、これが機能することを期待していました。
これは可能ですか?この方法ではない場合、キャンバスまたはビューで押された画面座標に関する情報を取得する方法を教えてもらえますか?
前もって感謝します。