.setCancelable(false)这是啥意思?
时间: 2024-04-03 16:33:44 浏览: 84
.setCancelable(false)是一个Android中Dialog的方法,用于设置Dialog是否可以被取消。当设置为false时,用户不能通过点击Dialog外部或者按下back键来取消Dialog的显示,只能通过代码来手动关闭Dialog。反之,如果设置为true,则可以通过点击Dialog外部或者按下back键来取消Dialog的显示。
例如,如果我们想要在用户完成某些操作之前不允许他们关闭Dialog,就可以使用.setCancelable(false)来禁止用户取消Dialog。
相关问题
mNewSimUnlockProgressDialog = new ProgressDialog(mContext); String msg = mContext.getString(R.string.kg_sim_unlock_progress_dialog_message); mNewSimUnlockProgressDialog.setMessage(msg); mNewSimUnlockProgressDialog.setIndeterminate(true); mNewSimUnlockProgressDialog.setCancelable(false); if (!(mContext instanceof Activity)) { mNewSimUnlockProgressDialog.getWindow().setType( WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG); }这个dialog里面的if语句中的代码有什么作用
这段if语句中的代码用于设置ProgressDialog的窗口类型。如果当前的Context不是Activity,即当前的上下文环境不是一个活动(Activity),则通过设置ProgressDialog的窗口类型为WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG来使ProgressDialog能够显示在锁屏界面之上。这样可以保证用户在解锁SIM卡时,能够看到ProgressDialog的提示信息,而不会被锁屏界面覆盖。如果当前的Context是Activity,则无需设置窗口类型。
private void initView() { nowScore = (TextView) findViewById(R.id.now_score); bestScore = (TextView) findViewById(R.id.best_score); reset = (Button) findViewById(R.id.reset); reset.setOnClickListener(this); sp = PreferenceManager.getDefaultSharedPreferences(this); editor = sp.edit(); compot = AnimationUtils.loadAnimation(this, R.anim.synt); initData(); View view1 = LayoutInflater.from(this).inflate(R.layout.game_alert, null); dialog = new AlertDialog.Builder(this) .setCancelable(false) .setView(view1) .create(); alert_retrun = view1.findViewById(R.id.retrun_alert); alert_retrun.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { retrunMain(); dialog.dismiss(); } }); alertRestart = view1.findViewById(R.id.restart_alert); alertRestart.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { initData(); dialog.dismiss(); } }); zymBtn = (Button) findViewById(R.id.zym_btn); zymBtn.setOnClickListener(this); }解释这段代码
这段代码是在 2048 游戏中初始化界面的方法 initView()。具体解释如下:
首先,通过 findViewById() 方法获取界面中的各种控件,包括 nowScore(当前得分)、bestScore(最高得分)、reset(重置按钮)、zymBtn(作者信息按钮)等。同时,通过 setOnClickListener() 方法设置按钮的点击监听事件。
接下来,通过 PreferenceManager.getDefaultSharedPreferences() 方法获取 SharedPreferences 对象 sp,用于保存游戏数据。同时,通过 sp.edit() 方法获取 SharedPreferences.Editor 对象 editor,用于向 sp 中写入数据。
然后,通过 AnimationUtils.loadAnimation() 方法加载一个动画 compot,用于在游戏中控制方块的合并动画效果。
接下来,通过 LayoutInflater.from() 方法从 game_alert.xml 布局文件中获取一个 View 对象 view1,用于在游戏结束时弹出提示框。然后,通过 AlertDialog.Builder() 方法创建一个 AlertDialog 对象 dialog,设置其为不可取消,将 view1 设置为其视图,最后通过 create() 方法创建弹窗。
接着,分别获取弹窗视图中的两个按钮 alert_retrun(返回主界面)和 alertRestart(重新开始游戏),并分别设置它们的点击监听事件,用于在游戏结束时处理相应的操作。
最后,获取界面中的作者信息按钮 zymBtn,并设置其点击监听事件。当点击该按钮时,可以跳转到作者的个人主页等。
总之,这段代码实现了 2048 游戏中界面的初始化,并设置了相应的按钮点击监听事件,为游戏的正常进行奠定了基础。
阅读全文