我知道对“如何做到这一点”的问题非常不满,但这次我没有看到解决方法。
我是一位经验丰富且专业的Android开发人员,所以我觉得这个问题真的很傻,但我刚刚安装了this app 它做了我认为不可能的事情。
即,它会监听屏幕手势(在这种情况下,从屏幕边缘向内滑动)无论您在设备上的位置......意味着,当您在Launcher主屏幕上时,它会监听在其他应用程序中......无论你正在做什么,它都在聆听,当它检测到从屏幕边缘滑动时,它会让你带出一个隐藏的设置抽屉,然后它就像一个透明的(片段?对话框)? )View
除了你所在的任何其他应用程序之外,当被解雇时(通过回击)离开你在你以前的任何地方。
老实说,我不知道这是怎么可能的,并且真的很想在正确的方向上轻推。 [编辑]
答案 0 :(得分:4)
你需要处理两件事:
在顶部显示视图。为此,您需要使用特殊权限TYPE_SYSTEM_ALERT。这是一个用于显示顶部视图的代码:
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
让应用程序保持活力。为此,您需要创建一个在前台运行的服务,这意味着它使用通知。 here's a link
有很多应用程序具备此功能。我见过的第一个是AirCalc。
答案 1 :(得分:3)
现在这被认为是安装在Android 4.0.3+中的安全漏洞:问题:TYPE_SYSTEM_OVERLAY in ICS这被称为tapjacking。恕我直言,现在应该避免创建依赖于此功能的东西,因为如果在将来的版本中找到其他方法,它现在正式修补。但是,这个问题确实有一个答案,告诉你如何在4.0.3+中做到这一点如果你确实选择走这条路线,那么请注意你的能力可能会随着新版本的Android而消失。