我是小螃蟹吖~ 2023-02-24 12:05 采纳率: 88.9%
浏览 22
已结题

BeeWare开发Android应用

我正在用Python写一个控制手机使用时间的程序,但是怎样把窗口置顶?
就像锁机软件一样,不让打开多任务,不能打开控制中心,不能打开通知中心,等等
我用的是Bee Ware开发安卓应用,
各位请多多指教。

  • 写回答

2条回答 默认 最新

  • GPT_Pro 2023-02-24 12:30
    关注

    该回答内容部分引用GPT,GPT_Pro更好的解决问题
    使用BeeWare开发Android应用时,可以利用Android的WindowManager来实现窗口置顶功能。WindowManager可以被用来添加、移除、更新和查询Android应用中的窗口(View),其中也包括置顶功能。

    我们可以通过下面的代码来实现窗口置顶功能:

    // 获取WindowManager实例
    WindowManager windowManager = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
    // 创建一个LayoutParams对象
    WindowManager.LayoutParams params = new WindowManager.LayoutParams();
    // 设置宽和高
    params.width = WindowManager.LayoutParams.MATCH_PARENT;
    params.height = WindowManager.LayoutParams.WRAP_CONTENT; 
    // 设置窗口的位置
    params.x = 0;
    params.y = 0; 
    // 设置窗口的样式,置顶效果就是布局在顶部,所以这里设置TYPE_SYSTEM_ALERT和TYPE_SYSTEM_OVERLAY,注意要加上android.permission.SYSTEM_ALERT_WINDOW权限,否则会报错
    params.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT | WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY; 
    // 设置窗口的标识,FLAG_NOT_FOCUSABLE表明不能获得焦点,这样用户就无法在此窗口上操作了 
    params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; 
    // 将View添加到WindowManager中去 
    windowManager.addView(view, params); 
    

    以上代码就可以实现将View添加到WindowManager中并且让其处于最顶部的效果。如果要想让View不被其他应用所遮挡,可以在Window的flags中加入FLAG_NOT_TOUCHABLE属性。另外,如果想要进一步定制,也可以在flags中加入FLAG_FULLSCREEN、FLAG_LAYOUT_IN_SCREEN、FLAG_LAYOUT_INSET_DECOR等属性。
    如果回答有帮助,望采纳。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月13日
  • 已采纳回答 6月5日
  • 创建了问题 2月24日

悬赏问题

  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Linux权限管理相关操作(求解答)
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表
  • ¥15 DbVisualizer Pro 12.0.7 sql commander光标错位 显示位置与实际不符
  • ¥15 android 打包报错
  • ¥15 关于stm32的问题
  • ¥15 ncode振动疲劳分析中,noisefloor如何影响PSD函数?