为底部工作表的android studio创建凹凸效果

问题描述 投票:1回答:1

有一个折叠的底片,我希望这个底片在我想要的时候(当我更新一些数据时)产生一点碰撞效果

您认为最佳做法是什么?使用设置的bottomsheetpeeklayoutheight属性吗?

我正在使用

private BottomSheetBehavior bottomSheetBehavior;

带有

private NestedScrollView bottomSheetStoreResult;

是否有人在其代码中实现了此功能?

谢谢大家! :)

java android effect bottom-sheet bump
1个回答
0
投票

旧答案-见下文

。。

好吧,我正在与处理程序一起执行此操作,我知道使用它们并不总是一个很好的解决方案,但是在这里它是一种轻型任务,持续1秒钟。

但是它正在工作,就像我一直在期待的一样这是最重要的!

如果您有更好的解决方案,我仍然想听听你们的意见:

首先,我在onCreate()中使用getViewTreeObserver()来获取我的bottomsheetlayout的外观高度。

    bottomSheetPeekLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            bottomSheetPeekLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this);
            peekHeight = bottomSheetPeekLayout.getHeight();
        }
    });

然后,在网络结果中,我只使用了setPeekHeight,因为有将动画设置为true选项可用:

    final Handler h1 = new Handler();
    h1.postDelayed(new Runnable() {
        @Override
        public void run() {
            h1.removeCallbacksAndMessages(this);
            if (bottomSheetBehavior.getState() == BottomSheetBehavior.STATE_COLLAPSED){
                bottomSheetBehavior.setPeekHeight(peekHeight*3, true);
            final Handler h2 = new Handler();
            h2.postDelayed(new Runnable() {
                @Override
                public void run() {
                    h2.removeCallbacksAndMessages(this);
                    bottomSheetBehavior.setPeekHeight(peekHeight, true);
                }
            }, 400);
        }
        }
    }, 600);

。。

更新

。。

由于我虽然使用自己的持续时间是一个非常糟糕的主意,但我决定使用animate()方法。与以前的答案相比,它的工作更流畅,更好。

如果您要使用它,请确保您的底页足够高以进行翻译,而在动画过程中在底端不留空白。

使用此:

    bottomSheetStoreResult.animate()
            .translationYBy(-250)
            .setDuration(300)
            .setListener(new AnimatorListenerAdapter() {
                @Override
                public void onAnimationEnd(Animator animation) {
                    super.onAnimationEnd(animation);
                    bottomSheetStoreResult.animate()
                            .translationY(0)
                            .setDuration(300);
                }
            });

您可以自定义延迟,它会更干净:)享受吧!

© www.soinside.com 2019 - 2024. All rights reserved.