zoukankan      html  css  js  c++  java
  • MIUI显示悬浮窗

    1. 使用悬浮框

    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

    2. 具体实现

    package com.pandans.hnairexam;
    
    import com.pandans.sunshine.provider.SunShineDB.BookT;
    
    import android.app.Application;
    import android.content.Context;
    import android.graphics.PixelFormat;
    import android.util.DisplayMetrics;
    import android.view.Gravity;
    import android.view.WindowManager;
    import android.view.WindowManager.LayoutParams;
    
    public class ExamApplication extends Application {
    	private WindowManager.LayoutParams windowParams = null;
    
    	public WindowManager.LayoutParams getWindowParams() {
    		if (windowParams == null) {
    			createWindowParams();
    		}
    		return windowParams;
    	}
    
    	private WindowManager.LayoutParams createWindowParams() {
    		windowParams = new WindowManager.LayoutParams();
    		windowParams.type = WindowManager.LayoutParams.TYPE_PHONE;
    		windowParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
    				| WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
    				| WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH;
    		windowParams.format = PixelFormat.TRANSLUCENT;
    		/*
    		 * 注意,flag的值可以为: 下面的flags属性的效果形同“锁定”。 悬浮窗不可触摸,不接受任何事件,同时不影响后面的事件响应。
    		 * LayoutParams.FLAG_NOT_TOUCH_MODAL 不影响后面的事件
    		 * LayoutParams.FLAG_NOT_FOCUSABLE 不可聚焦 LayoutParams.FLAG_NOT_TOUCHABLE
    		 * 不可触摸
    		 */
    		// 调整悬浮窗口至左上角,便于调整坐标
    		windowParams.gravity = Gravity.LEFT | Gravity.TOP;
    		// 以屏幕左上角为原点,设置x、y初始值
    		windowParams.x = 0;
    		windowParams.y = 0;
    
    		setDisplay(windowParams);
    		return windowParams;
    	}
    
    	/**
    	 * 拖动更改位置
    	 * 
    	 * @param x
    	 * @param y
    	 */
    	public void updateWindows(int x, int y) {
    		windowParams.y = y;
    		((WindowManager) getSystemService(WINDOW_SERVICE)).updateViewLayout(
    				mFloatView, windowParams);
    	}
    
    	public void setDisplay(WindowManager.LayoutParams params) {
    		DisplayMetrics dm = new DisplayMetrics();
    		((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay()
    				.getMetrics(dm);
    		params.width = LayoutParams.MATCH_PARENT;
    		params.height = (int) (dm.heightPixels * 0.4);
    		
    //		params.height = 200;
    	}
    
    	private PFloatView mFloatView;
    
    	public void createView(Context cnt) {
    		if (mFloatView == null) {
    			mFloatView = new PFloatView(cnt);
    			mFloatView.setSpinnerData(cnt, getContentResolver().query(
    					BookT.CONTENT_URI, null, null, null, null));
    			((WindowManager) getSystemService(WINDOW_SERVICE)).addView(
    					mFloatView, getWindowParams());
    		}
    	}
    
    	public void clearView() {
    		if (mFloatView != null) {
    			((WindowManager) getSystemService(WINDOW_SERVICE))
    					.removeView(mFloatView);
    			mFloatView = null;
    		}
    	}
    
    }
    

      

    实际使用过程中发现miui的机器无法弹出悬浮窗,经查证,小米有做个权限,默认悬浮窗都不能弹出。

    解决:

    1、在桌面找到系统应用“安全中心”
      
    轻击一下即进入了此应用
      

    2、点击右下角的“授权管理”进入
      

    点击第二项“应用权限管理”就进入了详细的管理界面
           

    3、右滑进入权限管理,在最下方找到悬浮窗选修,点击进入

    4. 点击图标勾选允许

  • 相关阅读:
    使用AntDesignBlazor的Notification等组件
    Blazor入门笔记(6)-组件间通信
    Blazor入门笔记(5)-数据绑定
    Blazor入门笔记(4)-组件的生命周期
    Blazor入门笔记(3)-C#与JS交互
    Blazor入门笔记(2)-分部类组件与组件的继承
    Blazor入门笔记(1)-从0构建一个组件
    添加右键上下文菜单后,点击后需要获取到源控件
    NPOI,给指定的excle创建个下拉框验证
    有的时候,给指定的控件,追加一个装饰器Adorner,备注下
  • 原文地址:https://www.cnblogs.com/pandans/p/4576708.html
Copyright © 2011-2022 走看看