您的位置:首页 > 移动开发 > Android开发

Android WindowManager悬浮窗

2015-12-22 23:05 459 查看

Android WindowManager悬浮窗
Android WindowManager悬浮窗的实现代码不难,悬浮窗创建成功后将悬浮悬停在设备的屏幕桌面上。悬浮窗通常使用情况:假设APP需要消失在屏幕时候保留一定的操作入口,则可以考虑使用。

需要增加权限:

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

一个简单的Android WindowManager悬浮窗实现代码:

import android.app.Activity;
import android.content.Context;
import android.graphics.PixelFormat;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;

public class MainActivity extends Activity {

private WindowManager windowManager;
private Button button;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

// 悬浮窗
button = new Button(this);
button.setText("悬浮窗 Zhang Phil @CSDN");
button.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// 作为测试,点击后删除该悬浮窗(即Button按钮)
windowManager.removeView(button);
}
});

windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
WindowManager.LayoutParams params = new WindowManager.LayoutParams();

// 靠手机屏幕的左边居中显示
params.gravity = Gravity.CENTER | Gravity.LEFT;

params.type = WindowManager.LayoutParams.TYPE_PHONE;
params.format = PixelFormat.RGBA_8888;

// 如果设置以下属性,那么该悬浮窗口将不可触摸,不接受输入事件,不影响其他窗口事件的传递和分发
// params.flags=LayoutParams.FLAG_NOT_TOUCH_MODAL
// |LayoutParams.FLAG_NOT_FOCUSABLE | LayoutParams.FLAG_NOT_TOUCHABLE;

// 可以设定坐标
// params.x=xxxx
// params.y=yyyy

params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;

// 透明度
// params.alpha=0.8f;

params.width = WindowManager.LayoutParams.WRAP_CONTENT;
params.height = WindowManager.LayoutParams.WRAP_CONTENT;

windowManager.addView(button, params);

// 更新
// windowManager.updateViewLayout(button, params);
}
}


代码运行结果:



附录文章:

《Android CircularFloatingActionMenu:作为系统级按钮悬浮桌面弹出菜单使用(3)》链接地址:http://blog.csdn.net/zhangphil/article/details/50271303
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: