制作“从底部滑动”按钮(类似于snackbar)(Android)

Posted

技术标签:

【中文标题】制作“从底部滑动”按钮(类似于snackbar)(Android)【英文标题】:Making "slide from bottom" button (similar to snackbar) (Android) 【发布时间】:2016-04-08 12:03:53 【问题描述】:

我想做一些事情,但不知道怎么做……那是一个按钮,它会从屏幕底部滑动到某个位置,由某些东西触发。与小吃店的显示方式非常相似,不同之处在于它会保持原位而不是消失,并且具有“可点击”的属性。这不是一个可从底部拖动的面板,而是一个由某些东西自动触发的滑动面板。

我怎样才能做到这一点?

【问题讨论】:

查看翻译动画示例。它用于在指定的持续时间内将某些视图从某个点移动到另一个点。 【参考方案1】:

听起来像是一个沿y 轴的相当简单的动画,其起始值与屏幕高度相匹配(这样它就在屏幕外渲染),无论最终值是多少。下面的代码来自内存,但它应该可以工作。

获取屏幕高度:

int getScreenHeight() 

    DisplayMetrics displaymetrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
    return displaymetrics.heightPixels;


并为视图设置动画(在本例中为屏幕总高度的 80%):

void animateOnScreen(View view) 

    final int screenHeight = getScreenHeight();
    ObjectAnimator animator = ObjectAnimator.ofFloat(view, "y", screenHeight, (screenHeight * 0.8F));
    animator.setInterpolator(new DecelerateInterpolator());
    animator.start();


【讨论】:

哦,顺便说一句...我在视图滑动的布局中有一个列表视图,你知道我如何创建额外的空间,以便滑动面板推动列表视图,因此不隐藏列表中的最后一项/多项? @LichitoMarcano 不客气!至于您的第二个问题,我想答案在于使用CoordinatorLayout - 如果在这种类型的布局中包装您的布局xml 文件不会自动随机播放视图以响应动画,Snackbar source code 可能给你一些进一步的想法。【参考方案2】:

将视图向下滑动一段距离:

view.animate().translationY(distance);

您可以稍后将视图滑回其原始位置,如下所示:

view.animate().translationY(0);

【讨论】:

以上是关于制作“从底部滑动”按钮(类似于snackbar)(Android)的主要内容,如果未能解决你的问题,请参考以下文章

使 Snackbar 向上推视图

Android Snackbar 的使用

浮动操作按钮在 SECOND Snackbar 下消失

AttributeError:“Snackbar”对象没有属性“show”

Android Snackbar简单解析

Android SnackBar使用方法