我知道 SO 对“我该怎么做”的问题非常不满,但这次我没有找到解决办法。
我是一个经验丰富的专家 Android 开发人员,所以我觉得问这个问题真的很傻,但我刚刚安装了这个应用程序 ,它做了一些我认为不可能的事情。
也就是说,它会监听屏幕手势(在这种情况下是从屏幕边缘向内滑动),无论您在设备上的哪个位置......意思是,它会在您在 Launcher 主屏幕上以及当您在其他应用程序......无论你在做什么,它都在监听,当它检测到从屏幕边缘滑动时,它会让你带出一个隐藏的设置抽屉,然后作为一个透明的(片段?对话框?)View在顶部您在使用的任何其他应用程序以及在被解雇时(通过按 BACK 键)会让您在之前的体验中处于任何位置。
老实说,我不知道这是怎么可能的,并且真的很想朝正确的方向推动。[编辑]
有两件事你必须处理:
显示顶部视图。为此,您需要使用特殊权限TYPE_SYSTEM_ALERT。这是在顶部显示视图的代码:
Run Code Online (Sandbox Code Playgroud)final WindowManager.LayoutParams param=new WindowManager.LayoutParams(); param.flags=WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; final View view=findViewById(R.id.view1); final ViewGroup parent=(ViewGroup)view.getParent(); if(parent!=null) parent.removeView(view); param.format=PixelFormat.RGBA_8888; param.type=WindowManager.LayoutParams.TYPE_SYSTEM_ALERT; param.gravity=Gravity.TOP|Gravity.LEFT; param.width=view.getLayoutParams().width; param.height=view.getLayoutParams().height; final WindowManager wmgr=(WindowManager)getApplicationContext().getSystemService(Context.WINDOW_SERVICE); wmgr.addView(view,param); // TODO handle overlapping title bar and/or action bar // TODO you must add logic to remove the view // TODO you must use a special permission to use this method :android.permission.SYSTEM_ALERT_WINDOW
保持应用程序的活力。为此,您需要创建一个在前台运行的服务,这意味着它使用通知。这是一个链接。
有很多应用程序具有此功能。我看到的第一个是AirCalc。
| 归档时间: |
|
| 查看次数: |
4030 次 |
| 最近记录: |