8

Androidアプリケーションにスワイプジェスチャーを実装するのは初めてです。以下のコードを使用して、ImageView を画面の左から右にスワイプしようとしています。

 public class MainActivity extends Activity implements OnClickListener{
private static final int SWIPE_MIN_DISTANCE = 10;
private static final int SWIPE_MAX_OFF_PATH = 250;
private static final int SWIPE_THRESHOLD_VELOCITY = 200;
private GestureDetector gestureDetector;
View.OnTouchListener gestureListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ImageView btnSwipe = (ImageView)findViewById(R.id.imgBtnSwipe);
    btnSwipe.setOnClickListener(this);
    gestureDetector = new GestureDetector(this, new MyGestureDetector());
    gestureListener = new View.OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            return gestureDetector.onTouchEvent(event);
        }
    };
    btnSwipe.setOnTouchListener(gestureListener);
}
class MyGestureDetector extends SimpleOnGestureListener {
    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
        try {
            if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
                return false;
            if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
                Toast.makeText(MainActivity.this, "Left Swipe", Toast.LENGTH_SHORT).show();
            }  else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
                Toast.makeText(MainActivity.this, "Right Swipe", Toast.LENGTH_SHORT).show();
            }
        } catch (Exception e) {
            // nothing
        }
        return false;
    }

}
@Override
public void onClick(View v) {
}
}

右スワイプでトースト メッセージが表示されます。しかし、画像は動かない。どうすればそれを実装できますか? サンプルコード/リンクを手伝ってください。

4

2 に答える 2

7

以下のような簡単な解決策を見つけました。

右スワイプ (右方向) の場合:

btnSwipe.setTranslationX(e2.getX());

左スワイプ用(左に向かって)」

btnSwipe.setTranslation(e1.getX());

現在、ImageView は右から左、左から右に水平に遷移しています。ただし、これは AndroidAPIレベル 11 以降で機能します。

于 2013-11-10T07:42:35.997 に答える