使用场景:例如微信在视频的时候,点击Home键,视频小窗口仍然会在屏幕上显示;
注意事项:
1、一般需要在后台进行 *** 作的时候才需要悬浮窗,这样悬浮窗才有意义;
2、API Level >= 23的时候,需要在AndroidManefest.xml文件中声明权限SYSTEM_ALERT_WINDOW才能在其他应用上绘制控件。
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />;除了这个权限外,我们还需要在系统设置里面对本应用进行设置悬浮窗权限。该权限在应用中需要启动Settings.ACTION_MANAGE_OVERLAY_PERMISSION来让用户手动设置权限:startActivityForResult(new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName())), REQUEST_CODE)
3、LayoutParam设置:LayoutParam里的type变量。这个变量是用来指定窗口类型的。在设置这个变量时,需要注意一个坑,那就是需要对不同版本的Android系统进行适配。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
layoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY
} else {
layoutParams.type = WindowManager.LayoutParams.TYPE_PHONE;
}在Android 8.0之前,悬浮窗口设置可以为TYPE_PHONE,这种类型是用于提供用户交互 *** 作的非应用窗口。
而Android 8.0对系统和API行为做了修改,包括使用SYSTEM_ALERT_WINDOW权限的应用无法再使用一下窗口类型来在其他应用和窗口上方显示提醒窗口:
- TYPE_PHONE
- TYPE_PRIORITY_PHONE
- TYPE_SYSTEM_ALERT
- TYPE_SYSTEM_OVERLAY
- TYPE_SYSTEM_ERROR
如果需要实现在其他应用和窗口上方显示提醒窗口,那么必须该为TYPE_APPLICATION_OVERLAY的新类型;
如果在Android 8.0以上版本仍然使用TYPE_PHONE类型的悬浮窗口,则会出现如下异常信息:
android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@f8ec928 -- permission denied for window type 2002;
具体实现:
1、Activity:
public void startFloatingService(View view) {
...
if (!Settings.canDrawOverlays(this)) {
Toast.makeText(this, "当前无权限,请授权", Toast.LENGTH_SHORT)
startActivityForResult(new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName())), 0)
} else {
startService(new Intent(MainActivity.this, FloatingService.class))
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 0) {
if (!Settings.canDrawOverlays(this)) {
Toast.makeText(this, "授权失败", Toast.LENGTH_SHORT).show()
} else {
Toast.makeText(this, "授权成功", Toast.LENGTH_SHORT).show()
startService(new Intent(MainActivity.this, FloatingService.class))
}
}
}
2、service:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
showFloatingWindow()
return super.onStartCommand(intent, flags, startId)
}
private void showFloatingWindow() {
if (Settings.canDrawOverlays(this)) {
// 获取WindowManager服务
WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE)
// 新建悬浮窗控件
Button button = new Button(getApplicationContext())
button.setText("Floating Window")
button.setBackgroundColor(Color.BLUE)
// 设置LayoutParam
WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams()
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
layoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY
} else {
layoutParams.type = WindowManager.LayoutParams.TYPE_PHONE
}
layoutParams.format = PixelFormat.RGBA_8888
layoutParams.width = 500
layoutParams.height = 100
layoutParams.x = 300
layoutParams.y = 300
// 将悬浮窗控件添加到WindowManager
windowManager.addView(button, layoutParams)
}
}
效果展示:
在游戏中使用游戏助手,您可以看到手机时间、电量、信号、CPU占用率、FPS、GPU等信息,也可通过点击对应图标开启或关闭以下功能:
浮窗聊天(QQ、微信)、屏蔽通知、截屏、录屏、拒接来电、游戏静音、游戏手柄、超现实增强画质、游戏4D震感等。
开启或关闭游戏助手
1、ColorOS 11.3及以上版本:
请进入[“游戏中心”APP >我的 >右上角设置 >游戏助手设置」页面,点击“游戏助手”右侧按钮,即可开启或关闭游戏助手功能。
若在游戏中心设置中没有找到游戏助手开关按钮,请进入[“游戏中心”APP >我的 >右上角设置 >版本号」,点击“版本号” 将游戏中心版本升级至10.2及以上版本再试。
2、ColorOS 11.3以下版本:
请进入「“游戏空间”APP >右上角“:”或三点 >设置」页面,点击“游戏助手”右侧按钮,即可开启或关闭游戏助手功能。若卸载了游戏空间,游戏助手也将一并删除。
呼出游戏助手
1、ColorOS 11.3及以上版本:游戏助手固定在听筒一侧,如手机横屏时,听筒在左侧,则游戏助手在左侧,右滑唤起游戏助手;手机横屏听筒在右侧时,则游戏助手在右侧,左滑唤起游戏助手。若游戏启动后没有游戏助手,则说明该游戏当前不支持开启游戏助手功能。
游戏助手上部分功能需前往「“游戏中心”APP >“游戏+”」页面进行设置,如智能提醒、游戏加速、游戏贴士、闪电启动、超玩战报等。
游戏助手版本不同,呼出游戏助手的面板显示和功能位置也不一样,您可进入「设置 >应用(应用管理) >搜索“游戏助手”」,点开进入详情页查看版本号。
游戏助手7.0及以上版本显示如下:
新增了“亮度调节”控件,拖动亮度条即可进行亮度调节,点击右侧按钮可以开启或关闭亮度锁定。
新增“一键配置”功能,开启该按钮后,会一键开启以下功能:超频响应、4D振感、亮度锁定、屏幕光效、呼吸灯效、超现实画质、极限稳帧。
新增“高光时刻”功能,当发生关键击杀时,游戏助手将自动截图。
新增“游戏更新”功能,可以进行“分享更新包”与“自动更新”游戏,如果没有该入口,则证明机型或游戏不支持该功能。
游戏助手7.3版本,新增“音乐播放控件”功能,可以通过游戏助手面板控制音乐播放/暂停/上一曲/下一曲,未播放音乐时不显示播放控件,点击封面图标可以跳转至音乐应用,支持音乐:咪咕音乐、酷狗音乐、酷我音乐、QQ音乐、网易云音乐。
“防误触”、“极限稳帧”、“超频响应(部分机型支持)”、“手感调节”在“触感优化”里面。
“4D振感”、“屏幕光效”、“语音播报”、“呼吸灯效”在“多维体验”里面。
2、ColorOS 11_11.2版本:在游戏过程中,横屏从左侧呼出或竖屏从右上方呼出游戏助手。
3、ColorOS 6-7.2版本:在游戏过程中,从屏幕顶角向下(内)滑动呼出游戏助手。
退出游戏
1、从屏幕右侧往左滑,呼出虚拟按键,退出游戏。
2、从屏幕底部向上滑动两次,退出游戏。
温馨提示:
① FPS是指画面每秒传输的帧数,每秒钟帧数越多,所显示的动作就会越流畅。
② GPU渲染是指在一个像素点上绘制多次(超过一次),过度绘制会影响动画性能。
1.1进入站点编辑界面1.2切换到底版管理1.3创建新底版1.4编辑底版1.5使用底版
1.6解决页面控件闪退或失效问题1.7注意事项1.8如何修改从底版继承过来的控件
1.9页脚配置及使用1.9.1页脚在哪1.9.2怎么添加控件到页脚中1.9.3怎么使用页脚
云速建站可以使用底版减少页面相同部分的维护量,但是底版在使用上有需要注意的地方。下面介绍一下底版的创建和使用。
1.1进入站点编辑界面
首先我们需要登录云速建站的控制台,跳转到后台管理-站点编辑
1.2切换到底版管理
点击页面左上角的页面管理,可以看到页面管理右边出现底版管理,点击切换到底版管理
1.3创建新底版
创建新底版
1.4编辑底版
点击编辑demo,如下
添加会员插件并设置样式
添加文本及购物车
添加导航栏并设置样式
1.5使用底版
切回页面管理,创建一个demotest页面,底版选用demo
可以看到demo底版的内容都显示在demotest页中,并且内容都是置灰了的
1.6解决页面控件闪退或失效问题
一般来说页面选用底版后,不可随意修改该页面属于底版的内容,一旦解锁并修改后,修改的插件就会脱离底版,可能会导致插件失效或闪退。
那么真的去修改了页面上底版的插件后导致插件闪退或失效,想要恢复原样也是有方法的,如下:
页面中修改从底版继承过来的插件时,会出现下边的提示框,这时候点击解锁就会使插件脱离底版
此处以解锁图片编辑然后恢复举例,其他的插件失效、闪退问题解决方法是一样的。
解锁了logo元素,该元素已脱离底版,变成高亮状态,可以进行编辑 *** 作了
把logo删除
如果解锁的是导航栏,导致导航栏出现问题,需要把页面中添加的导航栏删除
(解锁其他插件也是一样,需要把和底版重复的插件删除,按下列 *** 作重新从底版继承)
恢复底版步骤:
1.先到底版管理界面,查看当前是否存在2个或以上的底版,如果仅有一个底版,需要创建新底版。
2.在页面管理界面,打开需要恢复底版的页面的页面属性,选择其他的模板,保存
3.再次打开需要恢复底版的页面的页面属性,选择不使用底版,保存
4.再次打开需要恢复底版的页面的页面属性,选择原底版,保存。这时候如果还未能恢复原底版内容,重复2/3/4直到恢复为止
(一般来说重复替换2-3次即可恢复)
demotest页选用demo2底版
效果如下
再次选用底版demo
可以看到删除的logo已恢复
1.7注意事项
页面上哪些元素是从底版继承过来的,哪些是直接在该页面上添加的,这个需要在站点编辑界面查看,预览或是使用域名访问时是分辨不出来的。
继承底版的元素有两个特点:
1、从底版上继承过来的元素是置灰的,和直接添加的页面元素有着明显的区别。
2、页面直接添加的控件鼠标移到元素上会在元素左上角出现提示该元素是属于什么控件并且单击可以选中,控件四周明显出现一个边界,
从底版继承的元素则不会
显示所属控件类型
单击显示边框
1.8如何修改从底版继承过来的控件
我们修改遵循一个原则,哪个页面的内容需要修改就去哪个页面中进行改动。
先按照1.6的方法,确认想修改的页面控件是否从底版继承过来的。如果是,则查看当前页面是使用的哪个底版
然后切换到底版管理,点击修改该底版即可。修改底版后保存,对应使用该底版的页面也会相应跟着修改的。
1.9页脚配置及使用
1.9.1页脚在哪
在底版管理界面,点击页面最底部,出现只有一个属性菜单的控件即为页脚
1.9.2怎么添加控件到页脚中
页面控件添加的方式一样,但是如果要把控件放置在页脚区域,需要额外多一步 *** 作,即把该控件设置为页脚元素
先往页面空白处添加一个图片控件
然后点击选中图片,点击图片的属性菜单,把该图片勾选为页脚元素
把图片勾选为页脚元素后,才可以把图片拖到页脚区域,否则是拖不进去的
其他插件如果要添加到页脚区域,也是一样,需要在插件的属性设置中,把该插件勾选为页脚元素。
1.9.3怎么使用页脚
在新创建页面时我们就可以设置该页面是否显示页脚,如果选择是,那么该页面就会显示页脚内容
如果是已经存在的页面,鼠标移至该页面上,点击页面的属性按钮,在页面属性中开启显示页脚即可
开启后,关于我们这个页面就有页脚内容了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)