57、android 应用内全局通知的实现方法
1、后台运行一个服务 间隔5s从服务器获取一次数据,根据业务需要,当需要提醒给用户时,从右侧自动划出
类似效果如下:在任何界面都会有通知弹窗


2、实现过程

①android的根布局叫dector(获取方式为:window.getDecotrView()),
②在activity中setContView设置的activity布局,可以通过dector.getChildAt(0)
③自定义一个FramLayout,FramLayout首先添加above;自定义通知内容,添加到FramLayout;然后把我们自定义的FrameLayout添加到dector
for example:
ViewGroup decor = (ViewGroup) mWindow.getDecorView();//获取根布局
ViewGroup above = (ViewGroup) decor.getChildAt(0);//获取activity的布局
decor.removeView(above);
above.setBackgroundDrawable(decor.getBackground());
/**自定义通知开始**/
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
rlNotifactions.setLayoutParams(lp); View grid = inflater.inflate(R.layout.listview_notification,null);
ListView listview = (ListView)grid.findViewById(R.id.listview_notification_list);
listview.setAdapter(adapter);
RelativeLayout.LayoutParams lpTv = new RelativeLayout.LayoutParams(790, ViewGroup.LayoutParams.MATCH_PARENT);
lpTv.addRule(RelativeLayout.ALIGN_PARENT_TOP|RelativeLayout.ALIGN_PARENT_RIGHT);
lpTv.setMargins(0, 100, 0, 0);
/**自定义通知结束**/
rlNotifactions.addView(grid,lpTv); mAboveView.addView(above);
addView(mAboveView);
addView(rlNotifactions);
decor.addView(this);//this指的是上文提到的自定义frameLayout
}
参考:
https://github.com/adamrocker/simple-side-drawer/blob/master/doc/simple_side_drawer2.pdf
https://github.com/adamrocker/simple-side-drawer
57、android 应用内全局通知的实现方法的更多相关文章
- Android获取内置sdcard跟外置sdcard路径
Android获取内置sdcard跟外置sdcard路径.(测试过两个手机,亲测可用) 1.先得到外置sdcard路径,这个接口是系统提供的标准接口. 2.得到上一级文件夹目录 3.得到该目录的所有文 ...
- [Android] WebView内的本地网页,使用XMLHttpRequest读取本地档案
[Android] WebView内的本地网页,使用XMLHttpRequest读取本地档案 问题情景 在Android里,可以使用WebView来呈现本地或是远程的网页内容.但是在显示本地网页时,如 ...
- 全局通知Notification
Notification 全局通知 关于全局通知的个人理解: 即有一个发射消息的,在整个应用中任何对象都可以接受这个消息 但是无论是哪个对象接受消息,都要在这个对象结束时移除消息 简单的说 就是给对象 ...
- Android 应用内多语言切换
最近公司的 App 里需要用到多语言切换,简单来说,就是如果用户没有选择语言选项时,App 默认跟随系统语言,如果用户在 App 内进行了语言设置,那么就使用用户设置的语言.当然,你会发现,App 的 ...
- android studio——替换全局的某个字符串
android studio——替换全局的某个字符串 edit - > replace in path https://blog.csdn.net/dragon0103/article/deta ...
- Android 浏览器内 H5 电脑 Chrome 调试
Android 浏览器内 H5 调试 chrome://inspect 移动前端调试方案(Android + Chrome 实现远程调试) adb 相关资源 adb shell(ADB Kits)下载 ...
- 使用Chrome开发者工具调试Android端内网页(微信,QQ,UC,App内嵌页等)
使用Chrome开发者工具调试Android端内网页(微信,QQ,UC,App内嵌页等) 前言 移动端页面调试一直是好多朋友头疼的问题,iOS 由于其封闭的特性和整体较高的性能,整体适配相对好做,调试 ...
- Android应用内实现视频播放--腾讯浏览服务(TBS)
TBS视频播放 TBS视频播放器可以支持市面上几乎所有的视频格式,包括mp4, flv, avi, 3gp, webm, ts, ogv, m3u8, asf, wmv, rm, rmvb, mov, ...
- android手机内的通讯录数据库
今天看了一下 android手机内的通讯录数据库,简单的汇总了一下. 数据库见附件中的contacts2.db , 里面一共有40个表,34个视图,很庞大,挑几个重点的看一下. 1.表Raw_cont ...
随机推荐
- CocoStudio UIButton setPressedActionEnabled(true) 子控件不跟着缩放
具体情况是这样的:美术给了我 一个按钮的背景图片 一个按钮的文字图片,用背景图片创建一个button,然后把文字图片添加进去(注意关闭文字图片的交互功能) 设置UIButton setPressed ...
- MongoDB-2.6.0 (OpenLogic CentOS7.2)
平台: CentOS 类型: 虚拟机镜像 软件包: mongodb basic software database linux open source 服务优惠价: 按服务商许可协议 云服务器费用:查 ...
- 「转」sqlalchemy 0.9.8 多对多级联删除
转自知乎 http://www.zhihu.com/question/21050551 有 A,B,C,AB,AC五张表 class A(base): __tablename__ = "a& ...
- 实战:ADFS3.0单点登录系列-前置准备
本文为本系列第二篇,主要分为两部分进行介绍, 一.网络拓扑 二.证书制作 还是将本系列目录贴出来,方便导航 实战:ADFS3.0单点登录系列-总览 实战:ADFS3.0单点登录系列-前置准备 实战:A ...
- 进程peb结构、获得peb的方法
PEB :进程环境块TEB.ProcessEnvironmentBlock成员就是PEB的结构体地址TEB结构体位于FS段选择符所指的段内存的起始地址处,且ProcessEnvironmentBloc ...
- Linux 的歷史
Unix 狹義作業系統提供應用程式及命令直譯器. 作業系統發展初期並不具可攜性. Bell, GE 及 MIT 合作開發的 "Multice" 系統( 相容分時系統 ). 1969 ...
- python_74_pickle反序列化
import pickle def say(name):#序列化时用完会释放,要想反序列化,要重新写上该函数,否则会出错 print('我的高中', name)#可以和之前的序列化函数不同 f=ope ...
- 【转】浅谈Node.js单线程模型
Node.js采用 事件驱动 和 异步I/O 的方式,实现了一个单线程.高并发的运行时环境,而单线程就意味着同一时间只能做一件事,那么Node.js如何利用单线程来实现高并发和异步I/O?本文将围绕这 ...
- 【转帖】Linux mount 域控权限的共享目录
https://www.linuxidc.com/Linux/2012-09/71388.htm 之前一直以为没法 映射 home 域的内容 其实还有一个地方.. 注意 空格的话 需要用 \ 进行转移 ...
- opencv anaconda
from: http://blog.csdn.net/fairylrt/article/details/43560525 Anaconda是一个python的一个包装,或者不单单是这样.你可以认为An ...