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
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
相关文章推荐
- Android四大组件之Content Provider
- 生产实习(Android)四
- Android动画(3)--属性动画
- Android中使用Handler造成内存泄露的分析和解决
- Android监听软键盘弹出与收起
- 七牛---Android SDK进行代码混淆配置
- android studio使用
- Android动画(2)视图动画
- Android项目实战之战途牛
- Android内存溢出 (oom)实战
- android之旅3:内外部存储读写数据
- Android动画(1)--帧动画
- android解决方法数超过65536问题
- android activity生命周期
- 利用drozer进行Android渗透测试
- MVP模式在Android开发中的应用
- ListView中停靠(悬浮)效果
- android内存管理(三)
- MPAndroidchart 教程:图例 Legend(七)
- Android用surface直接显示yuv数据