5

我正在使用 umano https://github.com/umano/AndroidSlidingUpPanel的向上滑动面板。我面临一个小而愚蠢的问题,但我无法解决它。滑动面板的二级布局有一个文本视图。当我通过向上拖动来展开它时,我希望 textView 减缓淡入淡出和消失(如在 SoundCloud 音乐应用程序中)。当我将它向下拖动时,textView 应该再次可见。如何解决?我尝试了很多,但都失败了。[![在此处输入图像描述][1]][1]

以红色标记的向上滑动面板。

MainActivity.java

 slidingUpPanelLayout = 
(SlidingUpPanelLayout)findViewById(R.id.sliding_layout);


    slidingUpPanelLayout.addPanelSlideListener(new 
SlidingUpPanelLayout.PanelSlideListener() {
        @Override
        public void onPanelSlide(View panel, float slideOffset) {

            SongNameSlide.setVisibility(panel.INVISIBLE);
            ArtistNameSlide.setVisibility(panel.INVISIBLE);
            buttonabc.setVisibility(panel.INVISIBLE);

        }

        @Override
        public void onPanelStateChanged(View panel, 
SlidingUpPanelLayout.PanelState previousState, SlidingUpPanelLayout.PanelState newState) {
            if(newState.equals(SlidingUpPanelLayout.PanelState.EXPANDED)&& 
previousState.equals(SlidingUpPanelLayout.PanelState.COLLAPSED)){
                SongNameSlide.setVisibility(panel.GONE);
                ArtistNameSlide.setVisibility(panel.GONE);
                buttonabc.setVisibility(panel.GONE);
                slidingUpPanelLayout.setDragView(panel);


            }

        else {

                SongNameSlide.setVisibility(panel.VISIBLE);
                ArtistNameSlide.setVisibility(panel.VISIBLE);
                buttonabc.setVisibility(panel.VISIBLE);
            }
        }
    });

    slidingUpPanelLayout.setFadeOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

 slidingUpPanelLayout.setPanelState (SlidingUpPanelLayout.PanelState.COLLAPSED);
        }
    });
4

1 回答 1

7

将 a 添加PanelSlideListener到滑动面板,onPanelSlide()每当用户移动面板时,都会使用面板布局和偏移值调用该函数。您可以将其添加为:

slidingUpPanelLayout.addPanelSlideListener(
    new SlidingUpPanelLayout.PanelSlideListener() {
        @Override
        public void onPanelSlide(View panel, float slideOffset) {
            SongNameSlide.setAlpha(slideOffset);
            ArtistNameSlide.setAlpha(slideOffset);
            buttonabc.setAlpha(slideOffset);
        }
    }
);

现在,您将获得范围从 0 到 1 的偏移量,指示面板已打开多少。使用此偏移值并将其设置为alpha您要隐藏的 UI 元素。

由于我不知道它将完全打开哪些值,如果它按要求正好相反,请以这种方式使用它们->SongNameSlide.setAlpha(1 - slideOffset);

于 2017-10-03T16:43:23.793 回答