gpt4 book ai didi

android - 如何从底部屏幕禁用android snackbar打开动画

转载 作者:行者123 更新时间:2023-11-29 15:43:17 29 4
gpt4 key购买 nike

我正在使用来自 GITHUB 的 CustomSnackBar 库,

检查这个:https://github.com/TakeoffAndroid/CustomSnackBar/blob/master/app/src/main/java/com/takeoffandroid/customsnackbar/SnackBar.java

这对自定义我的 snackbar 非常有用。

但我想禁用 snackbar 打开动画,现在它从底部屏幕打开有一些持续时间(Y- 翻译)。

有什么方法可以在没有动画的情况下显示 snackbar 或禁用动画或将动画持续时间减少到 0(零)??

  • Android Studio ver:2.1
  • 编译Sdk版本23
  • buildToolsVersion "23.0.3"
  • 设计库:com.android.support:design:23.3.0提前致谢,

最佳答案

在当前版本 (design-24.1.0) 中,一个简单的修复看起来不可能,但有一种方法可以破解它(见下文)

Snackbar 内部,调用了 showView 方法来显示 snackbar

final void showView() {
[...]

if (ViewCompat.isLaidOut(mView)) {
if (shouldAnimate()) {
// If animations are enabled, animate it in
animateViewIn();
} else {
// Else if anims are disabled just call back now
onViewShown();
}
}

[...]
}

private boolean shouldAnimate() {
return !mAccessibilityManager.isEnabled();
}

showView 是最终的,所以我们不能做任何事情,而且我们不能触及任何确定是否应该为 snackbar 设置动画的代码。

关于动画本身,方法animateViewInanimateViewOut都是私有(private)的,里面的所有代码都依赖于私有(private)字段或常量

编辑:

为了模拟没有动画,我所做的是处理 Snackbar 的可见性

Snackbar snackbar = Snackbar.make(view, message, Snackbar.LENGTH_INDEFINITE);

snackbar.getView().setVisibility(View.INVISIBLE);

[...]

snackbar.setCallback(new Snackbar.Callback() {
@Override
public void onShown(Snackbar snackbar) {
super.onShown(snackbar);

snackbar.getView().setVisibility(View.VISIBLE);
}
});

snackbar.show();

因为在我的例子中我控制 Snackbar 何时消失,所以我可以这样做

  snackbar.getView().setVisibility(View.GONE);

snackbar.dismiss();

不幸的是,我认为这最后一步对于非不确定的 Snackbar 来说并不容易。解决这个问题的一种方法是在 LENGTH_SHORT 和 LENGTH_LONG 的持续时间内安排 setVisibility(View.INVISIBLE)

SnackbarManager 中。我们无法访问常量,但我们可以复制粘贴

private static final int SHORT_DURATION_MS = 1500;
private static final int LONG_DURATION_MS = 2750;

然后在您的代码中,Callback.onShown()

handler.postDelayed(new Runnable() {
@Override
public void run() {
snackbar.getView().setVisibility(View.INVISIBLE);
}
}, LONG_DURATION_MS or SHORT_DURATION_MS)

这个我自己没有测试过,也许应该在onShown之前调用。如果有人尝试过,请编辑帖子或在评论中让我知道。

关于android - 如何从底部屏幕禁用android snackbar打开动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37146416/

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