Как использовать экран контактных данных, например Lollipop

Я хочу реализовать экран контактных данных, например, Android 5.0 aka Lollipop.

Чтобы описать больше, когда мы нажимаем на значок/изображение любого контакта, один снимок открывается вверх снизу экрана. По умолчанию этот вид заполняет половину экрана, а оставшаяся вершина экрана прозрачна с добавлением немного альфа.

Во-вторых, View изменяет свое положение вверх пальцем в направлении вверх, а также прозрачная часть становится более темной, и в одной позиции имя контакта (TextView) начинает уменьшать размер шрифта. Это продолжается до тех пор, пока не станет частью ActionBar.

У меня есть некоторые вопросы относительно того, как реализовать это

  • Является ли контактная информация Просмотр отдельного действия с прозрачной половиной вверху или наложение только на экран списка контактов

  • Какое наилучшее возможное решение для показа анимации с жестом (изменение положения с помощью пальца).

  • Как уменьшить размер клавиатуры с помощью пальца и как определить, что теперь TextView должен начать уменьшать размер шрифта

  • Последнее: Как сделать TextView частью панели действий с изменениями пальца.

Ответ 1

Используйте 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();

И когда у вас есть прокручиваемые виджеты (Nested Scrollview или RecyclerView) в вашем раздутом макета, он будет работать очень плавно.

Интересная часть - вы можете установить начальную высоту содержимого

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