永发信息网

Android桌面悬浮窗效果怎么实现

答案:2  悬赏:60  手机版
解决时间 2021-04-04 07:12
Android桌面悬浮窗效果怎么实现
最佳答案
可以模仿360手机卫士悬浮窗的那份代码的基础上继续开发。
打开手机卫士主界面,然后上拉,然后点击快捷设置,然后点击桌面悬浮窗,就可以将360手机卫士安卓版桌面浮窗调出来了,具体步骤如下:
  1、安装最新的360手机卫士。
  2、点开隐私保护,打开右上角的三个点。
  3、点开卫士设置,点开悬浮窗。
  4、开启内存清理悬浮窗, 选择显示样式,安仔样式或是加速球。
  5、可以选择仅在桌面显示,若开启则悬浮窗只出现在桌面,若关闭则悬浮窗会跟随打开页面一直出现。
  6、可以同时开启拖动清理内存,这样直接拖动悬浮窗图标,就可以轻松清理内存了。
全部回答
可以根据项目需要改变其相应布局。 package com.zk.me; import java.util.list; import android.app.activity; import android.content.componentname; import android.content.context; import android.content.intent; import android.content.pm.packageinfo; import android.content.pm.packagemanager; import android.content.pm.packagemanager.namenotfoundexception; import android.content.pm.resolveinfo; import android.os.bundle; import android.view.gravity; import android.view.menu; import android.view.view; import android.view.view.onclicklistener; import android.view.window; import android.view.windowmanager; import android.widget.imageview; import android.widget.toast; public class mainactivity extends activity implements onclicklistener { private windowmanager windowmanager = null; private windowmanager.layoutparams windowmanagerparams = null; private myfloatview floatview = null; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); requestwindowfeature(window.feature_no_title);// 取消标题栏 getwindow().setflags(windowmanager.layoutparams.flag_fullscreen, windowmanager.layoutparams.flag_fullscreen);// 全屏 setcontentview(r.layout.activity_main); createview(); } public void ondestroy() { super.ondestroy(); // 在程序退出(activity销毁)时销毁悬浮窗口 } private void createview() { floatview = new myfloatview(getapplicationcontext()); floatview.setonclicklistener(this); imageview view = new imageview(this); view.setimageresource(r.drawable.ic_launcher); floatview.addview(view); // 这里简单的用自带的icon来做演示 windowmanager = (windowmanager) getapplicationcontext() .getsystemservice("window"); // 设置layoutparams(全局变量)相关参数 windowmanagerparams = ((floatapplication) getapplication()) .getwindowparams(); windowmanagerparams.type = 2003; // 设置window type // windowmanagerparams.format = pixelformat.rgba_8888; // 设置图片格式,效果为背景透明 // 设置window flag windowmanagerparams.flags = 40; windowmanagerparams.format = 1; // 调整悬浮窗口至左上角,便于调整坐标 windowmanagerparams.gravity = gravity.left | gravity.top; // 以屏幕左上角为原点,设置x、y初始值 windowmanagerparams.x = 0; windowmanagerparams.y = 0; // 设置悬浮窗口长宽数据 windowmanagerparams.width = 40; windowmanagerparams.height = 40; // 显示myfloatview图像 windowmanager.addview(floatview, windowmanagerparams); } public void onclick(view v) { toast.maketext(this, "clicked", toast.length_short).show(); opencld("com.jovian.android.pqgl", getapplicationcontext()); } public static void opencld(string packagename, context context) {// 打开移动警务应用 packagemanager packagemanager = context.getpackagemanager(); packageinfo pi = null; try { pi = packagemanager.getpackageinfo(packagename, 0); } catch (namenotfoundexception e) { } intent resolveintent = new intent(intent.action_main, null); resolveintent.addcategory(intent.category_launcher); resolveintent.setpackage(packagename); list apps = packagemanager.queryintentactivities( resolveintent, 0); resolveinfo resolveinfo = apps.iterator().next(); if (resolveinfo != null) { string classname = resolveinfo.activityinfo.name; intent intent = new intent(intent.action_main); intent.addcategory(intent.category_launcher); intent.setflags(intent.flag_activity_new_task); componentname cn = new componentname(packagename, classname); intent.setcomponent(cn); context.startactivity(intent); } } @override protected void onrestoreinstancestate(bundle savedinstancestate) { // todo auto-generated method stub super.onrestoreinstancestate(savedinstancestate); } @override public boolean oncreateoptionsmenu(menu menu) { getmenuinflater().inflate(r.menu.activity_main, menu); return true; } } package com.zk.me; import android.content.context; import android.graphics.rect; import android.util.log; import android.view.gravity; import android.view.motionevent; import android.view.view; import android.view.view.onclicklistener; import android.view.windowmanager; import android.widget.linearlayout; public class myfloatview extends linearlayout { private float mtouchx; private float mtouchy; private float x; private float y; private float mstartx; private float mstarty; private onclicklistener mclicklistener; private windowmanager windowmanager = (windowmanager) getcontext() .getapplicationcontext().getsystemservice("window"); // 此windowmanagerparams变量为获取的全局变量,用以保存悬浮窗口的属性 private windowmanager.layoutparams windowmanagerparams = ((floatapplication) getcontext() .getapplicationcontext()).getwindowparams(); public myfloatview(context context) { super(context); } @override public boolean ontouchevent(motionevent event) { // 获取到状态栏的高度 rect frame = new rect(); getwindowvisibledisplayframe(frame); int statusbarheight = frame.top; system.out.println("statusbarheight:" + statusbarheight); // 获取相对屏幕的坐标,即以屏幕左上角为原点 x = event.getrawx(); y = event.getrawy() - statusbarheight; // statusbarheight是系统状态栏的高度 log.i("tag", "currx" + x + "====curry" + y); switch (event.getaction()) { case motionevent.action_down: // 捕获手指触摸按下动作 // 获取相对view的坐标,即以此view左上角为原点 mtouchx = event.getx(); mtouchy = event.gety(); mstartx = x; mstarty = y; log.i("tag", "startx" + mtouchx + "====starty" + mtouchy); break; case motionevent.action_move: // 捕获手指触摸移动动作 updateviewposition(); break; case motionevent.action_up: // 捕获手指触摸离开动作 updateviewposition(); mtouchx = mtouchy = 0; if ((x - mstartx) < 5 && (y - mstarty) < 5) { if (mclicklistener != null) { mclicklistener.onclick(this); } } break; } return true; } @override public void setonclicklistener(onclicklistener l) { this.mclicklistener = l; } private void updateviewposition() { // 更新浮动窗口位置参数 windowmanagerparams.x = (int) (x - mtouchx); windowmanagerparams.y = (int) (y - mtouchy); windowmanager.updateviewlayout(this, windowmanagerparams); // 刷新显示 } }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我买了个iPhone6 plus想从5s上恢复可是他却说
送给女同桌生日祝福语,给情人的生日祝福语
达州市达川区乡镇供水总站地址有知道的么?有
昨天猫咪老是叫,有要分娩的前兆,然后等了一
宇宙不仅是物质的世界,也是运动着的世界,下
冰心的诗集《繁星春水》是人们公认的小诗最高
2016年android还可以找工作吗
跳广场舞音乐太长怎么把它速短
样式有点像电瓶车,烧油的,,请问那是什么车
正月()香又香,二月()花儿黄,
我想问一下 : 第一二三志愿都未录取 四五志
爱国诗歌手抄报小学生,小学生爱国诗歌(3分钟
下面划线字的注音有误的一项是A.憎恶(zèng
如何给汽车挑选汽车按摩坐垫?
兰州到汉中最快得多少时间
推荐资讯
表达梦想和现实的句子,生气后一起妥协的句子
金猫银猫在哪里?
唐人梦商城到底是做什么的?
幼师是干什么的,学前教育和幼师有什么区别
一道儿童测试题、求答案谢谢!
10000块钱,每年利息是1040,利率怎么算?
高一复学需不需要考试(不是中考)?如果考试
詹姆斯·麦克斯维尔是谁?一个科学家!我想要
法警考试是国考还是省考?!属于那个单位
云联惠是真的可以全返的吗?
为什么室内甲醛污染对儿童危害比成人更大?
觉得母亲非常势力,女儿再也不想见了,这样的
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?