Как добиться функциональности слайда вверх и вниз в Android на каком-то событии

Как я могу достичь следующего вида функциональности. Я хочу щелкнуть элемент списка и показать список элементов, который появляется снизу до середины экрана. Кроме того, как только пользователь выбирает этот элемент, эта панель закрывается. Ниже приведен снимок номеронабирателя Android, который появляется снизу при нажатии на значок номеронабирателя и перемещается вниз при нажатии кнопки «Назад».

Как сделать диалоговое окно перемещается снизу к середине экрана в Android

Я нашел вышеупомянутую ветку, но мне не удалось добиться этого, как это происходит для следующего номеронабирателя. Решение в приведенном выше потоке позволяет диалогу скользить снизу до середины экрана, но его ширина не занимает весь размер экрана.

Было бы хорошо, если бы кто-то мог направить меня в правильном направлении.

Dialer


person kuldeep    schedule 06.07.2015    source источник


Ответы (2)


Используйте эту анимацию при отображении пользовательского интерфейса.

<?xml version="1.0" encoding="utf-8"?>
 <set xmlns:android="http://schemas.android.com/apk/res/android">
   <translate android:fromYDelta="75%p" android:toYDelta="0%p" 
    android:fillAfter="true"
 android:duration="500"/>
</set>

это будет скользить снизу вверх.

person Vishwajit Palankar    schedule 06.07.2015
comment
Он скользит снизу вверх, но скользящая часть не занимает всю ширину экрана. ! - person kuldeep; 06.07.2015
comment
измените fromYDelta и toYDelta по своему усмотрению. - person Vishwajit Palankar; 06.07.2015
comment
нет, это не работает так, как оно отображается для панели набора номера Android на телефоне, я сомневаюсь, что это правильный подход! - person kuldeep; 06.07.2015

добавьте код ниже при создании диалога

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.dialog);
    WindowManager.LayoutParams lp = this.getWindow().getAttributes();
    lp.width = UIUtil.getScreenWidth(getContext());
    lp.gravity = Gravity.BOTTOM;
    this.getWindow().setAttributes(lp);
}


 <style name="dialogTheme" parent="@android:style/Theme.Dialog">
    <item name="android:windowFrame">@null</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:background">@android:color/transparent</item>
    <item name="android:windowBackground">@android:color/transparent</item>
</style>

вы также должны установить тему для диалога, вызвать super(context, R.style.dialogTheme) в его конструкторе

person rainash    schedule 06.07.2015
comment
@k2ibegin Я использую UIUtil, чтобы получить экран с использованием context.getResources().getDisplayMetrics().widthPixels для его достижения - person rainash; 06.07.2015
comment
Я пробовал, но все тот же результат! диалоговое окно появляется, но то же самое в центре экрана и не занимает всю ширину экрана! - person kuldeep; 06.07.2015