Как заблокировать экран при нажатии определенной кнопки

OPTIMIST .KZ

У меня есть страница входа, после нажатия кнопки "Войти" мне нужно временно заблокировать экран до получения ответа от сервера.

1 ответ

OPTIMIST .KZ

Вы можете просто отобразить оверлей с индикатором прогресса поверх всех остальных View, главное, не забудьте сделать его кликабильным (android:clickable="true"):

<!--?xml version="1.0" encoding="utf-8"?-->
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent">
    <framelayout android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent">
    <relativelayout android:id="@+id/progressBarOverlay" android:visibility="gone" android:clickable="true" android:background="@color/overlay_grey" android:layout_width="match_parent" android:layout_height="match_parent">
        <progressbar android:id="@+id/progressBar" android:indeterminate="true" android:layout_centerinparent="true" android:layout_width="wrap_content" android:layout_height="wrap_content">
    </progressbar></relativelayout>
</framelayout></relativelayout>

В этом примере FrameLayout -- это контейнер всех остальных элементов на странице, а RelativeLayout c id progressBarOverlay -- полупрозрачный оверлей (прозрачность регулируется цветом @color/overlay_grey). В нужный момент просто сделайте оверлей видимым progressBarOverlay.setVisisbility(View.VISISBLE), а затем измените значение обратно на View.GONE, чтобы убрать оверлей.

licensed under cc by-sa 3.0 with attribution.