Моя первая идея заключалась в том, чтобы сделать логическое isLocked
и после нажатия кнопки изменить это значение на противоположное и переопределить все функции / события и т.д. c, которые вы хотели бы заблокировать, и если isLocked
истинно, просто не делайте этого выполнить их.
Вот простой код, в котором я заблокировал кнопку возврата (в java, но ее можно легко изменить на Kotlin)
public class MainActivity extends AppCompatActivity
{
boolean isLocked = false;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
isLocked ^= true;
System.out.println(isLocked);
}
});
}
@Override
public void onBackPressed()
{
if (!isLocked)
{
super.onBackPressed();
}
}
}
Я думаю, что аналогичным образом вы можете заблокировать каждое событие.
Вы также можете сделать что-то вроде этого:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if (!isLocked)
{
return super.onKeyDown(keyCode, event);
}
else
{
return true;
}
}
Это отменит каждое событие, такое как нажатие кнопки возврата или изменение громкости