長方形の領域全体ではなく、表示されている領域でのみクリックできる半ドーナツ型のボタンを作成したいと考えています。
http://i.stack.imgur.com/MKD45.png
クリックして、この青い領域だけに影響を与えたい。
長方形の領域全体ではなく、表示されている領域でのみクリックできる半ドーナツ型のボタンを作成したいと考えています。
http://i.stack.imgur.com/MKD45.png
クリックして、この青い領域だけに影響を与えたい。
これを行うには、 のBitmap
表現をButton
取得してから、x/y ピクセルのアルファ値をテストします。
ボタンのビットマップを取得するには:
Bitmap buttonBmp;
button.setDrawingCacheEnabled(true);
buttonBmp = Bitmap.createBitmap(button.getDrawingCache());
button.setDrawingCacheEnabled(false);
ボタンをタッチするたびに新しいビットマップを作成しないように、これを 1 回だけ実行して結果を保存することをお勧めします。
次に、ボタンの onTouchEvent をオーバーライドして、ユーザーがタップしたローカルの x/y を取得します。そのスポットのアルファが 0 の場合、クリックできない領域があります。ほど単純onClickListener
ではありませんが、機能するはずです。
このようにして、ドーナツだけでなく、任意の形状を使用できます。色、質感、何でも。