展开

关键词

浅谈Android应用内控件实践方案总结

首先想到的是申请窗权限,OK~ 打开搜索引擎,映入眼帘的并不是如何申请,而是“Android 窗权限各机型各系统适配大全、Android 绕过权限显示窗…”,为什么窗权限会有这么多坑呢? 这时你可能想到往所有 Activity 的固定位置添加视图,模拟“”效果,比如要实现文章开头的效果,只需要进入新 Activity 时初始化旋转的角度,让其在视觉上连续就行了。 但是要考虑一个问题,在切换 Activity 时旧 Activity控件是要销毁的,新 Activity控件是要生成的,也就是说在切换 Activity 时这个控件是会短暂的消失一下 那还有什么方法可以实现切换 Activity 时控件在视觉上连续吗?如果你用过共享元素动画的话,便有答案了。控件在哪里添加呢? 可以在 BaseActivity 里,也可以为 Application 注册 Activity 生命周期回调,下面通过后者实现,在 Application 中为每个 Activity 添加控件:public

48820

简易的可拖动的桌面窗效果Demo

首先,我们需要知道,窗分为两种:Activity级别的窗,系统级别的Activity级别的窗跟随所属Activity的生命周期而变化,而系统级别的窗则可以脱离Activity而存在 由此可知,要实现360手机卫士那样的窗效果,就需要使用系统级别的窗下面学习实现桌面窗效果的代码步骤:Demo描述,窗为一个ImageView ,可以在桌面 ,任意应用,锁屏上方任意移动1 、配置清单文件AndroidManifest.xml 中 添加系统窗的权限 2、开始Activity代码的编写 先看成员变量: private WindowManager.LayoutParams = null){ windowManager.removeView(imageView); } 使用Application context 创建UI控件,避免Activity销毁导致上下文出现问题,因为现在的窗是系统级别的 ,可以在手机桌面上显示的窗 11 * 12 public class FloatWindowActivity extends Activity { 13 14 private WindowManager.LayoutParams

1.4K70
  • 广告
    关闭

    最壕十一月,敢写就有奖

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android实现通话最小化框效果

    2、视频通话框的开启具体思路是这样的:当用户点击最小化按钮的时候,最小化我们的视频通话Activity(这时Activity处于后台状态),移除原先在Activity的视频画布(因为我用的是网易云信 ,这里他们只能允许一个视频画布存在,这里看情况要不要移除),于此同时,延时个几百毫秒,开启框,新建一个新的视频画布然后动态添加到框里面去,监听框的触摸事件,让框可以拖拽移动;监听框的点击事件 ,如果用户点击了框,则移除框里面新建的那个视频画布,然后重新调起我们在后台的视频通话Activity,紧接着新建一个新的视频画布重新动态的添加到Activity里面去。 这里我把框的实现方法写在一个服务Service里面,将框的开启关闭与服务Service的绑定解绑所关联起来,开启服务即相当于开启我们的框,解绑服务则相当于关闭关闭的框,以此来达到更好的控制效果 为框建立一个布局文件alert_float_video_layout,这里根据需求去写,如果只是像我上面gif那样,只需要框显示对方的视频画布,那么布局文件可以如下所示:(其中框大小我这里固定为长

    63050

    Android基于腾讯云实时音视频仿微信视频通话最小化

    2、视频通话框的开启具体思路是这样的:当用户点击左上角最小化按钮的时候,最小化视频通话Activity(这时Activity处于后台状态),于此同时开启框,新建一个新的ViewGroup将全局Constents.mVideoViewLayout 中用户选中的最大View动态添加到框里面去,监听框的触摸事件,让框可以拖拽移动;自定义点击事件,如果用户点击了框,则移除框然后重新调起我们在后台的视频通话Activity。 super.moveTaskToBack(nonRoot); }2.框是如何开启的? 框的实现方法最好写在Service里面,将框的开启关闭与服务Service的绑定解绑所关联起来,开启服务即相当于开启我们的框,解绑服务则相当于关闭关闭的框,以此来达到更好的控制效果。 为框建立一个布局文件float_video_window_layout,框大小我这里固定为长80dp,高120dp,id为small_size_preview的RelativeLayout主要是一个容器

    57831

    Android 窗功能的实现

    1.窗可以显示在其他应用或launchers之上,这个肯定需要窗权限,而窗权限属于特殊权限,所以只能通过引导用户去打开无法像危险权限那样直接申请。 2.通话页面隐藏时窗显示,通话页面显示时窗隐藏,可以看出窗和Activity的生命周期相关联,所以窗的Service和通话页面的Activity是通过bind去绑定的。 3.既然Service和Activity是通过bind去绑定的,说明当窗显示的时候,通话Activity虽然不可见但仍在运行。结合上述技术问题分析,我们倒叙一一通过编码实现窗实现方案实现效果? ,因为默认的Activity的启动模式是标准模式,而上面方法会将任务栈置于后台而不是一个单独的Activity,所以我们为了显示窗时不影响操作软件的其他功能,我们要将通话页面的Activity设置为 判断是否有窗权限点击左上角图标时,我们要先判断当前app是否有窗权限,首先我们在配置文件中添加,窗的权限。

    2.3K10

    应用内窗适配方案实战

    背景 游戏内的窗通常情况下只出现在游戏内,用做切换账号、客服中心等功能的快速入口。 本文将介绍几种实现方案,以及我们踩过的坑 1、方案一:应用外窗+栈顶权限生命周期回调 通常实现窗,首先考虑到的会是要使用窗权限,用WindowManager在设备界面上addView实现(UI 层级较高,应用外显示) 1、弹出窗需要用到窗权限 2、判断窗游戏内外显示 方式一:使用栈顶权限获取当前 需要声明权限 判断当前是否在后台private boolean isAppIsInBackground 但是这种方案有如下缺点: 1、适配问题,窗权限在不同设备上由于不同产商实现不同,适配难。 floatLayoutParams.y = y; 更新位置 mWindowManager.updateViewLayout(this, floatLayoutParams); } ** * 是否靠右边

    19340

    实战总结 Android 窗适配方案

    背景 ----游戏内的窗通常情况下只出现在游戏内,用做切换账号、客服中心等功能的快速入口。 本文将介绍几种实现方案,以及我们踩过的坑 方案一:应用外窗+栈顶权限生命周期回调---- 通常实现窗,首先考虑到的会是要使用窗权限,用 WindowManager 在设备界面上 addView 实现( UI 层级较高,应用外显示)1、弹出窗需要用到窗权限 2、判断窗游戏内外显示方式一:使用栈顶权限获取当前需要声明权限判断当前是否在后台private boolean isAppIsInBackground 但是这种方案有如下缺点:适配问题,窗权限在不同设备上由于不同产商实现不同,适配难向用户申请权限,打开率较低,体验较差 方案二:addContentView实现----原理:Activity 的接口中除了我们常用的 floatLayoutParams.y = y; 更新位置 mWindowManager.updateViewLayout(this, floatLayoutParams); } ** * 是否靠右边

    13310

    andriod使用超级播放器窗播不能正常使用

    使用过程中会遇到不能播播放的问题,建议按照以下的方式排查1.手机本地窗权限开启检查手机设置里窗权限有没有开启,各个手机开启窗口权限都不同,可以自己网上查下2.检查代码的中的窗权限image.png 2.1如果是在Android4.x的情况,只用在AndroidManifest.xml中添加权限: 2.2andriod6.0需要申请窗权限 api>23 demo中对应窗的权限说明 image.png 你使用的超级播放器中的SuperPlayerGlobalConfig中是否启用了窗格式 image.png4.关闭窗使用demo在你的机型能否支持,如果demo也不能在你的手机使用窗播放, 由于andriod系统不支持功能,这时候想关闭窗能力怎么办? private void showFloatWindow() {finish(); 结束当前activity}5.原理引入窗本质手机原生的WindowManager来实现的,窗需要在别的应用之上显示窗口控件

    71250

    Android开发笔记(一百一十八)自定义

    窗一般不设置该标志,因为一旦设置该标志,将无法拖动窗。 静态窗有点类似对话框,它们都是独立于Activity页面的窗口,但是窗又有一些与众不同的特性,例如: 1、窗是可以拖动的,对话框则不能; 2、窗不妨碍用户触摸窗外的区域,对话框则不让用户操作框外的控件 ; 3、窗独立于Activity页面,即当页面退出后,窗仍停留在屏幕上;而对话框与Activity页面是共存关系,一旦页面退出则对话框也消失了; 基于窗的以上特性,我们要实现窗口的效果, ,另外要设置标志位FLAG_NOT_FOCUSABLE; 4、在构造窗实例时,要传入Application的上下文Context,这是为了保证即使退出Activity,也不会关闭窗。 因为Application对象在app运行过程中是始终存在着的,而Activity对象只在打开页面时有效,一旦退出页面则Activity的上下文就立刻回收(这会导致依赖于该上下文的窗也一块被回收了)

    63310

    Android开发笔记(一百六十三)高仿京东的沉浸式状态栏

    只好继续寻寻觅觅,又找到另一个电商App,它在Android6.0手机上也完美实现了状态栏效果,但是在Android4.4手机运行时仍然没能覆盖状态栏。 可见这真不是一个省油的灯,许多人用的App尚且未能解决状态栏的兼容性问题。 不过状态栏的开关发生了变化,要想让状态栏变透明,最新的方式是调用DecorView对象的setSystemUiVisibility方法来设置标志位。 如此一来,状态栏的和恢复操作便是可逆的了,如果移除主页面的顶端空白,状态栏就产生效果;如果添加主页面的顶端空白,状态栏就恢复原状。 其中左图为状态栏的效果图,右图为恢复状态栏的效果图。 ?? 点此查看Android开发笔记的完整目录

    60520

    android实现桌面移动窗口

    比如创建系统顶级窗口,实现窗口效果!然后通过覆写View中onTouchEvent方法来改变windowMananager.LayoutParams中x和y的值来实现自由移动窗口。 二、示例代码先看看View的代码把package com.example.suspend; import android.content.Context;import android.util.Log savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); 创建窗口 * * 窗不可触摸,不接受任何事件,同时不影响后面的事件响应。 销毁)时销毁窗口 wm.removeView(myFV); }}最后,别忘了在AndroidManifest.xml中添加权限:

    50810

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

    1、窗的基本介绍窗,大家应该也不陌生,凌驾于应用之上的一个小弹窗,实现上很简单,就是添加一个系统级别的窗口,Android中通过WindowManagerService( WMS)来管理所有的窗口 ,对于WMS来说,管你是Activity、Toast、Dialog,都不过是通过WindowManagerGlobal.addView()添加的一个个View。 Android中的窗口分为三个级别:1.1 应用窗口,比如Activity的窗口; 1.2 子窗口,依赖于父窗口,比如PopupWindow; 1.3 系统窗口,比如状态栏、Toast,目标窗就是系统窗口 . 2、根据产品需求进行设计先了解一下大概的产品需求: 1、窗需要跨越整个应用 2、需要与窗进行交互 3、窗得移动 4、点击跳转特定的页面 5、消息提示的拖拽小红点需求很简单,但是如果估算没错 ,窗的管理,因为后续窗布局可能有好几个,可以在这里面进行切换; 5、HomeWatcherReceiver,广播接收者,因为在应用内展示,需要监听用户在点击Home键和切换键的时候隐藏窗,需要

    1.4K31

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

    这篇博客主要介绍的是 Android 主流各种机型和各种版本的窗权限适配,但是由于碎片化的问题,所以在适配方面也无法做到完全的主流机型适配,这个需要大家的一起努力,这个博客的名字永远都是一个将来时。 窗适配窗适配有两种方法:第一种是按照正规的流程,如果系统没有赋予 APP 弹出窗的权限,就先跳转到权限授权界面,等用户打开该权限之后,再去弹出窗,比如 QQ 等一些主流应用就是这么做得; Android 4.4 之前的版本(不包括4.4)就不用去判断了,直接调用 WindowManager 的 addView 方法弹出即可,但是貌似有些特殊的手机厂商在 API19 版本之前就已经自定义了窗权限 ”等;看看 QQ 或者其他的大公司 APP 是否已经适配,如果已经适配,跳转到相关权限授权页面之后,或者自己能够直接在设置里找到窗权限授权页面也是一个道理,使用 adb shell dumpsys 常规手机由于 6.0 之前的版本常规手机并没有把窗权限单独拿出来,所以正常情况下是可以直接使用 WindowManager.addView 方法直接弹出窗。

    1.7K31

    Android仿微信文章窗效果

    序言 前些日子跟朋友聊天,朋友Z果粉,前些天更新了微信,说微信出了个好方便的功能啊,我问是啥功能啊,看看我大Android有没有,他说现在阅读公众号文章如果有人给你发微信你可以把这篇文章当作起来 ,方便你聊完天不用找继续阅读,听完是不是觉得这叫啥啊,我大Android微信版不是早就有这个功能了吗,我看文章的时候看到过有这个按钮,但是我一直没有使用过,试了一下还是挺方便的,就想着自己实现一下这个功能 实现 1、权限首先我们要考虑的一个问题就是权限问题,因为要适配Android 7.0 8.0,添加窗是需要申请权限的,这里参考了Android 窗权限各机型各系统适配大全这篇文章,适配的比较全, { 6 } 7 8 override fun onActivityResumed(activity: Activity?) { 9 }1011 override fun onActivityStarted(activity: Activity?)

    76230

    Android仿微信视屏窗效果

    在项目中需要对接入的腾讯云音视频,可以窗显示,窗可拖拽,并且在窗不影响其他的activity的焦点。 这个大神的文章Android基于腾讯云实时音视频仿微信视频通话最小化,他讲的是视频通话时,将远端视频以窗形式展示,根据他的代码我进行了部分简化1.窗效果:点击缩小按钮,将当前远端视屏加载进窗 ,且窗可拖拽,不影响其他界面焦点;点击窗可返回原来的Activity2.实现窗需要:在androidManifest中申请窗权限

    51320

    Android 无需权限显示窗, 兼谈逆向分析 App

    我使用的是小米, 我并没有给 UC 授窗权限, 所以我看到这个窗时是很震惊的.? 窗原理做过窗功能的人都知道, 要想显示窗, 要有一个服务运行在后台, 通过getSystemService(Context.WINDOW_SERVICE)拿到WindowManager, 然后向其中 (这里是 MIUI V5 对窗的特殊处理, 现在的 ROM, 包括 MIUI V6 上, 如果不授权, 无法显示任何窗)使用TYPE_TOAST这个不需要权限的 type 时, 窗正常显示, 直接崩溃)TYPE_KEYGUARD_DIALOG: 拒绝使用TYPE_PHONE: 属于窗 (并且给一个 Activity 的话按下 HOME 键会出现看不到桌面上的图标异常情况)TYPE_TOAST : 不属于窗, 但有窗的功能, 缺点是在 Android2.3 上无法接收点击事件TYPE_SYSTEM_ALERT: 属于窗, 但是会被禁止尾声现在我们都知道了如何在不申请权限的情况下显示

    2K101

    Android 8.0完美适配全局dialog 窗弹出

    2出现场景有时候我们需要在App中弹dialog,但是却不知道依附的是哪个Activity,这个时候通常会启动一个service来依附,显示一个全局的dialog。 36.0出现的窗权限为什么从6.0说起? 在Android6.0之后,使用窗功能需要申请开启窗权限,在API23以下版本编译,窗权限关闭的,但是没有权限限制,在大于23版本编译,这个权限默认是关闭的,需要获取权限。 6.0之后判断是否有窗权限,没有则申请权限 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (Settings.canDrawOverlays = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION); Toast.makeText(MainActivity.this,需要取得权限以使用

    3.4K10

    android 应用内部可拖动按钮简单实现代码

    本文介绍了android 应用内部可拖动按钮简单实现代码,分享给大家,具体如下: ? 可以activity上面,在加载fragment时按钮不会消失实现方式很简单,因为是在应用内部拖动的,只需要通过Activity获取WindowManager,然后将要拖动的view设置上去就行

    1K10

    Android制作带窗控制的录屏程序Demo

    REQUIRED_PERMISSIONS.all { ContextCompat.checkSelfPermission(baseContext, it) == PackageManager.PERMISSION_GRANTED }控制窗窗的文章可以看以前 《Android实现可移动的窗》这篇文章,这次直接把当时的代码复制过来了,用Java写的,所以也不再重新造轮子了,只不过这次的Sevice我改为使用JobService了。 ,则创建窗。 cancel(JOBID) } }}Android8.0后还需要开启窗的上层权限 ,所以在动态申请权限那里还要加上这个开启。 请求上层框权限 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && !

    12830

    android通过自定义toast实现通知效果的示例代码

    android通过toast实现通知效果,如图:? 实现的功能:自定义弹窗;点击其他地方该布局不受影响;可自定义显示时间;可以设置点击事件;代码如下:import android.content.Context;import android.os.Build mInstance == null) {mInstance = new PushToast();}return mInstance;}public void init(AppCompatActivity activity ) {mActivity = activity;}public void createToast(String title, String content, Map

    34520

    相关产品

    • 云服务器

      云服务器

      腾讯云服务器(CVM)为您提供安全可靠的弹性云计算服务。只需几分钟,您就可以在云端获取和启用云服务器,并实时扩展或缩减云计算资源。云服务器 支持按实际使用的资源计费,可以为您节约计算成本。

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭

      扫码关注云+社区

      领取腾讯云代金券