安卓悬浮窗的写法
来源:互联网 发布:网络打印机服务器 编辑:程序博客网 时间:2024/05/29 09:48
public void createTestWindow(final View layout){
int lastviewX, lastviewY;
final int [] lastviewXY=new int[2];
final WindowManager.LayoutParams wmParams;
mWindowManager = (WindowManager) getApplication().getSystemService(
getApplication().WINDOW_SERVICE);
wmParams = new WindowManager.LayoutParams();
wmParams.type = WindowManager.LayoutParams.TYPE_PHONE;
// wmParams.format = PixelFormat.RGBA_8888;
wmParams.flags =WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
// wmParams.gravity = Gravity.CENTER_HORIZONTAL;
wmParams.gravity = Gravity.LEFT | Gravity.TOP;
wmParams.x =0;
wmParams.y =0;
// 设置悬浮窗口长宽数据
wmParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
wmParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
LayoutInflater inflater = LayoutInflater.from(getApplication());
mWindowManager.addView(layout, wmParams);
layout.measure(View.MeasureSpec.makeMeasureSpec(0,
View.MeasureSpec.UNSPECIFIED), View.MeasureSpec
.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
layout.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.i("event", event.getAction()+"");
if (event.getAction() == MotionEvent.ACTION_MOVE) {
// getRawX是触摸位置相对于屏幕的坐标,getX是相对于按钮的坐标
wmParams.x =(int) event.getRawX()-(lastX-lastviewXY[0]);
wmParams.y =(int) event.getRawY()-(lastY-lastviewXY[1]);
if(wmParams.x==-1){
return true;
}
mWindowManager.updateViewLayout(layout, wmParams);
}
if(event.getAction() == MotionEvent.ACTION_DOWN){
lastX = (int) event.getRawX();//
lastY = (int) event.getRawY();
layout.getLocationOnScreen(lastviewXY);
}
return true;
}
});public void createTestWindow(final View layout){
int lastviewX, lastviewY;
final int [] lastviewXY=new int[2];
final WindowManager.LayoutParams wmParams;
mWindowManager = (WindowManager) getApplication().getSystemService(
getApplication().WINDOW_SERVICE);
wmParams = new WindowManager.LayoutParams();
wmParams.type = WindowManager.LayoutParams.TYPE_PHONE;
// wmParams.format = PixelFormat.RGBA_8888;
wmParams.flags =WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
// wmParams.gravity = Gravity.CENTER_HORIZONTAL;
wmParams.gravity = Gravity.LEFT | Gravity.TOP;
wmParams.x =0;
wmParams.y =0;
// 设置悬浮窗口长宽数据
wmParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
wmParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
LayoutInflater inflater = LayoutInflater.from(getApplication());
mWindowManager.addView(layout, wmParams);
layout.measure(View.MeasureSpec.makeMeasureSpec(0,
View.MeasureSpec.UNSPECIFIED), View.MeasureSpec
.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
layout.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.i("event", event.getAction()+"");
if (event.getAction() == MotionEvent.ACTION_MOVE) {
// getRawX是触摸位置相对于屏幕的坐标,getX是相对于按钮的坐标
wmParams.x =(int) event.getRawX()-(lastX-lastviewXY[0]);
wmParams.y =(int) event.getRawY()-(lastY-lastviewXY[1]);
if(wmParams.x==-1){
return true;
}
mWindowManager.updateViewLayout(layout, wmParams);
}
if(event.getAction() == MotionEvent.ACTION_DOWN){
lastX = (int) event.getRawX();//
lastY = (int) event.getRawY();
layout.getLocationOnScreen(lastviewXY);
}
return true;
}
});
}
}
- 安卓悬浮窗的写法
- 安卓悬浮窗
- 安卓悬浮窗小球的实现
- 安卓桌面悬浮窗
- 安卓手机超强的悬浮窗工具
- 安卓可以移动的悬浮框
- 安卓悬浮窗点击,拖动和双击冲突的解决方法
- 安卓6.0关于悬浮窗导致"检测到屏幕叠加层"的开发端解决方案
- 安卓欢迎页的写法
- 安卓接口回调的写法
- 安卓线程切换优雅的写法
- 安卓Andriod使用入门(九)【悬浮窗菜单】
- 解决安卓悬浮窗异常:java.lang.IllegalArgumentException
- 安卓6.0版本下悬浮窗实现
- 菜鸟的安卓实习之路---微信悬浮窗通知窗口怎么做怎么做?
- 安卓悬浮圆点功能
- 安卓常用代码写法
- 安卓四大事件写法:
- 构建需求响应式亿级商品详情页
- ubuntu安装完整版的vim
- 在ScrollView中嵌套ListView的导致ListView只显示一两行
- margin父元素与子元素margin合并问题
- 线程与网络编程(第六节:通信协议与TCP socket初识)
- 安卓悬浮窗的写法
- 如何阅读别人的程序
- Tomcat文件详解
- WWDC16苹果开发者大会之AppleWatch的改变
- Android activity切换动画
- javaScript动态创建数组、动态赋值json数据方法之一(持续补充)
- DOM编程艺术(样式操作)
- ubuntu下安装redis
- java实现 几秒前,几分钟前,几小时前,几天前,几月前,几年前的显示