Android悬浮框

总结一下Android悬浮框碰到的问题:

1、悬浮窗授权

   
   
  1. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
  2. if (!Settings.canDrawOverlays(getApplicationContext())) {
  3. Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
  4. startActivity(intent);
  5. return;
  6. } else {
  7. initViews();
  8. }
  9. } else {
  10. initViews();
  11. }
2、TYPE_TOAST和TYPEPHONE
部分小米手机TYPE_TOAST也需要权限

  
  
    
    
  1. mLayoutParams.type = WindowManager.LayoutParams.TYPE_TOAST;
3、点击回调和移动回调
    
    
  1. public interface OnUpdateViewLayoutListener {
  2. public void onUpdateViewLayout(float x, float y, View view);
  3. }
  4. public interface OnViewClickListener {
  5. public void onClick();
  6. }
4、 是否在前台
    
    
  1. private boolean isAppOnForeground() {
  2. ActivityManager activityManager = (ActivityManager) getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE);
  3. String packageName = getApplicationContext().getPackageName();
  4. List<ActivityManager.RunningAppProcessInfo> appProcesses = activityManager
  5. .getRunningAppProcesses();
  6. if (appProcesses == null)
  7. return false;
  8. for (ActivityManager.RunningAppProcessInfo appProcess : appProcesses) {
  9. if (appProcess.processName.equals(packageName)
  10. && appProcess.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
  11. return true;
  12. }
  13. }
  14. return false;
  15. }
1、悬浮框一直显示的话不需要加入方法4的判断;
2、如果app内部分界面显示悬浮框,可以在基类控制悬浮框的显示和隐藏。
demo下载地址:

希望对碰到类似问题的同学有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值