SlideUp / Down View с сенсорным событием - PullRequest
0 голосов
/ 15 марта 2019

Я пытаюсь сдвинуть вверх / вниз представление, основанное на событии касания пользователя, например на нижнем листе.Он должен двигаться вниз, если вид перетаскивается ниже 50% от общей высоты контейнера.Точно так же это должно также подняться.Высота вида должна быть изменена в зависимости от события перетаскивания.Я также прилагаю пример видео для лучшего понимания. enter image description here

Ниже приведен код, который я пробовал

 parentView.setOnTouchListener(new OnSwipeTouchListener(mContext) {
                @Override
                public void onSwipeUp() {
                    super.onSwipeUp();
                    if (!isUp) {
                        DisplayMetrics displayMetrics = new DisplayMetrics();
                        getActivity().getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
                        getHeightWidth();
                        onSlideViewButtonClick(height, card1);
                        pausePlayer();
                        storiesProgressView.pause();
                        // Changing button image to play button
                        iv_play_pause.setImageResource(R.drawable.play);
                        isPlayBeforeGlossaryOpen = isPlaying;
                        isPlaying = false;
                        isPaused = true;

                    }
                }

                @Override
                public void onSwipeDown() {
                    super.onSwipeDown();
                    if (getFragmentManager().getBackStackEntryCount() != 0) {
                        manager.save("backFromPlayer", true);
                        getFragmentManager().popBackStackImmediate();
                        hints.setOverlayImage("");
                    }
                }
            });

  public void onSlideViewButtonClick() {
        if (isUp) {
            CommonUtilities.slideDown(slidingView, changedHeight);
            // up_arrow.setVisibility(View.VISIBLE);
        } else {
            CommonUtilities.slideUp(slidingView, changedHeight);
            // up_arrow.setVisibility(View.GONE);
        }
        isUp = !isUp;
    }

 public static void slideUp(View view, int height) {
        view.setVisibility(View.VISIBLE);
        TranslateAnimation animate = new TranslateAnimation(
                0.0f,                 // fromXDelta
                0.0f,                 // toXDelta
                height / 2,  // fromYDelta
                0.0f);                // toYDelta
        animate.setDuration(500);
        animate.setFillAfter(true);
        view.startAnimation(animate);
    }

    public static void slideDown(View view, int height) {
        TranslateAnimation animate = new TranslateAnimation(
                0.0f,                 // fromXDelta
                0.0f,                 // toXDelta
                0.0f,                 // fromYDelta
                height / 2); // toYDelta
        animate.setDuration(1000);
        // animate.setFillAfter(true);

        animate.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {

            }

            @Override
            public void onAnimationEnd(Animation animation) {
                animation.setFillAfter(false);
                view.setClickable(false);
                view.setVisibility(View.GONE);
            }

            @Override
            public void onAnimationRepeat(Animation animation) {

            }
        });
        view.startAnimation(animate);

    }

В настоящее время это только проведите вверх /вниз, но не перетаскивает вид вверх и вниз.

...