Android —— Activity的Flags

Activity的Flags有很多,本文主要介绍一些比较常用的标记位。

标记为的作用有很多,有的标记位可以指定Activity的启动模式,比如 FLAG_ACTIVITY_NEW_TASKFLAG_ACTIVITY_SINGLE_TOP 等;还有的标记位可以影响Activity的运行状态,比如 FLAG_ACTIVITY_CLEAR_TOPFLAG_ACTIVITY_EXCLUDE_FROM_RECENTS 等。

下面,我将为大家介绍Activity常用的Flags。

FLAG_ACTIVITY_NEW_TASK

这个标记位的作用是为不同应用的Activity重新创建一个任务栈,并在新的任务栈中启动这个Activity,相同应用的Activity则直接创建在同一个任务栈中。

FLAG_ACTIVITY_SINGLE_TOP

这个标记位的作用是为Activity指定singleTop启动模式,其效果和在XML中指定该启动模式相同。

实践:MainActivity 在xml文件中设置的启动模式为standard模式

// 核心代码展示
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
   
    final static String TAG = "MainActivityLog";
    Button button;

    @Override
    protected void onCreate(Bundle
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Android 中的多个 Activity 中弹出对话框并将其置于顶部,可以使用以下步骤: 1. 创建一个单独的类来管理对话框的显示和隐藏。 2. 在该类中,创建一个无界面的 Activity 作为对话框容器,并将其属性设置为对话框样式。 3. 在 Activity 中,使用 WindowManager 将该对话框容器添加到 WindowManager 中。 4. 在需要显示对话框的 Activity 中,调用对话框管理器类的方法来显示对话框。 以下是一个示例代码: 1. 创建一个名为 DialogManager 的单例类: ``` public class DialogManager { private static DialogManager instance; private Dialog dialog; private WindowManager windowManager; private WindowManager.LayoutParams layoutParams; private DialogManager() { // 初始化对话框容器 Context context = MyApplication.getInstance(); View dialogView = LayoutInflater.from(context).inflate(R.layout.dialog_layout, null); dialog = new Dialog(context, R.style.DialogStyle); dialog.setContentView(dialogView); // 初始化 WindowManager 和 LayoutParams windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); layoutParams = new WindowManager.LayoutParams(); layoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_PANEL; layoutParams.format = PixelFormat.TRANSPARENT; layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT; layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT; layoutParams.gravity = Gravity.CENTER; layoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN; } public static DialogManager getInstance() { if (instance == null) { instance = new DialogManager(); } return instance; } public void showDialog() { if (!dialog.isShowing()) { windowManager.addView(dialog.getWindow().getDecorView(), layoutParams); } } public void hideDialog() { if (dialog.isShowing()) { windowManager.removeView(dialog.getWindow().getDecorView()); } } } ``` 2. 创建一个名为 DialogStyle 的样式: ``` <style name="DialogStyle" parent="Theme.AppCompat.Light.Dialog"> <item name="android:windowIsFloating">false</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowAnimationStyle">@style/DialogAnimation</item> </style> <style name="DialogAnimation"> <item name="android:windowEnterAnimation">@android:anim/fade_in</item> <item name="android:windowExitAnimation">@android:anim/fade_out</item> </style> ``` 3. 在需要显示对话框的 Activity 中,调用对话框管理器类的 showDialog() 方法来显示对话框: ``` DialogManager.getInstance().showDialog(); ``` 4. 在 Activity 销毁时,调用对话框管理器类的 hideDialog() 方法来隐藏对话框: ``` @Override protected void onDestroy() { super.onDestroy(); DialogManager.getInstance().hideDialog(); } ``` 请注意,此方法将对话框添加到 WindowManager 中,因此必须在 Activity 销毁时将其从 WindowManager 中删除,以避免内存泄漏。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值