`

悬浮窗

阅读更多
类似于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悬浮窗

    在提供的压缩包文件中,"BG悬浮窗类库类库.elb" 文件很显然是一个针对e4a的悬浮窗功能的类库。悬浮窗是一种在Android应用中常用来显示实时信息或提供快捷操作的UI元素,它可以在其他应用之上显示,给用户带来便捷的...

    悬浮窗悬浮窗+锁屏悬浮窗+锁屏悬浮窗+锁屏悬浮窗+锁屏悬浮窗+锁屏

    在IT领域,悬浮窗和锁屏功能是移动设备和应用程序中的常见特性,它们为用户提供了一种便捷的操作方式。本文将详细解析这两个概念及其在实际应用中的实现与交互。 首先,让我们了解一下“悬浮窗”。悬浮窗是一种可以...

    E4A悬浮窗类库,面板悬浮窗类库

    在E4A中,"悬浮窗类库"是一种实用的组件,能够实现应用内的浮动窗口功能,类似于电脑上的桌面小工具。这种悬浮窗可以承载各种信息,如通知、计时器、快捷按钮等,为用户提供便捷的操作界面。 悬浮窗在E4A中的实现...

    Android桌面悬浮窗效果实现,仿360手机卫士悬浮窗效果 源码程序

    在Android开发中,实现桌面悬浮窗效果是一种常见的需求,它能提供便捷的交互方式,比如在其他应用上层显示信息或者快捷操作。本教程将基于360手机卫士的悬浮窗效果,介绍如何实现这样的功能。源码程序位于"360...

    安卓各种悬浮窗源码

    在安卓平台上,悬浮窗是一种非常常见且实用的功能,它能够在其他应用之上显示一个小窗口,提供额外的信息或控制。本资源包含的是关于安卓各种悬浮窗的源码,这为我们提供了深入理解悬浮窗实现机制的机会。接下来,...

    E4A悬浮窗类库,面板悬浮窗类库.zip

    标题中的“E4A悬浮窗类库,面板悬浮窗类库.zip”指的是一个基于E4A(Easy4App)编程语言的悬浮窗功能组件。Easy4App是一种面向Android平台的快速开发工具,它允许开发者使用简单的语法来创建应用程序。这个压缩包...

    Android 悬浮窗 可点击

    在Android开发中,悬浮窗(Floating Window)通常被称为系统级通知或者系统挂载窗口,它是一种可以在用户界面上层浮动显示的小窗口,常用于实时显示信息或者提供快捷操作。本篇将详细介绍如何创建一个可点击的...

    APP内悬浮窗

    在Android开发中,"APP内悬浮窗"通常指的是在应用程序界面上方显示的浮动窗口,这种功能常见于各种工具类应用、社交应用以及游戏等,为用户提供便捷的操作或信息提示。悬浮窗通常可以自由移动,甚至可以进行缩放,...

    Android实例源码-悬浮窗类安卓源代码(4例).zip

    在Android开发中,悬浮窗(Floating Window)是一种特殊类型的窗口,它可以显示在应用程序的顶层,甚至其他应用之上,用户可以在不关闭当前应用的情况下查看或操作悬浮窗内容。本压缩包包含四个具体的Android悬浮窗...

    Android 悬浮窗的实现源码

    在Android系统中,实现悬浮窗(也称为小窗口或overlay)是通过利用系统的窗口管理机制来达到在其他应用之上显示自定义视图的目的。这里,我们主要关注的是如何使用一个Service、自定义View以及Activity来完成这个...

    android桌面悬浮窗

    在Android系统中,桌面悬浮窗是一种非常实用的功能,它可以在用户使用其他应用程序的同时显示重要的信息或者提供便捷的操作入口。本文将深入探讨如何实现一个具备自由拖动和智能隐藏功能的Android桌面悬浮窗。 首先...

    android伸缩式悬浮窗

    在Android开发中,创建一个可伸缩式悬浮窗是一项实用且有趣的任务,它能为用户提供更灵活的操作体验。本文将详细讲解如何利用`WindowManager`实现这样的功能,并探讨相关技术要点。 首先,我们要理解`WindowManager...

    Android-Andorid任意界面悬浮窗实现悬浮窗如此简单

    这个标题“Android-Android任意界面悬浮窗实现悬浮窗如此简单”暗示了我们将探讨如何轻松地创建这样的功能。描述进一步强调了实现的简便性,让我们相信即使对Android开发不太熟悉的人也能理解并实现。 首先,我们要...

    android后台服务悬浮窗动态截屏

    在Android开发中,后台服务(Service)和悬浮窗(Floating Window)是两个关键概念,而动态截屏和录屏功能的实现则涉及到更深层次的技术。本文将深入探讨如何利用IntentService进行后台截屏,并实现悬浮窗来动态显示...

    android悬浮窗,android无需权限的悬浮窗

    android悬浮窗 android无需权限的悬浮窗例子 android悬浮窗权限 android拖动视图 安卓悬浮窗 安卓悬浮球 android悬浮球 大部分人实现的悬浮窗都需要授权悬浮窗权限,否则无法使用,但本人开发这个悬浮窗无需权限,...

    获取栈顶app包名显示到悬浮窗

    个人对于悬浮窗的学习,主要包括对悬浮窗的基本操作,悬浮窗在activity中的操作,以及悬浮窗在服务中的操作。参照guolin大神的第一篇博客,记录个人的学习总结。 demo 场景:使用服务,后台每隔5s获取栈顶app包名...

    可拖动的悬浮窗+对话框悬浮窗

    在Android开发中,创建一个可拖动的悬浮窗和对话框悬浮窗是一项常见的需求,尤其在实现自定义功能或者增强用户体验时。这个压缩包文件很可能包含了一套完整的示例代码,帮助开发者理解并实现这样的功能。下面将详细...

    Android应用内悬浮窗的实现方案示例

    1、悬浮窗的基本介绍 悬浮窗,大家应该也不陌生,凌驾于应用之上的一个小弹窗,实现上很简单,就是添加一个系统级别的窗口,Android中通过WindowManagerService( WMS)来管理所有的窗口,对于WMS来说,管你是...

    Android 悬浮窗权限各机型各系统适配大全(总结)

    Android 悬浮窗权限各机型各系统适配大全(总结) 本篇博客主要介绍了 Android 悬浮窗权限各机型各系统适配大全,涵盖了 Android 主流各种机型和各种版本的悬浮窗权限适配。鉴于 Android 系统的碎片化问题,在适配...

Global site tag (gtag.js) - Google Analytics