MIUI顯示懸浮窗

1. 使用懸浮框java

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

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的機器沒法彈出懸浮窗,經查證,小米有作個權限,默認懸浮窗都不能彈出。app

 

解決:ide

一、在桌面找到系統應用「安全中心」
  
輕擊一下即進入了此應用
  

二、點擊右下角的「受權管理」進入
  

點擊第二項「應用權限管理」就進入了詳細的管理界面
       

三、右滑進入權限管理,在最下方找到懸浮窗選修,點擊進入ui

4. 點擊圖標勾選容許3d

 

相關文章
相關標籤/搜索