Floatservice:
Package Com.home.floatwindow;import Android.app.service;import Android.content.context;import Android.content.intent;import Android.graphics.pixelformat;import Android.os.ibinder;import Android.util.Log; Import Android.view.gravity;import Android.view.motionevent;import Android.view.view;import Android.view.view.onclicklistener;import Android.view.view.ontouchlistener;import Android.view.WindowManager; Import Android.view.windowmanager.layoutparams;import Android.widget.imageview;import Android.widget.LinearLayout Import Com.home.testfolatwindow.r;public class Floatservice extends Service {private WindowManager wm;private Windowmanager.layoutparams wmlp;private linearlayout layout; @Overridepublic ibinder onbind (Intent Intent) {return null ;} @Overridepublic void OnCreate () {super.oncreate (); Createfloatview ();} private void Createfloatview () {wm = (WindowManager) getsystemservice (context.window_service); WMLP = new Windowmanager.layoutparams (); wmlp.type = layoutparams.type_phone;//Set the picture format, the effect isBackground transparent Wmlp.format = pixelformat.rgba_8888;//set floating window not focusable wmlp.flags = Layoutparams.flag_not_focusable;wmlp.gravity = Gravity.left | gravity.top;wmlp.x = 0;WMLP.Y = 0;wmlp.width = Windowmanager.layoutparams.wrap_content;wmlp.height = Windowmanager.layoutparams.wrap_content;layout = GetLayout (); Wm.addview (layout, WMLP); Layout.measure ( View.MeasureSpec.makeMeasureSpec (0,view.measurespec.unspecified), View.MeasureSpec.makeMeasureSpec (0, View.MeasureSpec.UNSPECIFIED)) ImageView IV = (ImageView) Layout.findviewbyid (1); Iv.setonclicklistener (new Onclicklistener () {@Overridepublic void OnClick (View v) {log.i ("onclick", "onclick");}); Iv.setontouchlistener (New Ontouchlistener () {@Overridepublic Boolean onTouch (View V, motionevent event) {// GETRAWX is the coordinate of the touch position relative to the screen, Getx is relative to the button's coordinates wmlp.x = (int) event.getrawx ()-layout.getmeasuredwidth ()/2;//minus 25 is the height of the status bar WMLP.Y = ( int) Event.getrawy ()-layout.getmeasuredheight ()/2-25;wm.updateviewlayout (layout, WMLP); return false;}); Private LinearLayout getlayout () {LinearLayout layout = new LinearLayout (this), ImageView IV = new ImageView (this); Iv.setbackgroundresource (( R.drawable.ic_launcher)); Iv.setid (1); Layout.addview (iv); return layout;} @Overridepublic void OnDestroy () {Super.ondestroy (); if (layout! = NULL) {//Remove suspended window Wm.removeview (layout);}}
Permissions:
<uses-permission android:name= "Android.permission.SYSTEM_ALERT_WINDOW"/>
Android Hover window