« 『MacBookPro』に『Windows7』をインストールしたときに全角半角入力の切り替えをどうすれば… | トップページ | 「Mac」から「Windows」が見えるのに「Windows」から「Mac」が見えない!? »

2012年4月18日 (水)

『onTap』のピンチ対策

『Android』で、『Google Maps API』を使用したときだ
マップの上にピンやマーカーなど
何かを表示するとなると『Overlay』を使うことになる。
そしてタッチやタップは、『Overlay』が管理する。

しかし、ピンチでもタップに信号が来てしまう。

つまり…

拡大縮小を目的にタッチしたのに、
最後にタップしたことになる…。

チョット困り者…。

で、その対策を考えた。

ポク、

ポク、

ポク、

チーン!

タッチで何とかならね?

で、タッチでこんな感じでフラグを入れたらうまくいった。

…と思う。

private class AddOverlay extends Overlay {
{
    ...
    //------------------------------
    boolean        tapOnFlag;
    //------------------------------
    public boolean onTouchEvent(android.view.MotionEvent event, com.google.android.maps.MapView mapView) {
        switch(event.getAction()) {
        case MotionEvent.ACTION_DOWN:    tapOnFlag    = true;            break;
        case MotionEvent.ACTION_MOVE:    tapOnFlag    = false;        break;
        }
        mapView.invalidate();
        return false;
    }
    //------------------------------
    public boolean onTap(GeoPoint geoPoint, MapView mapView) {
        if(tapOnFlag)
        {
            tapOnFlag    = false;
            tapGeoPoint    = new GeoPoint(point.getLatitudeE6(), point.getLongitudeE6());
            mapView.invalidate();
        }
        return false;
    }
}

ただ、これは、結構シビアな操作だったりする。

と言うのは、触れるか触れないかのやさしいタッチなら
開始点と終了点の置は、変わらないので良いのだが。

やや強めにタッチした時には、指先が変形し
タッチ位置が動いてしまう。
つまり「MotionEvent.ACTION_MOVE:」が実行されてしまうことがある。

これは、もう一工夫必要かかも…。

忘れないようにメモ。

2012年4月18日追記----------------

で、一工夫が思いついた。

「onTouchEvent」には、何番目のタッチかが入ってくるはず、
調べると「event.mNumPointers」に何番目が、格納されていた。
だが直接参照できないので参照用関数は、と探すと
「event.getPointerCount()」で参照できた。
で、以下のように書き換えた。

    public boolean onTouchEvent(android.view.MotionEvent event, com.google.android.maps.MapView mapView) {
        if(event.getPointerCount()==1) {
            if(event.getAction()==MotionEvent.ACTION_DOWN)
                tapOnFlag    = true;
            mapView.invalidate();
        } else {
            tapOnFlag    = false;
        }
        return false;
    }

ちなみにドラッグするとタップには、来ない。
なので、多分これで目的は、果たしていると思う。

ああ、早く作らねば!(T_T)

|

« 『MacBookPro』に『Windows7』をインストールしたときに全角半角入力の切り替えをどうすれば… | トップページ | 「Mac」から「Windows」が見えるのに「Windows」から「Mac」が見えない!? »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/108365/54498440

この記事へのトラックバック一覧です: 『onTap』のピンチ対策:

« 『MacBookPro』に『Windows7』をインストールしたときに全角半角入力の切り替えをどうすれば… | トップページ | 「Mac」から「Windows」が見えるのに「Windows」から「Mac」が見えない!? »