iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android应用图标在状态栏上显示实现原理
  • 412
分享到

Android应用图标在状态栏上显示实现原理

状态栏Android 2022-06-06 10:06:27 412人浏览 泡泡鱼
摘要

一、前方 在研究《Android类似360,QQ管家那样的悬浮窗》突发奇想,想把应用的图标也显示到状态栏上,类似手机QQ,而有消息来时改变状态栏上的图标显示。 二、原理 其实很

一、前方
在研究《Android类似360,QQ管家那样的悬浮窗》突发奇想,想把应用的图标也显示到状态栏上,类似手机QQ,而有消息来时改变状态栏上的图标显示。
二、原理
其实很研究完后,才发现,很简单:
2.1 显示图标在状态栏上
代码如下:
NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
Notification n = new Notification(
resId, "Floats Start!", System.currentTimeMillis());
// 将此通知放到通知栏的"OnGoing"即"正在运行"组中
n.flags |= Notification.FLAG_ONGOING_EVENT;
// 表明在点击了通知栏中的"清除通知"后,此通知不清除,
// 经常与FLAG_ONGOING_EVENT一起使用
n.flags |= Notification.FLAG_NO_CLEAR;
PendingIntent pi = PendingIntent.getActivity(this, 0, getIntent(), 0);
n.contentIntent = pi;
n.setLatestEventInfo(this, "FloatsWindow", "start!", pi);
nm.notify(NOTIFICATION_ID_ICON, n);

2.2 修改图标的显示
不用cancel这个通知,只需传入不同的resId,再通知即可。
代码如下:
package com.chris.floats.window;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.Gravity;
import android.view.WindowManager;
import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
public class MainActivity extends Activity {
private static WindowManager mWindowMgr = null;
private WindowManager.LayoutParams mWindowMgrParams = null;
private static FloatsWindowView mFloatsWindowView = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected void onStop() {
super.onStop();
deleteIconToStatusbar();
}

@Override
public void onWindowFocusChanged(boolean hasFocus) {
if(hasFocus){
if(mFloatsWindowView != null){
mWindowMgr.removeView(mFloatsWindowView);
mFloatsWindowView = null;
}
addIconToStatusbar(R.drawable.a0);
}else{
getWindowLayout();
addIconToStatusbar(R.drawable.ic_launcher);
}
}
private void initParams(){
DisplayMetrics dm = getResources().getDisplayMetrics();
mWindowMgrParams.x = dm.widthPixels - 136;
mWindowMgrParams.y = 300;
mWindowMgrParams.width = 136;
mWindowMgrParams.height = 136;
}
private void getWindowLayout(){
if(mFloatsWindowView == null){
mWindowMgr = (WindowManager)getBaseContext().getSystemService(Context.WINDOW_SERVICE);
mWindowMgrParams = new WindowManager.LayoutParams();

mWindowMgrParams.type = 2003;
mWindowMgrParams.fORMat = 1;

mWindowMgrParams.flags = 40;
mWindowMgrParams.gravity = Gravity.LEFT | Gravity.TOP;
initParams();
mFloatsWindowView = new FloatsWindowView(this);
mWindowMgr.addView(mFloatsWindowView, mWindowMgrParams);
}
}
private final static int NOTIFICATION_ID_ICON = 0x10000;

private void addIconToStatusbar(int resId){
NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
Notification n = new Notification(
resId, "Floats Start!", System.currentT imeMillis());
// 将此通知放到通知栏的"Ongoing"即"正在运行"组中
n.flags |= Notification.FLAG_ONGOING_EVENT;
// 表明在点击了通知栏中的"清除通知"后,此通知不清除,
// 经常与FLAG_ONGOING_EVENT一起使用
n.flags |= Notification.FLAG_NO_CLEAR;
PendingIntent pi = PendingIntent.getActivity(this, 0, getIntent(), 0);
n.contentIntent = pi;
n.setLatestEventInfo(this, "FloatsWindow", "start!", pi);
nm.notify(NOTIFICATION_ID_ICON, n);
}
private void deleteIconToStatusbar(){
NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
nm.cancel(NOTIFICATION_ID_ICON);
}
}

以上就是源码,当应用的焦点变化时,状态栏上的图片也会跟着变化。
源码下载地址:Http://download.csdn.net/detail/qingye_love/5506825 您可能感兴趣的文章:Android 状态栏的设置适配问题详解Android系统更改状态栏字体颜色android 动态控制状态栏显示和隐藏的方法实例Android 去掉状态栏的方法汇总3种Android隐藏顶部状态栏及标题栏的方法Android自定义状态栏颜色与应用标题栏颜色一致Android实现修改状态栏背景、字体和图标颜色的方法Android 实现沉浸式状态栏的方法Android动态控制状态栏显示和隐藏Android状态栏的适配汇总


--结束END--

本文标题: Android应用图标在状态栏上显示实现原理

本文链接: https://www.lsjlt.com/news/27597.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • android状态栏显示短信怎么实现
    要在Android的状态栏中显示短信,你需要创建一个BroadcastReceiver来接收短信,并在接收到短信时将其显示在状态栏上...
    99+
    2023-08-12
    android
  • android实现在图标上显示数字
    本文实例为大家分享了android实现在图标上显示数字的具体代码,供大家参考,具体内容如下 效果图: 动态显示当天的号数。 主要代码如下: import android.conte...
    99+
    2024-04-02
  • Android系统状态栏定制图标显示逻辑控制
    目录背景状态栏是什么?系统ICON布局StatusIconContainer -- onMeasureStatusIconContainer -- onLayoutStat...
    99+
    2022-11-13
    Android 状态栏图标 Android 状态栏
  • Android应用中怎么动态显示与隐藏状态栏
    这篇文章给大家介绍Android应用中怎么动态显示与隐藏状态栏,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。什么是沉浸式?先来分析一下叫错的原因吧,之所以很多人会叫错,是因为根本就不了解沉浸式是什么意思,然后就人云亦云...
    99+
    2023-05-31
    android roi
  • android怎么实现在图标上显示数字
    这篇文章主要介绍了android怎么实现在图标上显示数字的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇android怎么实现在图标上显示数字文章都会有所收获,下面我们一起来看看吧。效果图:动态显示当天的号数。主...
    99+
    2023-06-30
  • Android应用怎么实现隐藏状态栏
    这篇文章将为大家详细讲解有关Android应用怎么实现隐藏状态栏,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。  方法一:public class MainActivit...
    99+
    2023-05-31
    android roi
  • Android应用中怎么实现自定义状态栏
    这篇文章给大家介绍Android应用中怎么实现自定义状态栏,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、目标:Android5.0以上二、步骤1、在res-values-colors.xml下新建一个RGB颜色 ...
    99+
    2023-05-31
    android roi
  • Android应用怎么实现一个沉浸式状态栏
    这期内容当中小编将会给大家带来有关Android应用怎么实现一个沉浸式状态栏,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。效果。导航栏问题在Android中,顶部导航栏目前常用的两种实现方式,一个是通过T...
    99+
    2023-05-31
    android roi
  • 如何在Android应用中实现一个沉浸式状态栏效果
    这篇文章将为大家详细讲解有关如何在Android应用中实现一个沉浸式状态栏效果,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。实现方法如下: @TargetApi(Build.VERSION...
    99+
    2023-05-31
    android roi
  • Android开发如何实现应用层面屏蔽状态栏
    这篇文章主要为大家展示了“Android开发如何实现应用层面屏蔽状态栏”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android开发如何实现应用层面屏蔽状态栏”这篇文章吧。具体如下:一、由于S...
    99+
    2023-05-30
    android
  • Android应用怎么实现一个浮动状态栏效果
    这期内容当中小编将会给大家带来有关Android应用怎么实现一个浮动状态栏效果,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。首先:要实现的是浮动状态栏效果,通过在Activity的onCreate方法中调...
    99+
    2023-05-31
    android roi
  • Android实现修改状态栏背景、字体和图标颜色的方法
    前言:Android开发,对于状态栏的修改,实在是不友好,没什么api可以用,不像ios那么方便.但是ui又喜欢只搞ios一套.没办法.各种翻源码,写反射.真的蛋疼.需求场景:当toolbar及状态栏需要为白色或浅色时(如简书),状态栏由于...
    99+
    2023-05-30
    android 状态栏 roi
  • Android中APP安装后在桌面上不显示应用图标怎么办
    这篇文章给大家分享的是有关Android中APP安装后在桌面上不显示应用图标怎么办的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体如下:一、问题:前几天在写项目的时候运行的时候突然Android桌面上没有了应用...
    99+
    2023-05-31
    android app
  • YOLOv5实现目标分类计数并显示在图像上
            有同学后台私信我,想用YOLOv5实现目标的分类计数,因此本文将在之前目标计数博客的基础上添加一些代码,实现分类计数。阅读本文前请先看那篇博客,链接如下: YOLOv5实现目标计数_Albert_yeager的博客 1. 分...
    99+
    2023-09-01
    YOLO python 机器学习 计算机视觉 目标检测
  • 如何在Win10桌面上添加应用图标显示出我们常用的图标
      使用电脑,我们通常都是使用桌面上的图标比较快捷。安装了Win10,本想体验新版本带来的更好功能,但是发现桌面上没有图标。看来还得把图标添加到桌面上。如何让Win10桌面上显示出我们常用的图标呢?   在Win10系统...
    99+
    2023-06-09
    Win10 桌面 应用图标 图标 添加 桌面上 应用
  • 如何在Android应用中实现一个动态searchview搜索栏效果
    本篇文章为大家展示了如何在Android应用中实现一个动态searchview搜索栏效果,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。实现这个效果, 只要关注几个点搜索栏伸展和收缩动画效果实现2.搜...
    99+
    2023-05-31
    android searchview roi
  • 在macOS、Windows上使用VSCode + SSH实现远程Matplotlib图形显示
    简介 在 macOS 上使用 VSCode + SSH 环境来显示 Matplotlib 绘制的图形需要进行一些配置。因为默认情况下, Matplotlib 的图形是无法显示在远程计算机的桌面上的。您...
    99+
    2023-10-03
    macos vscode ssh
  • 怎么用CSS实现让文字半透明显示在图片上
    本篇内容主要讲解“怎么用CSS实现让文字半透明显示在图片上”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用CSS实现让文字半透明显示在图片上”吧!代码如下:...
    99+
    2024-04-02
  • YOLOv5怎么实现在图片上显示统计出单一检测目标的个数
    这篇文章主要介绍“YOLOv5怎么实现在图片上显示统计出单一检测目标的个数”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“YOLOv5怎么实现在图片上显示统计出单一检测目标的个数”文章能帮助大家解决问...
    99+
    2023-07-05
  • 揭示 ASP 控件状态管理的秘密:实现卓越的 Web 应用程序
    ViewState 和 SessionState: ViewState 和 SessionState 是 ASP.NET 中用于管理控件状态的主要机制。 ViewState: 存储在页面本身中,随着页面提交而传递,独立于服务器会话。 用...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作