mManager = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
button = new ImageView(this);
// button.setBackgroundResource(R.drawable.delete);
list = new ListView(MainActivity4.this);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
List<String> data = new ArrayList<>();
for (int i = 0; i < 100; i++) {
data.add(i+"");
}
list.setAdapter(new ArrayAdapter<String>(MainActivity4.this, android.R.layout.simple_list_item_1, data));
WindowManager manager = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
WindowManager.LayoutParams params = new WindowManager.LayoutParams();
// 设置悬浮type,不设置会报错
params.type = WindowManager.LayoutParams.TYPE_PHONE;
// 设置背景透明
params.format = PixelFormat.TRANSPARENT;
// 设置不获取焦点,不设置会导致所有焦点分发不到底层界面
params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
params.width = WindowManager.LayoutParams.WRAP_CONTENT;
params.height = WindowManager.LayoutParams.WRAP_CONTENT;
params.gravity = Gravity.END;
params.x = 0;
params.y = 0;
if (manager != null) {
if (!click) {
params.windowAnimations = android.R.style.Animation_Translucent;
manager.addView(list, params);
} else {
manager.removeView(list);
}
click = !click;
}
}
});
// View button = getLayoutInflater().inflate(R.layout.test_layout, (ViewGroup) getWindow().getDecorView());
// View button = getLayoutInflater().inflate(R.layout.test_layout, null);
// button.setClickable(false);
// DrawerLayout button = new DrawerLayout(this);
// button.setLayoutParams(new DrawerLayout.LayoutParams(DrawerLayout.LayoutParams.MATCH_PARENT, DrawerLayout.LayoutParams.MATCH_PARENT));
// TextView textView = new TextView(this);
// button.addView(textView);
WindowManager.LayoutParams params = new WindowManager.LayoutParams();
// 设置悬浮type,不设置会报错
params.type = WindowManager.LayoutParams.TYPE_PHONE;
// 设置背景透明
// params.format = PixelFormat.RGBA_8888;
// 设置不获取焦点,不设置会导致所有焦点分发不到底层界面
params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
// params.gravity = Gravity.END;
params.width = 240;
params.height = WindowManager.LayoutParams.MATCH_PARENT;
if (mManager != null) {
mManager.addView(button, params);
}
高版本注意获取权限,这样能完成视频在顶层播放、顶层通用显示、顶层通用按钮等需求
@Override
protected void onPause() {
// removeView();
super.onPause();
}
private void removeView() {
mManager.removeViewImmediate(button);
if (click) {
mManager.removeView(list);
}
}
activity退出时候清除添加的view