gpt4 book ai didi

java - 为 Bottom Sheet Android Studio创建凹凸效果

转载 作者:行者123 更新时间:2023-12-03 10:12:17 24 4
gpt4 key购买 nike

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

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

我正在使用

private BottomSheetBehavior bottomSheetBehavior;


private NestedScrollView bottomSheetStoreResult;

有人在其代码中实现了这一点吗?

谢谢大家 ! :)

最佳答案

老答案-见下文




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

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

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

首先,我在onCreate()中使用了getViewTreeObserver()来获取我的bottomsheetlayout的peekheight。

    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()方法。与上面的处理程序答案相比,它看起来更流畅,更美观。

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

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

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

关于java - 为 Bottom Sheet Android Studio创建凹凸效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61448887/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com