类似于360监视网络速度的那个悬浮窗
public class FloatWindowService extends Service {
WindowManager wm = null;
WindowManager.LayoutParams wmParams = null;
View view;
private float mTouchStartX;
private float mTouchStartY;
private float x;
private float y;
@Override
public void onCreate() {
super.onCreate();
setForeground(true);
view = LayoutInflater.from(this).inflate(R.layout.float_window, null);
}
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
createView();
}
private void createView() {
wm = (WindowManager) getApplicationContext().getSystemService("window");
wmParams = new WindowManager.LayoutParams();
wmParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;
wmParams.flags |= WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
wmParams.gravity = Gravity.LEFT | Gravity.TOP;
wmParams.x = 0;
wmParams.y = 0;
wmParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
wmParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
wmParams.format = PixelFormat.RGBA_8888;
wm.addView(view, wmParams);
view.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
x = event.getRawX();
y = event.getRawY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
mTouchStartX = event.getX();
mTouchStartY = event.getY() + view.getHeight() / 2;
break;
case MotionEvent.ACTION_MOVE:
updateViewPosition();
break;
case MotionEvent.ACTION_UP:
updateViewPosition();
mTouchStartX = mTouchStartY = 0;
break;
}
return true;
}
});
}
private void updateViewPosition() {
wmParams.x = (int) (x - mTouchStartX);
wmParams.y = (int) (y - mTouchStartY);
wm.updateViewLayout(view, wmParams);
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
悬浮窗的layout就请自行添加了,click事件只要注册一下onClickListener就可以了
注意
1. 必须在AndroidManifest.xml里添加permission
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
2. 由于这个悬浮窗实质上是一个Service,所以也必须声明
<service
android:name="FloatWindowService"
android:enabled="true" />
分享到:
相关推荐
悬浮窗+锁屏悬浮窗+锁屏悬浮窗+锁屏悬浮窗+锁屏悬浮窗+锁屏
亲测可用 e4a 易安卓 BG悬浮窗类库 类库 易安卓悬浮窗类库 e4a悬浮窗
android悬浮窗 android无需权限的悬浮窗例子 android悬浮窗权限 android拖动视图 安卓悬浮窗 安卓悬浮球 android悬浮球 大部分人实现的悬浮窗都需要授权悬浮窗权限,否则无法使用,但本人开发这个悬浮窗无需权限,...
E4A悬浮窗类库,面板悬浮窗类库
个人对于悬浮窗的学习,主要包括对悬浮窗的基本操作,悬浮窗在activity中的操作,以及悬浮窗在服务中的操作。参照guolin大神的第一篇博客,记录个人的学习总结。 demo 场景:使用服务,后台每隔5s获取栈顶app包名...
1、悬浮窗的基本介绍 悬浮窗,大家应该也不陌生,凌驾于应用之上的一个小弹窗,实现上很简单,就是添加一个系统级别的窗口,Android中通过WindowManagerService( WMS)来管理所有的窗口,对于WMS来说,管你是...
Android 悬浮窗 ,并且悬浮窗可点击,有响应事件
Android桌面悬浮窗效果实现,仿360手机卫士悬浮窗效果
安卓各种悬浮窗源码
Android实例源码-悬浮窗类安卓源代码(4例) Android 天天动听悬浮歌词源码 android 悬浮窗 android桌面悬浮窗效果进阶 仿360手机卫士、淘宝手机助手 浮动窗口播放器
APP内悬浮窗
Andorid 任意界面悬浮窗,实现悬浮窗如此简单
利用windowmanager实现的可伸缩式悬浮窗,可以跟随手指移动。
4.仿微信语音通话悬浮窗效果实现 4.1 需求分析及效果展示 4.2 实现 5.最后 1.基本介绍 Android 界面绘制都是通过 WindowManager 服务来实现的,WindowManager 对象可通过获取 WINDOW_SERVICE 系统服务得到,并...
特殊权限(Special Permissions)兼容库,悬浮窗权限(SYSTEM_ALERT_WINDOW)与系统设置修改权限(WRITE_SETTINGS) Android 6.0以前只要在manifest中申请了权限就是默认开启的 Android 6.0 需要在manifest中申请并且通过...
好记性不如烂笔头,有很多时候,别人打电话过来,跟你说了些事,你可能会忘记,那么该工具...4.可设置悬浮窗可否拖拽,来去电提示事件条目数,开机自启动 未解决: 开机自启动,因为没办法调试,所以不知道具体情况。
css3实现网页悬浮窗功能
实现了无需申请权限,既可以弹出悬浮窗的功能,包括miui,锤子、魅族等第三方ROM,可以点击和拖动悬浮窗(但是需要4.4以上的系统)
可拖动的悬浮窗+对话框悬浮窗,相关博文:http://www.cnblogs.com/tianzhijiexian/p/3994546.html