1

ボタンと 4 つの選択肢があるため、ユーザーは以下のように上下にスクロールしてそのうちの 1 つを選択する必要があります。フリング/ベロシティ効果を含むアニメーションでスクロールしたい。以下のコードを使用すると、1 レベルスクロールできます。続行して戻るにはどうすればよいですか?

ここに画像の説明を入力

    btnLevel.setOnTouchListener(new OnTouchListener()
    {

        @Override
        public boolean onTouch(View v, MotionEvent event)
        {

            gDetector.onTouchEvent(event);

            return false;
        }
    });

    gDetector = new GestureDetector(getActivity(), new OnGestureListener()
    {
        private static final int SWIPE_MIN_DISTANCE = 110;
        private static final int SWIPE_MAX_OFF_PATH = 50;
        private static final int SWIPE_THRESHOLD_VELOCITY = 100;


        @Override
        public boolean onSingleTapUp(MotionEvent e)
        {
            // TODO Auto-generated method stub
            return false;
        }

        @Override
        public void onShowPress(MotionEvent e)
        {
            // TODO Auto-generated method stub

        }

        @Override
        public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)
        {
            // TODO Auto-generated method stub
            return false;
        }

        @Override
        public void onLongPress(MotionEvent e)
        {
            // TODO Auto-generated method stub

        }

        @Override
        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
        {
            float dY = e1.getY() - e2.getY();

            if (Math.abs(velocityY) >= SWIPE_THRESHOLD_VELOCITY && Math.abs(dY) >= SWIPE_MIN_DISTANCE)
            {
                if (dY > 0)
                {
                    Toast.makeText(getActivity(), "up", Toast.LENGTH_SHORT).show();

                } else
                {                                                                                       Toast.makeText(getActivity(), "down", Toast.LENGTH_SHORT).show();

                      TranslateAnimation mAnimation = new TranslateAnimation(0, 0, 0, 110);
              mAnimation.setDuration(1000);
          mAnimation.setRepeatMode(Animation.RELATIVE_TO_SELF);
          mAnimation.setInterpolator(new LinearInterpolator());
          mAnimation.setFillAfter(true);
          btnLevel.startAnimation(mAnimation);

                }
                return true;

            }
            return true;
        }

        @Override
        public boolean onDown(MotionEvent e)
        {
            // TODO Auto-generated method stub
            return false;
        }
    });
4

1 に答える 1

0

アニメーション リスナーを実装し、onAnimationEnd メソッドをオーバーライドする必要があります

このドキュメントをチェックしてください

于 2013-09-04T13:06:52.293 に答える