7

この 5 つのボタンのようなものが必要です。1 つのボタンが他の 4 つのボタンに囲まれています。ちょうどこのような:

ここに画像の説明を入力

Android では正方形のビューしか持てないことを知っています。OpenGlか何か?関連するものへのリンクはありますか?基本的には、くっついたカーブしたボタンが欲しいです。

4

2 に答える 2

3

私の推測では、結局のところ、カスタム ビューでこれを行う方が簡単になるでしょう。

ただし、ストック ビューを使用する場合は、次のことをお勧めします。まず、RelativeLayout コンテナーを使用して、外側の 4 つのボタンを 2x2 グリッドに配置します。次に、中央のグリッドに重なるように中央のボタンを配置します。中央のボタンを周囲の 4 つのボタンよりも高い Z (ユーザーに近い) に配置します。次に、ボタン画像の一部として透明度を使用して、希望どおりに見えるようにします。それから(できれば)試してみてください。Z オーダーが正しければ、中央のボタンは他の 4 つのボタンのいずれかに移動するタップをキャプチャします。

中央のボタンの四角形が周囲の四角形に侵入するため、これは実際にはこのままでは機能しません。それが機能するかどうかはわかりませんが、中央のボタンをボタンの「ピース」の別のグリッドに置き換えてみてください。中央のボタン イメージがグリッド セルと重なる場所を除いて、グリッドには空の位置があります。外側のボタン画像に侵入しないように、これを十分に細かくする必要があります。

編集

TouchDelegateオブジェクトのグループを使用してこれを行うことができるのではないかと思いました。最初に説明したようにボタンを配置しますが、コンテナーのみをクリック可能にします。TouchDelegateタップ座標の下にあるボタン (存在する場合) を見つけるために5 秒を使用します。残念ながら、ヒット領域でTouchDelegateしか動作しないため、出発点から離れてしまいます。Rectただし、TouchDelegate のソースを共食いして、単なるRect. (形状クラスには、ヒットをテストするのと同等のRect.contains()ものが必要です。Android には何も組み込まれていませんが、特定の形状に対して独自のクラスを簡単に作成できます。)

ヒットと委任のロジックを親コンテナー ビューに直接配置することで、コードを少し単純化することもできますが、コンテナー自体からイベント処理を分離する再利用可能な委任クラスを用意する方がすっきりすると思います。

于 2012-09-04T01:31:24.413 に答える
1

たとえば、マスクの色を使用できます。投稿した画像のような完全に赤いボタン、赤いボタンに対してピクセルカラーチェックを行うだけです。

bool insideMyAwsomeShapeButton(int mouse_x,int mouse_y) {
      if get_image_pixel_color_at_pos(mouse_x,mouse_y) == rgbcolor(1,0,0)
    {
             return true;
    }

            return false; }

繰り返しますが、これは単なる考えです。ピクセルの色を確認するなど、タスクを実行するには、Android で特定の API を見つける必要があります。

于 2012-09-04T04:43:30.557 に答える