问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何在Android中实现悬浮Activity

发布网友 发布时间:2022-04-21 12:54

我来回答

1个回答

热心网友 时间:2022-04-14 23:36

  计算已有的Activity的尺寸并确定它的新坐标位置;
  使Activity透明,可以看见其背景;
  处理背景使其不能再和用户进行交互。
  计算窗口大小
  前面提到,我们需要以一个已有的手机APP为基础(使用了ActionBarSherlock库),这个库我们已经以一个外部库的形式集成到项目中,并带有源代码。
  如果对ABS的源码很熟悉或者曾对原生ActionBar的构架有了解,就会发现:如果改变Activity的大小,那在调用setContentView方法的时候,功能没有实现:ActionBar的大小和位置都没有变化。这时要做的就是在更高的级别里操作,在系统绘制ActionBar的时候——ABS或者原生的ActionBar,这时候还没有任何窗口的数据,这样我们就可以按照需要调整了。
  最显而易见的方式就是改变Window的尺寸,所以这里需要以下这段代码:
  
  @Override
  public void onAttachedToWindow() {
  super.onAttachedToWindow();

  if (getResources().getBoolean(R.bool.is_tablet) && mOpenAsSmallWindow) {
  final View view = getWindow().getDecorView();
  final WindowManager.LayoutParams lp = (WindowManager.LayoutParams) view.getLayoutParams();

  lp.gravity = Gravity.CENTER;

  lp.width = mActivityWindowWidth;
  lp.height = mActivityWindowHeight;
  getWindowManager().updateViewLayout(view, lp);
  }
  }

  代码执行完毕后,就可以看到窗口的大小已经根据mActivityWindowWidth和mActivityWindowHeight的值发生了改变。
  is_tablet检查只对平板有效,mOpenAsSmallWindow标识表示是否让窗口全屏显示或者是否作为新的窗口渲染。
  如果在运行的时候报错了,错误日志是:ActionBarView can only be used with android:layout_width="match_parent" (or fill_parent).那不用担心,我们有ABS的源码,直接修改源码就可以了。
  打开ActionBarView这个文件,然后再onMeasure方法里把抛出的异常注释掉——这样应该就可以解决问题了。安卓上使用的是比较特殊的权限控制机制,所以这里我们可以继续深入的不多,也许还能粗略计算菜单项等,不过很多东西我们都不可把控。
  注意:这个方法没有在原生ActionBar上测试,因为这里只是在作者的Android版本中测试过。如果要禁用ActionBar,需要找到ActionBarSherlock这个类,然后注释掉以下这行代码:
  
  // registerImplementation(ActionBarSherlockNative.class);

  代码运行应该没问题,然后就可以看到不透明背景的Activity了。

  添加透明功能
  在实现了Activity的尺寸和大小都改变后,现在就要让它透明了。可以给这个平板上的Activity主题添加这个属性:
  
  <item name="android:windowIsTranslucent">true</item>

  这个属性值可以使Activity背景透明。

  看起来不错,效果已经基本实现了。
  还有一个小问题:以上测试的都是在Nexus7 android4.3上执行,而这个App在Nexus7 的android4.2版本中,Activity没有显示。
  经过多次调试和日志检查后,发现我们的Activity(就叫MainActivity吧)没有被销毁(没有调用onDestroy方法),所以Android系统就把它忽略了,没有绘制它。为什么呢?因为Android 4.4 KitKat新增了一个优化算法。因为这个优化算法,Android系统看到Activity为全屏显示模式(不管WindowManager的改变),就会绘制这个MainActivity,但是它之上的东西就被忽略了,所以我们就看不到任何显示了。
  我们研究了下这个问题,然后发现对话框和其他不全屏显示的部件都可以正常绘制,所以我们需要在主题theme里加上这几行:

  <item name="android:windowIsFloating">true</item>
  <item name="android:windowCloseOnTouchOutside">false</item>
  <item name="android:colorBackgroundCacheHint"><a href="http //www jobbole com/members/NULL/" rel="nofollow">@null</a></item>
  <item name="android:backgroundDimEnabled">true</item>
如何在Android中实现悬浮Activity

1、将需要悬浮的Activity设置dialog的样式主题,定义样式文件如下:&lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;resources&gt; &lt;item name="android:windowNoTitle"&gt;true&lt;/item&gt; &lt;item name="android:windowBackground"&gt;@android:color/transparent&lt;/item&gt; &lt;/resources&gt; 2、在在清单文件中给activity设...

android 怎么设置 悬浮activity

WindowManager实现悬浮窗需要声明权限 首先在manifest中添加如下权限:&lt;!-- 显示顶层浮窗 --&gt;&lt;uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /&gt; 注意:在MIUI上需要在设置中打开本应用的”显示悬浮窗”开关,并且重启应用,否则悬浮窗只能显示在本应用界面内,不能显示在手机桌面上。服务获取和基...

如何在Android中实现悬浮Activity

打开ActionBarView这个文件,然后再onMeasure方法里把抛出的异常注释掉——这样应该就可以解决问题了。安卓上使用的是比较特殊的权限控制机制,所以这里我们可以继续深入的不多,也许还能粗略计算菜单项等,不过很多东西我们都不可把控。注意:这个方法没有在原生ActionBar上测试,因为这里只是在作者的Android版...

android开发怎样让悬浮Activity只是隐藏而不销毁

性 android:theme="@android:style/Theme.Dialog",可以使Activity悬浮在其它窗口上面,在布局中可以设置activity的大小,当点击悬浮Activity边缘以外区域时,Activity会消失,观察消失时其生命周期会发现执行了finish()方法从而执行了onDestroy方法。有时我们只是需要将Activity隐藏,并不销毁,此时可以重写finish方...

android开发怎样让悬浮Activity只是隐藏而不销毁

manifest中为相应的Activity设置android:configChanges属性即可Andorid 3.2以前的SDK可以使用如下配置android:configChanges="orientationkeyboardHidden"而Adnroid 3.2以后的SDK必须添加一个screenSize属性,具体如下android:configChanges="keyboardHiddenorientationscreenSize"或者android:configChanges="orientationscreenSize"...

求大神指点,android如何实现这种Activity效果? 比如说,我打开文件管理...

貌似是由服务在后台打开一个popupwindows吧,或者是手机特有的功能,比如三星note3就有悬浮窗口

【MyAndroid】RecyclerView实现头部悬浮吸顶效果且可点击--100个经典UI...

首先,代码结构主要包括RecyclerView、LinearLayoutManager和Adapter。在布局中,关键部分是StickyHeadContainer的使用,如在StockActivity的initView()方法中。要确保头部悬浮吸顶效果的显示,务必在RecyclerViewAdapter中设置mDataCallback。StickyHeadContainer的onDataChange()方法是实现吸顶效果的关键,其源码清晰易...

android中主Activity是什么意思

android中主Activity是指应用的主界面。Activity本身是用户能够操作的活动界面。通常我们所配置的android.intent.action.MAIN不一定是主界面,有可能是启动页,启动之后就销毁了,而另外开启一个主界面。

...然后出现一片文章的效果(用的是在一个activity中调用一个fragment...

你要控制一下ListView和Fragment的布局,不然确实会出现重叠,Fragment是轻量级的Activity,是为了方便在同一个Activity使用不同的布局而引入的,你的这种需求可以不用Fragment,要使用就要重新修改布局才行。

在android中,设置一个activity在后台运行??

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);并不是设置后台运行,而是设置这个intent启动的activity优先创建一个新的task将这个activity做为该task的root。如果实在是向要在activity b中按返回的时候回到activity a 同时b不销毁,那就要重写onKeyDown回调来更改返回按钮的行为了,改为启动activity a。

android悬浮窗实现 如何实现物体悬浮 Android悬浮时间 Android9悬浮窗 Android 折叠悬浮 android悬浮窗口 android悬浮按钮 android悬浮窗权限 android应用内悬浮窗
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
赵烈文预言 佛山市麦典卫浴有限公司(雷丁卫浴)设计风格 欧洲杯中文广告是虚拟的吗 欧洲杯中国品牌广告 欧洲杯的中国广告牌 欧洲杯赛场上的中国广告是真的吗 欧洲杯中文广告牌为何霸屏 欧洲杯广告牌为啥都是中国的 欧洲杯广告怎么全是中国的 急~暑假想从南京到丽江玩...一些问题~! 如何开启 android 手机悬浮框权限 Android桌面悬浮窗效果怎么实现 安卓6.0怎么设置悬浮窗啊 安卓手机有没有能让图片始终悬浮在其它应用界面之上的APP? 打开安卓手机的悬浮窗方法 安卓手机悬浮球在哪设置 安卓悬浮球怎么设置 新买的u盘怎么用? 新买来的U盘是不是要格式化了才能用 新买的内存卡或U盘第一次用一定要格式化才能用么 404 Not Found 新U盘第一次用要格式化吗? 刚买来U盘 如何使用 新买的U盘怎么使用? 新U盘直接连接电脑就可以使用了吗 新买回来的u盘如何正确使用 U盘买回来是不是就可以直接用了,用不用再 新买的u盘怎样使用?如何优化U盘? pe优盘买回来可以直接用吗 刚买回来的U盘是不是可以直接就用了 android 怎么让视屏悬浮 安卓 怎样才能使悬浮窗永久存在 安卓系统的手机桌面上的悬浮球怎么弄掉 安卓系统悬浮工具箱如何关闭 陈志朋参加《追光吧哥哥》被吐槽“没礼貌”“耍大牌”,到底发生了什么? 谁来具体介绍一下中国有嘻哈艾福杰尼? 嘻哈界顶流艾福杰尼与漂亮女友逛街被曝光,女方有何背景? 艾福杰尼谢广坤同款秃头火了,艾福杰尼现在走的是什么路线?如何评价? 艾福杰尼疑恋情被曝,具体有何蛛丝马迹可寻? 如何看待艾福杰尼c-low事件? 计算机数据处理分为哪几个阶段 艾福杰尼是谁? 艾福杰尼和黄旭之间有什么故事吗? 艾福杰尼是富二代吗? 知名歌手艾福杰尼恋情曝光,你看好这对情侣吗? 《跨界喜剧王》艾福杰尼谈社交中的尬聊,尬聊是一种怎样的感受? 快手怎么把戳一下的人给删掉 谁能介绍下中国有嘻哈艾福杰尼的背景啊? 404 Not Found 为啥快手里的谁撮我一下删不掉,咋能删掉啊?