精华内容
下载资源
问答
  • 集成步骤dependencies { // 悬浮窗框架:https://github.com/getActivity/XToast implementation 'com.hjq:xtoast:6.5'}使用案例// 传入 Application 对象表示设置成全局的new XToast(XToastActivity.this) ....
    c4d6ddd1804f94fb102147e9975d7af7.png

    集成步骤

    dependencies {    // 悬浮窗框架:https://github.com/getActivity/XToast    implementation 'com.hjq:xtoast:6.5'}

    使用案例

    // 传入 Application 对象表示设置成全局的new XToast(XToastActivity.this)        .setView(R.layout.toast_hint)        // 设置成可拖拽的        //.setDraggable()        // 设置显示时长        .setDuration(1000)        // 设置动画样式        .setAnimStyle(android.R.style.Animation_Translucent)        // 设置外层不能被触摸        .setOutsideTouchable(false)        // 设置窗口背景阴影强度        .setBackgroundDimAmount(0.5f)        .setImageDrawable(android.R.id.icon, R.mipmap.ic_dialog_tip_finish)        .setText(android.R.id.message, "点我消失")        .setOnClickListener(android.R.id.message, new OnClickListener() {            @Override            public void onClick(XToast toast, TextView view) {                // 点击这个 View 后消失                toast.cancel();                // 跳转到某个Activity                // toast.startActivity(intent);            }        })        .show();

    框架亮点(原生 Toast 无法实现的功能)

    • 支持自定义 Toast 动画样式
    • 支持自定义 Toast 显示时长
    • 支持监听 Toast 的显示和销毁
    • 支持监听 Toast 中点击事件
    • 支持一键开启 Toast 拖拽功能
    • 支持 Toast 全局显示(需要悬浮窗权限)
    展开全文
  • Android中我们可以使用WindowManager来生成悬浮窗。WindowManager的三个最常用方法为: ①addView 添加View addView(View view, WindowManager.LayoutParams params); View就是要添加到windowmanager中的对象,...

    Android中我们可以使用WindowManager来生成悬浮窗。WindowManager的三个最常用方法为:

    ①addView 添加View

    addView(View view, WindowManager.LayoutParams params);

    View就是要添加到windowmanager中的对象,而params是窗口的设置参数,这个我们讲到代码阶段再说。

    ②removeView 移除View

    removeView(View view);

    从windowmanager中移除对象。

    ③updateViewLayout刷新View

    updateViewLayout(View view, ViewGroup.LayoutParams params);

    也是两个参数,一个View一个params,参考addView。

    下面简单介绍使用方法:

    1、Manifest需要添加的权限

    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
    
    <uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW"/>

    在Android 6.0后,Android需要动态获取权限,要使用权限,不仅仅要在Manifest文件中定义,还要在代码中动态获取

    //当AndroidSDK>=23及Android版本6.0及以上时,需要获取OVERLAY_PERMISSION.

    //使用canDrawOverlays用于检查,下面为其源码。其中也提醒了需要在manifest文件中添加权限.
     

    if (Build.VERSION.SDK_INT >= 23) {
    
                if (Settings.canDrawOverlays(MainActivity.this)) {
    
                    Intent intent = new Intent(MainActivity.this, MainService.class);
    
                    Toast.makeText(MainActivity.this,"已开启Toucher",Toast.LENGTH_SHORT).show();
    
                    startService(intent);
    
                    finish();
    
                } else {
    
                    //若没有权限,提示获取.
    
                    Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
    
                    Toast.makeText(MainActivity.this,"需要取得权限以使用悬浮窗",Toast.LENGTH_SHORT).show();
    
                    startActivity(intent);
    
                }
    
            } else {
    
                //SDK在23以下,不用管.
    
                Intent intent = new Intent(MainActivity.this, MainService.class);
    
                startService(intent);
    
                finish();
    
            }
    
    }


     

    2、创建悬浮窗主要代码

    在此Demo中,我们可以通过WindowManager来新建一个悬浮窗,悬浮窗的布局通过addView添加、悬浮窗更改位置通过updateViewLayout进行刷新、关闭悬浮窗时调用removeView,跟窗口说再见。
     

    private void createToucher(){
    
            //赋值WindowManager&LayoutParam.
    
            params = new WindowManager.LayoutParams();
    
            windowManager = (WindowManager)getApplication().getSystemService(Context.WINDOW_SERVICE);
    
            //设置type.系统提示型窗口,一般都在应用程序窗口之上.
    
            params.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
    
            //设置效果为背景透明.
    
            params.format = PixelFormat.RGBA_8888;
    
            //设置flags.不可聚焦及不可使用按钮对悬浮窗进行操控.
    
            params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
    
            //设置窗口初始停靠位置.
    
            params.gravity = Gravity.LEFT | Gravity.TOP;
    
            params.x = 0;
    
            params.y = 0;
    
            //设置悬浮窗口长宽数据.
    
            //注意,这里的width和height均使用px而非dp.这里我偷了个懒
    
            //如果你想完全对应布局设置,需要先获取到机器的dpi
    
            //px与dp的换算为px = dp * (dpi / 160).
    
            params.width = 300;
    
            params.height = 300;
    
            LayoutInflater inflater = LayoutInflater.from(getApplication());
    
            //获取浮动窗口视图所在布局.
    
            toucherLayout = (ConstraintLayout)inflater.inflate(R.layout.toucherlayout,null);
    
            //添加toucherlayout
    
            windowManager.addView(toucherLayout,params);
    
            Log.i(TAG,"toucherlayout-->left:" + toucherLayout.getLeft());
    
            Log.i(TAG,"toucherlayout-->right:" + toucherLayout.getRight());
    
            Log.i(TAG,"toucherlayout-->top:" + toucherLayout.getTop());
    
            Log.i(TAG,"toucherlayout-->bottom:" + toucherLayout.getBottom());
    
            //主动计算出当前View的宽高信息.
    
          toucherLayout.measure(View.MeasureSpec.UNSPECIFIED,View.MeasureSpec.UNSPECIFIED);
    
            //用于检测状态栏高度.
    
            int resourceId = getResources().getIdentifier("status_bar_height","dimen","android");
    
            if (resourceId > 0){
    
                statusBarHeight = getResources().getDimensionPixelSize(resourceId);
    
            }
    
            Log.i(TAG,"状态栏高度为:" + statusBarHeight);
    
            //浮动窗口按钮.
    
            imageButton1 = (ImageButton) toucherLayout.findViewById(R.id.imageButton1);
    
            //其他代码...
    
       }

    WindowManager使用方法大致介绍完了,在这里也提及下第三方框架FloatWindow,这个框架也可以实现悬浮窗的开发,并且大大简化代码量,有兴趣的可以查找资料学习。

    展开全文
  • 3.可自由指定要显示悬浮窗的界面 4.应用退到后台时,悬浮窗会自动隐藏 5.位置不可变的悬浮窗无需权限申请 6.位置及宽高可设置百分比值,轻松适配各分辨率 7.链式调用,简洁清爽 集成: 第 1 步、在工程的 build....

    特性:

    1.支持拖动,提供自动贴边等动画

    2.内部自动进行权限申请操作

    3.可自由指定要显示悬浮窗的界面

    4.应用退到后台时,悬浮窗会自动隐藏

    5.位置不可变的悬浮窗无需权限申请

    6.位置及宽高可设置百分比值,轻松适配各分辨率

    7.链式调用,简洁清爽

    集成:

    第 1 步、在工程的 build.gradle 中添加:

    	allprojects {
    		repositories {
    			...
    			maven { url 'https://jitpack.io' }
    		}
    	}
    复制代码

    第 2 步、在应用的 build.gradle 中添加:

    	dependencies {
    	        compile 'com.github.yhaolpz:FloatWindow:1.0.6'
    	}
    复制代码

    使用:

    0.声明权限

    
         <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
    
    复制代码

    1.创建悬浮控件

            FloatWindow
                  .with(getApplicationContext())
                  .setView(view)
                  .build();
    
    复制代码

    setView 方法可设置 View 子类或 xml 布局。

    2.控件宽高

            FloatWindow
                  .with(getApplicationContext())
                  .setView(view)
                  .setWidth(100)                   //100px
                  .setHeight(Screen.width,0.2f)    //屏幕宽度的 20%
                  .build();
    
    复制代码

    可设置具体数值或屏幕宽/高百分比,默认为 wrap_content。

    3.显示位置

            FloatWindow
                  .with(getApplicationContext())
                  .setView(view)
                  .setX(100)                      //100px
                  .setY(Screen.width,0.2f)        //屏幕宽度的 20%
                  .build();
    
    复制代码

    可设置具体数值或屏幕宽/高百分比,默认为 0,以屏幕左上角为原点。

    4.指定界面显示

            FloatWindow
                  .with(getApplicationContext())
                  .setView(view)
                  .setFilter(true, A_Activity.class, C_Activity.class)
                  .build();
    
    复制代码

    此方法表示 A_Activity、C_Activity 显示悬浮窗,其他界面隐藏。

                  .setFilter(false, B_Activity.class)
    复制代码

    此方法表示 B_Activity 隐藏悬浮窗,其他界面显示。

    注意:setFilter 方法参数可以识别该 Activity 的子类

    也就是说,如果 A_Activity、C_Activity 继承自 BaseActivity,你可以这样设置:

                  .setFilter(true, BaseActivity.class)
    复制代码

    5.可拖动悬浮窗

            FloatWindow
                  .with(getApplicationContext())
                  .setView(view)
                  .setMoveType(MoveType.slide)         //可拖动,释放后自动贴边
                  .build();
    
    复制代码

    共提供 4 种 MoveType :

    MoveType.slide : 可拖动,释放后自动贴边

    MoveType.back : 可拖动,释放后自动回到原位置

    MoveType.active : 可拖动

    MoveType.free : 不可拖动,但可改变位置

    如不设置,则为 fixed 模式,不可改变位置。

    6.悬浮窗动画

            FloatWindow
                  .with(getApplicationContext())
                  .setView(view)
                  .setMoveType(MoveType.slide)
                  .setMoveStyle(500, new AccelerateInterpolator())  //贴边动画时长为500ms,加速插值器
                  .build();
    
    复制代码

    自定义贴边或回到原位置过程的动画效果,只在 MoveType.slide 或 MoveType.back 模式下设置此项才有意义。默认减速插值器,默认动画时长为 300ms。

    7.后续操作

            //手动控制
            FloatWindow.get().show();
            FloatWindow.get().hide();
    
            //修改显示位置
            FloatWindow.get().updateX(100);
            FloatWindow.get().updateY(100);
    
            //销毁
            FloatWindow.destroy();
    
    复制代码

    以上操作应待悬浮窗初始化后进行,注意不能对 fixed 模式悬浮窗修改显示位置。

    8.多个悬浮窗

    
            FloatWindow
                    .with(getApplicationContext())
                    .setView(imageView)
                    .build();
    
            FloatWindow
                    .with(getApplicationContext())
                    .setView(button)
                    .setTag("new")
                    .build();
    
    
            FloatWindow.get("new").show();
            FloatWindow.get("new").hide();
            FloatWindow.destroy("new");
    
    复制代码

    创建第一个悬浮窗不需加 tag,之后再创建就需指定唯一 tag ,以此区分,方便进行后续操作。

    举个栗子:

    此效果实现全部代码为下:

    
            FloatWindow
                    .with(getApplicationContext())
                    .setView(imageView)
                    .setWidth(Screen.width,0.2f)
                    .setHeight(Screen.width,0.2f)
                    .setX(Screen.width,0.7f)
                    .setY(Screen.height,0.2f)
                    .setMoveType(MoveType.back)
                    .setMoveStyle(300,null)
                    .setFilter(true,A_Activity.class,C_Activity.class)
                    .build();
    
    复制代码

    sample 中也有示例代码。

    库地址:https://github.com/yhaolpz/FloatWindow

    更新日志

    v1.0.6

    1.支持悬浮窗拖动及相关动效

    2.位置及宽高可设置百分比值

    3.更改相关类名及使用方法

    v1.0.5

    1.修复未调用show显示悬浮窗bug

    v1.0.4

    1.返回桌面将会自动隐藏控件,无需再监听应用退到后台等操作

    2.新增 Activity 过滤器,可自由指定哪些界面显示,哪些界面不显示

    3.FixedFloatWindow 类改为 FFWindow

    v1.0.3

    1.修复已知 bug

    2.新增 dismiss 方法

    3.新增其他方案,如:所有版本都申请权限

    展开全文
  • 如果在代码中设置WindowManager.LayoutParams对象的type属性时,使用了划线的常量会...经测试 API 28 开发悬浮窗可用的type是WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY 将type属性设置成这个常量即可 ...

    如果在代码中设置WindowManager.LayoutParams对象的type属性时,使用了划线的常量会报错,因为在你这个API版本不支持不建议你使用

    经测试 API 28 开发悬浮窗可用的type是WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY
    将type属性设置成这个常量即可

    展开全文
  • 但是很多情况下,我们只有一只手来操控手机,或者在打游戏的时候,想要截取当前精彩的页面,腾出两只手又太过于浪费时间,本篇文章通过将截屏功能设置悬浮窗的形式,按下悬浮窗按钮即自动保存当前页面截图,解决了...
  • 安卓悬浮按钮 最近在做的项目用到了悬浮按钮,网上关于这个有很多例子,但是我写出来主要是想总结一下悬浮按钮在同时有拖动又有点击事件时,以及悬浮在系统顶层时我所遇到问题,废话不多说,直接上代码: 需要注意...
  • 主页面的设置,开启权限 //启动 计算器悬浮框 服务, 用于快速调出计算器。 public void startFloatingButtonService() { if (FloatingButtonService.isStarted) { return; } if (Build.VERSION.SDK_INT >=...
  • FloatWindow 安卓任意界面悬浮窗 特性: 1.支持拖动,提供自动贴边等动画 2.内部自动进行权限申请操作 3.可自由指定要显示悬浮窗的界面 4.应用退到后台时,悬浮窗会自动隐藏 5.除小米外,4.4~7.0 无需权限申请 6....
  • 最近在做项目有用到悬浮窗,发现了一个问题,WindowManager.LayoutParams的属性设置为TYPE_TOAST在安卓7.1.1系统出现崩溃。在使用Type Toast悬浮窗的同时,使用了Toast,必现崩溃,即使catch 了Throwable也无法解决...
  • 封面图:酷安网截图这款【悬浮菜单】,强烈推荐安卓机安装,我也购买了终身会员的高级功能,拥有的不只是iPhone小白点的功能,还包括多功能【手势导航】【应用小】【晃动手势】【消息弹窗】等诸多功能,定制性超强...
  • 使用优Q的功能必须开服辅助服务,辅助服务是安卓官方提供的功能。打开优Q点击【我的】点击权限设置,开启即可。如果无法快速开启,请参考如下的方法。部分手机辅助可通过快捷键开启,优Q仍提示未开启,将辅助服务...
  • 华为meta10为例:设置----应用----权限管理----搜索你的APP应用----悬浮窗----选择打开即可 参考http://www.xiaoji.com/help/a1/1378.html
  • 本项目是一个安卓仿360安全工具的悬浮窗的小例子源码,例子里的悬浮窗可随意移动,别且可以实时显示当前内存数据,上层数据表示可用内存值,下层数据表示总内存值,点击悬浮窗出现关闭小图标可直接关闭,注意:安卓...
  • 上层数据表示可用内存值,下层数据表示总内存值,点击悬浮窗出现关闭小图标可直接关闭,注意:安卓4.4.2以上自动把所有悬浮窗都禁止显示了,如果你的系统是4.4.2以上的需要手动在设置-应用-点击具体应用-把里面的...
  • 大家晚上好,我是机哥~在前几天,看到国外有用户,将自己的iPhone 7安装上了安卓10系统,看到一些小伙伴问,要是能在安卓上体验iOS就好了。。。其实有一个类似的控制中心的功能,感兴趣的可以看一下。其实,这个很早...
  • 喜欢黑科技的小伙伴,可以将黑科技专家公众号设为标星,这样就不会走丢啦~和平精英弩箭助手(软件支持安卓设备)悬浮窗允许拖动,增加长按关闭按钮底部弹窗式二维码改为载入式二维码右上角新增关于,可开关设置等新增...
  • 下面99安卓网小编就分享华为畅享5s上手评测,供参考. 华为畅享5S参数 ...标签:华为 华为畅享5S发布时间:2016-07-07华为畅享5S和华为荣耀畅玩5X分属两个不同的系列,但是相似的地方很多.华为畅享5S和畅玩...
  • 同时推出播放页面时,需要有个公共控制器,悬浮在所有页面,可点击回到播放页面,第一想法就是系统悬浮窗了,做的过程中陆续遇到几个问题:1、悬浮窗安卓7.0版本前,如果要躲过授权可以将悬浮窗的类型设置为toast...
  • 记得用塞班系统的手机时有很多手机特效补丁,随着科技的改朝换代现在的安卓手机貌似没有那些特效补丁了,回想曾经的诺基亚时代很是回味无穷,还好今天小编就带大家重回那些金典的画面,屏幕下雨,满屏樱花飞舞,等等...
  • 相信在近段时间不少小伙伴都听说过,iPhone 手机...01控制中心首次使用应用时,需要将「允许显示在其他应用上层」设置为允许,或者将「悬浮窗」权限打开。可以点击「位置」按钮,根据自己的习惯去设置「控制中心横...
  • 抓包精灵是一款系统辅助的工具应用,针对安卓手机https网络请求的一个抓取以及解析,可以自动的保存http和https请求,而且不需要ROOT,可以进行悬浮窗功能设置允许同时去使用要抓的应用以及观看抓包的结果还能抓取...
  • 相信在近段时间不少小伙伴都听说过,iPhone 手机...01控制中心首次使用应用时,需要将「允许显示在其他应用上层」设置为允许,或者将「悬浮窗」权限打开。可以点击「位置」按钮,根据自己的习惯去设置「控制中心横...
  • 安卓布局

    2013-06-10 03:17:34
    一、布局(Layout)简单的说,Activity就是布满整个窗口或者悬浮于其他窗口上的交互界面。在一个应用程序中通常由多个Activity构成,都会在AndroidManifest.xml中指定一个主的Activity,如下设置:[html]...
  • 1、下载软件打开(小米手机可能要设置悬浮窗) 2、给予软件root权限3、点启动 4、打开支付宝等到倒计时结束马上按音量+键 5、抢红包结束马上按音量-(ps:由于用的是找色代码 结束没及时按音量- 软件会乱点)
  • 谢邀,求赞啦啦啦这种流氓的全屏弹出的确很...使用悬浮窗实现的这种一般手机设置都能控制APP显示悬浮窗的权限,关掉之后就不再会有了。另一种是通过后台Services开启新APP活动页面的,这种一般情况下手机是无法禁止...
  • 之前做的悬浮窗在5.0的手机上不好用了,经过研究发现5.0上面的获取顶层应用的方式和5.0以下的应用不同,主要使用UsageStatsManager 来获取顶层应用,但是使用UsageStatsManager 之前必须手动的在设置->安全->有权...
  • 建议开启悬浮窗权限,用来显示当前状态。 使用淘宝购物车结算时(建议用这个模式,速度快),可选判断结算价格。主要用来防止某些活动进入太快,时间没到,价格没刷新,或没抢到折扣名额等,检查到价格高时,会自动...
  • 支持两种悬浮窗 支持扩展解码器 自动切换全屏 支持静音等 只需100行java代码即可打造自己的播放器!提供QSVideoViewHelp辅助类,该类提供了常用控件的逻辑和手势调节支持,可快速自定义ui打造自己的播放器,不用写一行...
  • 这几天,大部分人都觉得悬浮窗那个查体软件好用但这里要提醒一下,一定要在电池管理处设置允许网课助手这个软件一直停留在后台并且最好在多任务界面把软件锁住,以保软件不会被手机自动清除这里稍微给不怎么看我文章...

空空如也

空空如也

1 2 3
收藏数 44
精华内容 17
关键字:

安卓设置悬浮窗