タッチイベントの処理

タッチイベントが発生すると、_Canvas クラスを継承したクラスの processEvent() メソッドが呼び出されます。このメソッドの中で、イベントのタイプとパラメータを識別してください。processEvent() メソッドの記述例は次のようになります。

    public void processEvent( int type, int param )
    {
        switch( type )
        {
        case TOUCH_DOWN_EVENT:
            // タッチされた
            break;
        case TOUCH_MOVE_EVENT:
            // ムーブした
            break;
        case TOUCH_UP_EVENT:
            // タッチが離された
            break;
        }
    }

イベントのタイプは、_Canvas.TOUCH_DOWN_EVENT_Canvas.TOUCH_MOVE_EVENT_Canvas.TOUCH_UP_EVENT の3種類で、パラメータは、タッチIDです。

タッチイベントXY値は、_Canvas クラスの getTouchX()getTouchY() メソッドで取得できます。

レイアウトタッチイベントの処理

setLayout() メソッドでレイアウトを適用している場合、レイアウトタッチイベントが発生するようになり、_Canvas クラスを継承したクラスの processEvent() メソッドが呼び出されます。processEvent() メソッドの記述例は次のようになります。

    public void processEvent( int type, int param )
    {
        switch( type )
        {
        case LAYOUT_DOWN_EVENT:
            // レイアウトがタッチされた
            break;
        case LAYOUT_UP_EVENT:
            // レイアウトのタッチが離された
            break;
        }
    }

イベントのタイプは、_Canvas.LAYOUT_DOWN_EVENT_Canvas.LAYOUT_UP_EVENT の2種類で、パラメータは、レイアウトIDです。

タッチされているレイアウトの判別

イベント検知以外に、タッチされているレイアウトを判別する方法があります。_Canvas クラスの getLayoutState() メソッドを使用する方法です。使用例を示します。

int layout = getLayoutState();

if( (layout & (1 << 2)) != 0 )
{
    // レイアウトIDが 2 のレイアウトが押されている
}