2011年7月15日金曜日

フリック

開発環境:
Windows Vista Home
eclipse 3.5(ガリレオ)
ADT_今日の時点で最新の物(バージョン不明)
JavaSDK 1.6.0_24
AndroidSDK_r11
開発・ターゲットVer=Android2.1


テスト環境:
テスト媒体:エミュレータ
↑SDK ManagerでVer2.1のHVGAで作成


フリック=指を画面にタッチして上下左右、どっちかにタッチしたまま動かし指を離す
これをすばやく行う


・フリックの実装

// タッチダウン、移動、タッチアップを全部自分で計算してやる方法もあるがめんどくさい
// Gesture系のオブジェクトがあるのでそれを使って実装
private GestureDetector mDetector;

// ジェスチャー検出クラス(フリック等)
public class TestActivity extends Activity implements GestureDetector.OnGestureListener {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);




        // ジェスチャーオブジェクトの生成
        mDetector = new GestureDetector(this, this);
    }

    /**
    * @param e0 指を置いた時の位置
    * @param e1 現在の位置
    * @param velocityX X軸の移動距離
    * @param velocityY Y軸の移動距離
    */
    // フリックを司るメソッド
    @Override
    public boolean onFling(MotionEvent e0, MotionEvent e1,
                            float velocityX, float velocityY)
    {
        // ここにフリック時の実装をする
        if (e0.getX() < e1.getX()) {
            // 右へフリック(指をタッチした後、右へ動かす)
        } else {
            // 左へフリック(指をタッチした後、左へ動かす)
        }
        // getY() で上下に対応
    }

    /* (非 Javadoc)
     * 背景画面でもボタンの上でもどこでもタッチイベントが取れる万能メソッド
     */
    @Override
    public boolean dispatchTouchEvent(MotionEvent event) {
        super.dispatchTouchEvent(event);
        mDetector.onTouchEvent(event);
        return onTouchEvent(event);
    }
}

「onTouchEvent」メソッドもあるが、これは条件によってはイベントが走らない。

なので常にどこをタッチしてもイベントが走る「dispatchTouchEvent」を使用する。


    ↓クリックで、このブログの評価が上がり執筆者が喜びます
にほんブログ村 IT技術ブログ プログラム・プログラマーへ
   にほんブログ村

0 件のコメント: