制作“从底部滑动”按钮(类似于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)的主要内容,如果未能解决你的问题,请参考以下文章