如何实现像 Lollipop 这样的联系人详细信息屏幕

How to Implement Contact details screen like Lollipop

我想实现联系人详细信息屏幕,例如 Android 5.0 aka Lollipop。

当我们点击任何联系人的 icon/image 时,为了描述更多,一个视图从屏幕底部向上滑动。默认情况下,此视图占满屏幕的一半,屏幕的剩余顶部是透明的,并添加了少量 alpha。

其次,View 向上移动手指向上滑动,同时透明部分变得更暗,并且在一个位置联系人名称 (TextView) 开始减小其字体大小。这一直持续到它成为 ActionBar 的一部分。

我对如何实现这个有一些疑问

  1. 是联系人详细信息查看单独的activity,顶部透明一半,或者仅覆盖联系人列表屏幕

  2. 用手势显示动画的最佳解决方案是什么(用手指滑动改变位置)。

  3. 如何通过手指滑动缩小键盘大小以及如何确定现在 TextView 应该开始缩小其字体大小

  4. 最后一个是如何通过手指滑动更改使 TextView 成为操作栏的一部分

使用android.support.design.widget.BottomSheetDialog

例如:

BottomSheetDialog mBottomSheetDialog = new BottomSheetDialog(this);
View view = getLayoutInflater().inflate(R.layout.your_layout, null);
// do any view specific operations here like adding click listener etc..,
mBottomSheetDialog.setContentView(view);
mBottomSheetDialog.show();

当你的布局中有任何可滚动的小部件(嵌套滚动视图或 RecyclerView)时,它会工作得非常流畅。

有趣的是您可以设置初始内容高度

BottomSheetBehavior mBehavior = BottomSheetBehavior.from((View) view.getParent());
mBehavior.setPeekHeight(dialog height);