1

私はこれを持っています:

 @Override
 public void onTouch(final ControlTouchEvent event) {
    int action = event.getAction();

    if (action == Control.Intents.TOUCH_ACTION_PRESS) {
        Log.d("Touch Test", "Touch: Press at " + event.getX() + " - " + event.getY());

    }
    else if (action == Control.Intents.TOUCH_ACTION_RELEASE) {
        Log.d("Touch Test", "Touch: Release at " + event.getX() + " - " + event.getY());            
    } 

}

基本的には動作しますが、シングルプレス用です。説明させてください。

画面を押して同じ位置で放すと、「クリック」と呼ばれないように、両方のログが発生します。最初に押してから離します。

しかし、スクロールを管理したいので、押して指を動かし、画面の他の場所で離すと、プレスイベントが発生するだけです。

押したときの開始位置と離したときの終了位置が知りたいのでレイアウトをスクロールしたい!

どうすればそれを達成できますか?

ありがとう!

4

4 に答える 4

2

しかし、スクロールを管理したいので、押して指を動かし、画面の他の場所で離すと、プレスイベントが発生するだけです。

これは、スワイプイベントを行っているためだと思います。リリースすると、Control.Intent.TOUCH_ACTION_RELEASEではなくControl.Intents.SWIPE_DIRECTION_[UP|DOWN|RIGHT|LEFT]アクションがトリガーされます。

スワイプ イベントが必要ない場合は、マニフェストからスワイプ インテントを削除できます。それ以外の場合は、SWIPE インテントを使用してスクロールを管理することを検討する必要があります。主な違いは、スワイプ イベントではスワイプの大きさを取得せず、方向のみを取得することですが、ほとんどの場合はそれで十分です。

于 2013-11-13T12:39:26.457 に答える
1

SmartWatch 2 は、タッチ検出に関して一貫して機能していません。したがって、すべてTOUCH_ACTION_PRESSのイベントの後にイベントが続くわけではありませんTOUCH_ACTION_RELEASEが (SmartWatch 1 の場合のように)、SWIPEたとえば、イベントが後に続く場合があります。また、SWIPEイベントは簡単にトリガーされるため、必要に応じてスクロールを実装しようとしても成功しません。

最善の方法は、Gallery と ListView を使用してスムーズにスクロールすることです。

于 2013-11-15T22:45:41.857 に答える
0

他の人が言ったように、「スクロール」はそのままではサポートされていません。

SDK は優れていますが、いくつかの機能が不足しています。ソニーが将来的にアップデートしてくれることを願っていますが、今では遅すぎるかもしれません

これは私が自分のアプリでやったことです:

を使用しTOUCH_ACTION_PRESSてプレス アクションをグローバル オブジェクトに保存し、SWIPEイベントを使用して方向を取得しました。

Swipe ルーチンでは、イベントが作成されたかどうかを尋ね、PRESS作成されている場合は、SWIPE 方向で「スクロール」を行います。

より良い感触を得るために、Y軸のどこから開始したかを尋ねPRESSます。たとえば、プレスが画面の下部から開始され、スワイプが上にスワイプされた場合、画面の半分からプレスが開始された場合よりもビューを移動します.

あまりスムーズではありませんが、これ以上の方法はないと思います。もう 1 つのオプションは、オンスクリーン ボタンを使用することですが、私はそれらが好きではありません。

于 2013-11-16T13:49:30.690 に答える