我正在使用Kotlin应用程序,我的 Activity 处于全屏状态,我想创建一个按钮,除非单击该按钮,否则无法退出或返回屏幕。就像视频播放器的锁定类型一样。

最佳答案

我的第一个想法是制作 bool(boolean) isLocked,然后在单击按钮后将此值更改为相反值,并覆盖您想锁定的所有函数/事件等,如果isLocked为true,则不要执行它们。
这是我锁定后退按钮的简单代码(在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;
    }
}

这将取消所有事件,例如单击“后退”按钮或更改音量

09-05 14:36