创建自定义通知布局| Android 开发者

文章推薦指數: 80 %
投票人數:10人

您还可以选择调用 setCustomBigContentView() 为展开后通知设置不同的布局。

注意:如果要为媒体播放控件创建自定义通知,请采纳同样的建议,但改用 ... 平台 AndroidStudio GooglePlay Jetpack Kotlin 文档 游戏 English BahasaIndonesia Español–AméricaLatina Português–Brasil 中文–简体 日本語 한국어 登录 文档 概览 指南 参考文档 示例 设计和质量 平台 AndroidStudio GooglePlay Jetpack Kotlin 文档 概览 指南 参考文档 示例 设计和质量 游戏 应用基础知识 简介 构建首个应用 概览创建Android项目运行您的应用构建简单的界面启动另一个Activity 应用基础知识 应用资源 概览处理配置变更 本地化 本地化您的应用使用pseudolocale测试您的应用Unicode和国际化支持语言和语言区域解决方案复杂的XML资源 资源类型 概览动画颜色状态列表可绘制对象布局菜单字符串样式字体更多类型 应用清单文件 概览 设备 设备兼容性 概览屏幕兼容性概览支持不同的像素密度声明受限屏幕支持 多APK支持 概览针对不同的API级别创建多个APK针对不同的屏幕尺寸创建多个APK针对不同的GL纹理创建多个APK创建多个具有多个尺寸的APK支持不同的语言和文化支持不同的平台版本GooglePlay上的过滤器 平板电脑、大屏设备和可折叠设备 大屏幕使用入门媒体投影增强的信箱模式 构建自适应界面 支持不同的屏幕尺寸自适应界面的导航将界面迁移到自适应布局activity嵌入多窗口支持大屏幕上的输入兼容性 针对可折叠设备打造应用 了解可折叠设备让应用支持折叠功能在可折叠设备上测试应用 Wear 使用入门WearOS应用开发原则升级到最新版本的WearOSWearOS应用开发与移动应用开发WearOS界面 使用入门 WearOS开发者在线课程创建和运行穿戴式应用调试WearOS应用截取Wear界面屏幕截图 叠加层 概览通过穿戴式设备播放音频身份验证独立应用请求权限检测位置显示在“最近用过”和“应用恢复”部分中 使用Compose构建界面 在WearOS上使用JetpackCompose按钮卡片条状标签列表页面指示器选择器位置指示器进度指示器滑块步进控件滑动即可关闭切换条状标签实时信息 使用视图构建界面 在WearOS上构建基于视图的界面处理不同的手表形状屏幕选项创建列表导航在Wear上退出全屏activity显示确认动画让应用始终显示在Wear上 卡片和复杂功能 卡片概览表盘复杂功能向复杂功能提供数据 通知 WearOS上的通知通知的桥接选项持续性活动 处理数据 在WearOS上发送和同步数据WearOS上的网络访问和同步访问WearableDataLayer传输资源收发消息处理数据层事件使用DataLayerAPI同步数据项 用户输入 实体按钮旋转输入在Wear中创建输入法语音 健康服务 概览活动数据和锻炼被动数据更新使用合成数据提供商 设计 设计原则使用入门互动类型屏幕形状通知复杂功能卡片卡片设计系统叠加层持续性活动确认叠加层断开连接指示灯权限消息选择控件发布与延迟导航权限登录硬件按钮颜色排版图标下载WearMaterial主题 创建表盘主题 概览设计表盘构建表盘服务绘制表盘向表盘添加复杂功能创建互动式表盘提供配置activity解决常见问题通过硬件加速提升性能优化性能和电池续航时间 WatchFaceStudio WatchFaceStudio键盘快捷键管理WatchFaceStudio项目使用WatchFaceStudio创建表盘主题在WatchFaceStudio中构建复杂功能标记表达式语言设置在WatchFaceStudio中始终开启陀螺效应构建并从WatchFaceStudio上传测试您的表盘常见问题解答Wear应用质量打包WearOS应用分发到WearOS平台打造中国版WearOS应用WearOS版本说明 AndroidTV 概览 开发TV应用 概览TV应用开发入门AndroidXTV库处理TV硬件管理TV控制器构建TV布局屏幕键盘创建TV导航在GoogleTV上提高用户互动度的最佳做法 构建TV播放应用 概览 界面指南和LeanbackAPI 创建目录浏览器提供卡片视图构建详情视图使用传输控件电视上的播放控件添加引导步骤向初次使用的用户介绍您的应用实现媒体会话“闻曲知音”卡片中的后台播放功能音频功能匹配内容的帧速率 帮助用户在TV上查找内容 概览 推荐TV内容 概览主屏幕上的频道视频节目属性音频节目属性游戏节目属性 接下来观看 添加节目属性应用开发者准则电视服务提供商准则预览视频AndroidN及更早版本中的建议使TV应用可供搜索在TV应用内进行搜索 制作TV游戏 概览在对延迟敏感的影音在线播放应用中使用在线播放保护功能 开发TV输入服务 概览开发TV输入服务使用频道数据管理TV用户交互支持时移支持内容录制TV应用核对清单 TV无障碍功能 无障碍功能最佳做法TalkBack评估示例采用系统字幕设置自定义视图无障碍功能支持自定义视图无障碍功能示例 版本 适用于TV的Android12 适用于TV的Android13(Beta版) 概览TV的新变化 AndroidforCars 概览 开发汽车媒体应用 开发汽车媒体应用添加对AndroidAuto的支持添加对AndroidAutomotiveOS的支持构建AndroidAuto即时通讯应用 构建车载导航和地图注点应用 使用AndroidforCars应用库构建车载地图注点应用构建车载导航应用添加对AndroidAuto的支持添加对AndroidAutomotiveOS的支持构建AndroidAutomotiveOS视频应用测试Android车载应用分发Android汽车应用适用于汽车的GooglePlay服务AndroidAutomotiveOS中的通知 Chrome操作系统设备 概览构建适用于Chrome操作系统的应用针对Chrome操作系统优化应用准备您的开发环境Chromebook的应用清单兼容性应用的Chrome操作系统设备支持Chromebook上的应用呈现差异窗口管理调整Chrome操作系统上的游戏在Chrome操作系统上流畅播放动画在Chrome操作系统中运行的Android应用的测试用例 应用架构 简介 应用架构指南 概览 界面层 概览界面事件网域层数据层学习衔接课程 架构组件 界面层库 视图绑定 概览从Kotlin合成迁移到视图绑定 数据绑定库 概览使用入门布局和绑定表达式使用可观察的数据对象生成的绑定类绑定适配器将布局视图绑定到架构组件双向数据绑定 生命周期感知型组件 处理生命周期ViewModelLiveData保存界面状态ViewModel的已保存状态模块将Kotlin协程与生命周期感知型组件一起使用 Paging库 概览加载并显示分页数据从网络和数据库加载页面转换数据流管理和显示加载状态测试Paging实现迁移到Paging3 Paging2 概览显示分页列表加载分页数据 数据层库 DataStore WorkManager 概览使用入门 方法指南 定义您的WorkRequest工作状态管理工作观察工作器的中间进度将工作链接在一起测试Worker实现使用WorkManager进行集成测试调试WorkManager 高级概念 配置和初始化 WorkManager中的线程处理 概览用Worker处理线程用CoroutineWorker处理线程用RxWorker处理线程用ListenableWorker处理线程支持长时间运行的工作器从FirebaseJobDispatcher迁移从GCMNetworkManager迁移 应用入口点 Activity Activity简介Activity生命周期Activity状态变更测试您的Activity任务和返回栈进程和应用生命周期Parcelable和Bundle加载器“最近”屏幕针对从后台启动activity的限制 应用快捷方式 概览创建快捷方式添加功能管理快捷方式使用快捷方式的最佳做法 应用导航 导航原则针对不同外形规格进行设计处理配置变更 Navigation组件 概览使用入门创建目的地设计导航图嵌套图全局操作转到目的地支持多个返回堆栈条件导航在目的地之间传递数据为目标创建深层链接在目的地之间添加动画过渡效果使用NavigationUI更新界面组件KotlinDSL以编程方式进行交互使用功能模块进行导航多模块项目的最佳做法测试导航添加新的目的地类型迁移到Navigation组件 Fragment 概览创建FragmentFragment管理器Fragment事务在Fragment之间添加动画过渡效果Fragment生命周期保存与Fragment相关的状态与Fragment通信使用应用栏使用DialogFragment显示对话框调试fragment测试fragment 应用链接 概览启用指向应用内容的链接验证应用链接为免安装应用创建应用链接使用ViewPager创建包含标签页的滑动视图使用ViewPager2创建包含标签页的滑动视图提供自定义返回导航 依赖项注入 概览手动依赖项注入使用Hilt实现依赖项注入在多模块应用中使用Hilt将Hilt和其他Jetpack库一起使用Hilt测试指南Hilt和Dagger注解备忘单 Dagger Dagger基础知识在Android应用中使用Dagger在多模块应用中使用Dagger 应用启动 核心主题 应用兼容性 概览兼容性框架工具针对非SDK接口的限制 与其他应用交互 概览向另一个应用发送用户获取Activity的结果允许其他应用启动您的activity 软件包可见性 概览了解自动可见的软件包声明软件包可见性需求实现常见用例测试软件包可见性 intent和intent过滤器 概览常见Intent 界面 概览 布局 概览使用ConstraintLayout构建自适应界面 使用MotionLayout向布局中添加运动 概览使用MotionLayout的轮播界面MotionLayout示例 MotionLayoutXML参考文档 概览使用RecyclerView创建列表高级RecyclerView自定义创建卡片式布局创建双窗格布局 改善布局性能 概览优化布局层次结构通过重复使用布局视图加载延迟线性布局适配器视图相对布局 自定义视图组件 概览创建自定义视图类实现自定义绘图使视图可交互优化视图针对可折叠设备设计应用 外观和风格 MaterialDesign样式和主题背景深色主题圆滑边角自适应图标添加悬浮操作按钮创建阴影和剪辑视图 文本 自动调整TextView的大小可下载字体XML中的字体 表情符号 支持新式表情符号表情符号兼容性放大镜微件Span按钮复选框单选按钮切换按钮微调框选择器提示 通知 概览创建通知创建展开式通知显示有时效性的通知从通知启动Activity创建一组通知创建和管理通知渠道修改通知标志创建自定义通知 启动画面 概览迁移现有的启动画面对话气泡 添加应用栏 概览设置应用栏添加和处理操作添加向上操作使用操作视图和操作提供程序 窗口边衬区 概览全屏显示沉浸模式支持刘海屏控制软件键盘 支持滑动刷新 概览为您的应用添加滑动刷新响应刷新手势消息框概览 弹出消息概览 概览构建并显示弹出消息为消息添加操作对话框菜单 设置 概览整理您的设置自定义您的设置使用已保存的值在代码中构建层次结构处理其他设备类型首选组件和属性 搜索 概览创建搜索界面添加近期查询建议添加自定义建议可搜索配置 添加搜索功能 概览设置搜索界面存储和搜索数据其他后向兼容组件接收富媒体内容复制和粘贴拖放画中画支持 创建后向兼容界面 概览抽象化新API代理到新API使用旧版API创建实现使用版本感知组件设备控制 适用于移动应用的主屏幕频道 概览媒体主屏幕图书媒体主屏幕视频媒体主屏幕音频 应用微件 概览创建简单的widget改进widget创建高级widget使用widget集合提供灵活的widget布局启用widget配置构建应用widget宿主 动画和过渡 概览动画简介属性动画概览为可绘制图形添加动画使用动画显示或隐藏视图使用动画移动视图使用Fling动画移动视图使用缩放动画放大视图运用弹簧物理学原理为图形运动添加动画自动为布局更新添加动画使用过渡效果为布局变化添加动画创建自定义过渡动画使用动画启动Activity使用ViewPager在Fragment之间滑动使用ViewPager2在Fragment之间滑动从ViewPager迁移到ViewPager2其他资源 图片和图形 概览可绘制对象概览矢量可绘制对象概览处理位图使用PaletteAPI选择颜色减小图片下载大小硬件加速 使用AGSL着色器绘制 概览AGSL与GLSL之间的区别在Android应用中使用AGSLAGSL快速参考OpenGLES 使用OpenGLES显示图形 概览构建OpenGLES环境定义形状绘制形状应用投影和相机视图添加动画响应触摸事件 渲染 概览减少过度绘制性能和视图层次结构使用GPU渲染模式分析工具进行分析使用广色域内容增强图形效果 音频和视频 音频和视频概览媒体控件支持的媒体格式媒体编解码器 媒体应用架构 媒体应用架构概览使用媒体会话 开发音频应用 音频应用概览构建媒体浏览器服务构建媒体浏览器客户端媒体会话回调使用媒体控制器测试应用 开发视频应用 视频应用概览构建视频播放器活动媒体会话回调兼容的媒体转码响应媒体按钮处理音频输出的变化管理音频焦点 Google助理 Google助理和媒体应用Google助理驾车模式下的媒体应用 在设备之间传输 传输概览MediaRouter概览MediaRouteProvider概览使用VolumeShaper控制振幅MediaPlayer概览MediaRecorder概览ExoPlayer共享音频输入录制视频和音频播放内容帧速率分享视频的最佳做法其他媒体资源 服务 概览前台服务绑定服务AIDL概览 后台任务 概览后台线程后台优化 广播 概览隐式广播例外情况 管理设备唤醒状态 概览使设备保持唤醒状态设置闹钟使用ListenableFuture 权限 概览评估您的应用是否需要权限声明应用权限请求应用权限解释对比较敏感信息的访问权限应用权限最佳做法仅在默认处理程序中使用的权限限制与其他应用的交互定义自定义权限 应用数据和文件 概览存储空间概览保存到应用专属存储空间 保存到共享的存储空间 概览媒体文档和其他文件数据集管理存储设备上的所有文件保存键值对数据 将数据保存到本地数据库 概览使用实体定义数据使用DAO访问数据定义对象之间的关系编写异步DAO查询创建视图并将其关联到数据库预填充数据库迁移数据库测试和调试数据库引用复杂数据从SQLite迁移到Room使用SQLite保存数据存储空间用例和最佳做法 分享简单的数据 概览将简单的数据发送到其他应用从其他应用接收简单的数据 分享文件 概览设置文件分享分享文件请求某个分享的文件检索文件信息 使用NFC分享文件 概览将文件发送到其他设备从其他设备接收文件 打印文件 概览打印照片打印HTML文档打印自定义文档 内容提供程序 概览内容提供程序基础知识创建内容提供程序使用存储访问框架打开文件创建自定义文档提供程序应用安装位置 用户数据和身份 概览添加登录工作流显示生物识别身份验证对话框 自动填充框架 概览针对自动填充优化应用构建自动填充服务将自动填充功能与键盘集成识别开发者拥有的应用检查您的应用如何收集和分享用户数据审核数据访问获取用户可重置的广告ID日历提供程序概览 联系人提供程序 概览检索联系人列表检索联系人的详细信息使用Intent修改联系人显示快速联系标志帐号转移 数据备份 概览备份用户数据备份键值对测试备份和恢复唯一标识符最佳做法 记住用户并对用户进行身份验证 概览记住您的用户对OAuth2服务进行身份验证创建自定义帐号类型 用户位置 概览请求位置权限获取最近一次的已知位置更改位置信息设置请求位置信息更新在后台访问位置信息创建和监控地理围栏检测用户何时启动Activity优化位置信息服务,节省电量测试位置信息工作流迁移到LocationAPI和ContextAPI添加地图 触摸和输入 概览输入事件 使用触摸手势 概览检测常用手势跟踪触摸和指针移动以动画方式显示滚动手势支持导航手势处理多点触控手势拖动并缩放在ViewGroup中管理触摸事件 处理键盘输入 概览指定输入法类型处理输入法可见度支持键盘导航处理键盘操作 支持游戏控制器 概览处理控制器操作支持各种Android版本的控制器支持多个游戏控制器 输入法编辑器 创建输入法图片键盘拼写检查工具 相机 选择相机库 CameraX 概览架构配置 用例 预览图片拍摄图片分析视频拍摄 高级主题 ExtensionsAPI转换输出旋转设备 Camera2 概览相机捕获会话和请求相机镜头和功能同时使用多个相机信息流相机预览多相机APIExtensionsAPI 相机(已弃用) 概览拍照录制视频控制相机CameraAPI 传感器 概览传感器概览移动传感器位置传感器环境传感器原始GNSS测量值 连接性 概览 执行网络操作 概览连接到网络管理网络使用情况读取网络状态优化网络访问优化网络流量消耗监控网络连接状态和网络连接计量解析XML数据 使用Cronet执行网络操作 概览发送简单请求Cronet请求生命周期将Cronet和其他库一起使用 参考文档 org.chromium.net 概览CallbackException CronetEngine 概览 CronetEngine.Builder 概览LibraryLoaderCronetExceptionInlineExecutionProhibitedExceptionNetworkExceptionQuicExceptionUploadDataProviderUploadDataProvidersUploadDataSink UrlRequest 概览Builder回调状态StatusListener UrlResponseInfo 概览HeaderBlock使用5G增强应用使用gRPC构建客户端-服务器应用 在不消耗大量电池电量的情况下传输数据 概览优化下载以实现高效网络访问尽量减少定期更新的影响避免未经优化的下载 减少网络耗电量 概览收集网络流量数据分析数据流量优化网络访问优化用户发起的网络使用行为优化应用发起的网络使用优化服务器发起的网络使用优化常规网络使用 使用同步适配器传输数据 概览创建存根身份验证程序创建存根内容提供程序创建同步适配器运行同步适配器 蓝牙 概览设置蓝牙查找蓝牙设备连接蓝牙设备传输蓝牙数据蓝牙权限蓝牙配置文件配套设备配对 蓝牙低功耗 概览查找BLE设备连接到GATT服务器传输BLE数据 NFC 概览NFC基础知识高级NFC基于主机的卡模拟概览 电信 概览构建通话应用防止来电显示仿冒电话ID WLAN WLAN扫描功能概览Wi-Fi点对点连接Wi-Fi感知概览通过RTT确定Wi-Fi位置信息仅限本地使用的热点 WLAN基础架构 WLAN基础架构概览适用于互联网连接的WLAN建议API适用于点对点连接的Wi-Fi网络请求APIPasspoint保存网络和Passpoint配置 USB 概览配件概览主机概览UWBVPN会话发起协议概览 发现并连接 概览使用网络服务发现通过WLAN建立点对点连接将WLAN点对点用于服务发现WLANEasyConnectOpenMobileAPI读取器支持 Renderscript 概览高级RenderScript从RenderScript迁移 RuntimeAPI参考文档 概览数字类型对象类型转换函数数学常量和函数矢量数学函数矩阵函数四元数函数原子更新函数时间函数和类型分配数据访问函数对象特性函数内核调用函数和类型输入/输出函数调试函数图形函数和类型索引 基于网络的内容 概览在WebView中构建网络应用管理WebView对象加载本地内容调暗网络内容WebView崩溃报告中的用户隐私在Web应用中支持不同的屏幕调试网络应用Web应用最佳做法针对未来版本的WebView进行测试 AndroidAppBundle 概览配置基本模块构建和测试appbundle添加代码公开透明appbundle格式常见问题解答 GooglePlay GooglePlay结算服务GooglePlayCore库 PlayPoints 概览创建商品和促销活动检测和分发商品测试商品 PlayAssetDelivery 概览集成AssetDelivery(Kotlin和Java)集成AssetDelivery(原生)集成AssetDelivery(Unity)目标纹理压缩格式测试AssetDelivery PlayFeatureDelivery 概览配置安装时分发配置按条件分发配置按需分发按需分发最佳做法配置免安装分发其他资源 应用内评价 概览使用Kotlin或Java进行集成使用原生代码进行集成使用Unity进行集成测试应用内评价 应用内更新 概览支持应用内更新(Kotlin或Java)支持应用内更新(原生代码)支持应用内更新(Unity)测试应用内更新 GooglePlay免安装体验 GooglePlay免安装体验概览 免安装应用开发入门 创建免安装的appbundle应用的用户体验最佳做法 免安装游戏开发入门 概览Unity插件游戏的用户体验最佳做法迁移至AndroidAppBundle实现资源的云端分发支持GooglePlay游戏服务免安装Play游戏免安装Play游戏核对清单缩减免安装应用或游戏的大小将广告添加到您的免安装应用或游戏中提供多个入口点 与Firebase集成 为您的免安装应用添加GoogleAnalyticsforFirebase将FirebaseDynamicLinks用于免安装应用技术要求核对清单GooglePlay免安装体验政策 资源 参考文档代码示例SDK版本说明免安装应用Intent 支持 已知问题StackOverflowPlayDeveloperAPI PlayInstallReferrer 概览 PlayInstallReferrer库 概览参考文档版本说明PlayInstallReferrerAPIPlayIntegrityAPI Play要求 Play政策目标API级别支持64位架构 应用许可 概览许可概览设置许可添加服务器端验证添加客户端验证许可参考文档APK扩展文件 Google助理 概览 构建 与应用有关的Action概览实现内置intent创建shortcuts.xml将动态快捷方式推送给Google助理版本说明 测试 Google助理插件 发展 概览应用内快捷方式宣传SDK 添加更多功能 自定义intentAndroidwidget前台应用调用内嵌目录网站目录Google助理分享ReadIt Actions.xml Actions.xml迁移指南Actions.xml概览构建与应用有关的Action创建actions.xml网站目录与应用有关的Action测试工具AndroidSlice问题排查支持 Slice 概览使用入门Slice模板 设备上搜索 游戏 开发 概览 AndroidGameDevelopmentKit(AGDK) 概览库下载版本说明AndroidStudio 适用于VisualStudio的AndroidGameDevelopmentExtension 概览快速入门配置项目调试程序衡量应用性能针对AndroidStudio修改build.gradle文件示例版本说明 AndroidGPU检查器 概览快速入门支持的设备 系统性能分析 概览查看系统配置文件GPU性能计数器 分析系统配置文件 帧处理时间内存效率纹理内存带宽用量顶点内存带宽用量线程调度 帧性能分析 概览 分析帧配置文件 开销最大的渲染通道顶点格式着色器性能 帧性能分析器界面 “Performance”窗格“Commands”窗格“Framebuffer”窗格“Geometry”窗格“Report”窗格“Shader”窗格“Memory”窗格“State”窗格“Textures”窗格“Texture”窗格“Pipeline”视图窗格支持的Vulkan扩展问题排查AndroidPerformanceTuner MemoryAdviceAPI 概览使用入门 改进 提高游戏性能缩减游戏大小 提高设备可用性 支持64位架构支持所有屏幕 游戏模式 概览使用GameModeAPI进行优化游戏模式干预项 Vulkan和OpenGL 3D素材资源优化Vulkan预旋转顶点数据管理 分发 概览 GooglePlay游戏电脑版 概览使用入门 设置游戏 PC兼容性图形配置 设备输入 设置输入 输入SDK 概览快速入门 连续性 概览连续性要求验证要求现有身份解决方案使用模拟器在Chrome操作系统上测试 发布和部署 软件包提交更新常见问题解答GooglePlay免安装体验边下载边玩 健康与健身应用 HealthConnect 简介 平台概览 架构开发者功能使用入门 数据和数据类型 简介数据类型DifferentialChangesAPI 常规工作流 写入数据读取数据删除数据汇总数据使用时段异常常见问题解答 HealthConnect指南 HealthConnect政策要求常见问题解答用户体验开发者指南 迁移 HealthConnectAPI比较指南将AndroidAPI匹配到HealthConnect迁移指南 最佳做法 测试 在Android平台上测试应用 基础知识 Android应用测试基础知识要在Android中测试的内容在Android中使用测试替身 本地测试 构建本地测试 插桩测试 构建插桩测试自动化界面测试 AndroidX测试库 针对AndroidXTest设置项目AndroidXTest的JUnit4规则AndroidJUnitRunner Espresso EspressoEspresso基础知识Espresso设置说明Espresso备忘单Espresso空闲资源Espresso-IntentsEspresso列表MultiprocessEspressoEspresso测试方案EspressoWeb无障碍功能检查其他Espresso资源 测试其他组件 测试contentprovider测试您的服务使用UIAutomator编写自动化测试 性能 概览 检查性能 AndroidStudio性能分析器 性能分析和跟踪 系统跟踪 概览 捕获跟踪记录 在AndroidStudio中捕获跟踪记录捕获设备上的跟踪记录通过命令行捕获跟踪记录浏览报告 自定义事件 定义自定义事件原生代码中的自定义跟踪事件检查GPU渲染 基准化分析 概览 Macrobenchmark 编写基准捕获指标控制您的应用添加插桩参数 Microbenchmark 概览编写基准对基准进行性能分析添加插桩参数不使用Gradle进行构建在持续集成环境中运行基准化分析 提高性能 基准配置文件应用启动库 指南 在后台运行性能等级应用待机存储分区应用休眠在Android运行时(ART)上验证应用行为 解决常见问题 应用启动 呈现速度缓慢 让您的应用随时能迅速响应改善布局性能渲染 内存 内存管理概览属性间的内存分配管理应用内存进程和线程 电池和电量 针对低电耗模式和应用待机模式进行优化监控电池电量和充电状态监控网络连接状态和网络连接计量确定和监控插接状态和基座类型使用Batterystats和BatteryHistorian分析电池用量使用BatteryHistorian分析耗电情况测试电量相关问题后台优化缩减应用大小 监控性能 AndroidVitals 概览部分唤醒锁定操作卡住过多唤醒后台WLAN扫描次数过多后台网络使用量过高ANR崩溃呈现速度缓慢冻结的帧权限遭拒应用启动时间JankStats库 无障碍 概览 构建和测试应用的无障碍功能 让应用使用起来更没有障碍改进应用无障碍功能要遵循的原则测试应用的无障碍功能 高级主题 让自定义视图使用起来更没有障碍创建自己的无障碍服务其他资源 隐私设置 隐私设置最佳做法 安全性 应用安全最佳做法安全提示数据安全在其他各Android版本中确保数据安全通过HTTPS和SSL确保安全网络安全配置更新您的安全提供程序以防范SSL攻击 使用SafetyNet抵御安全威胁 概览SafetyNetAttestationAPISafetyNetSafeBrowsingAPISafetyNetreCAPTCHAAPISafetyNetVerifyAppsAPI加密Android密钥库系统使用密钥认证功能来验证由硬件支持的密钥对AndroidProtectedConfirmation支持直接启动运行嵌入式DEX代码应用安全性改进计划 SDK SDK最佳实践 为数十亿用户打造产品 概览网络连接设备功能数据费用耗电量界面和内容 为企业打造产品 概览开发者指南工作资料设置托管配置 应用反馈 向EMM发送应用反馈测试应用反馈工作联系信息设备管理政策 设备管理 概览构建设备政策控制器 专用设备 概览锁定任务模式多用户实战宝典设备控制网络和电话安全性系统更新网络活动日志 Android版本 概览Android12Android11Android10Android9Android8.0Android7.0设备管理 Android开发者 文档 指南 创建自定义通知布局 使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

为了确保您的通知在不同的Android版本上都能呈现最佳的视觉效果,您应始终使用标准通知模板构建通知。

但是,如果系统模板不能满足您的需求,您可以提供自己的通知布局。

如果您希望在通知中提供更多内容,还可以考虑使用某个展开式通知模板,而不是构建自定义布局。

注意:使用自定义通知布局时,请特别注意确保您的自定义布局适用于不同的设备屏幕方向和分辨率。

虽然对于所有界面布局,此建议都适用,但它对通知布局而言尤为重要,因为抽屉式通知栏中的空间非常有限。

自定义通知布局的可用高度取决于通知视图。

通常情况下,收起后的视图布局的高度上限为64dp,展开后的视图布局的高度上限为256dp。

为内容区域创建自定义布局 如果您需要自定义布局,可以将NotificationCompat.DecoratedCustomViewStyle应用于您的通知。

借助此API,您可以为通常由标题和文本内容占据的内容区域提供自定义布局,同时仍对通知图标、时间戳、子文本和操作按钮使用系统装饰。

该API的工作方式与展开式通知模板类似,都是基于基本通知布局,如下所示: 使用NotificationCompat.Builder构建基本通知。

调用setStyle(),向其传递一个NotificationCompat.DecoratedCustomViewStyle实例。

将自定义布局扩充为RemoteViews的实例。

调用setCustomContentView()以设置收起后通知的布局。

您还可以选择调用setCustomBigContentView()为展开后通知设置不同的布局。

注意:如果要为媒体播放控件创建自定义通知,请采纳同样的建议,但改用NotificationCompat.DecoratedMediaCustomViewStyle类。

例如: Kotlin //Getthelayoutstouseinthecustomnotification valnotificationLayout=RemoteViews(packageName,R.layout.notification_small) valnotificationLayoutExpanded=RemoteViews(packageName,R.layout.notification_large) //Applythelayoutstothenotification valcustomNotification=NotificationCompat.Builder(context,CHANNEL_ID) .setSmallIcon(R.drawable.notification_icon) .setStyle(NotificationCompat.DecoratedCustomViewStyle()) .setCustomContentView(notificationLayout) .setCustomBigContentView(notificationLayoutExpanded) .build() Java //Getthelayoutstouseinthecustomnotification RemoteViewsnotificationLayout=newRemoteViews(getPackageName(),R.layout.notification_small); RemoteViewsnotificationLayoutExpanded=newRemoteViews(getPackageName(),R.layout.notification_large); //Applythelayoutstothenotification NotificationcustomNotification=newNotificationCompat.Builder(context,CHANNEL_ID) .setSmallIcon(R.drawable.notification_icon) .setStyle(newNotificationCompat.DecoratedCustomViewStyle()) .setCustomContentView(notificationLayout) .setCustomBigContentView(notificationLayoutExpanded) .build(); 请注意,通知的背景颜色可能会因设备和版本而异。

因此,您应始终在自定义布局中应用支持库样式,例如对文本使用TextAppearance_Compat_Notification,对标题使用TextAppearance_Compat_Notification_Title。

这些样式会适应颜色的变化,因此不会出现黑色文本采用黑色背景或白色文本采用白色背景的情况。

例如: 另外,请避免在RemoteViews对象上设置背景图片,因为可能会导致文本颜色无法读取。

创建完全自定义的通知布局 如果您不希望使用标准通知图标和标题装饰通知,请按照上述步骤使用setCustomBigContentView(),但不要调用setStyle()。

注意:建议您不要使用未经装饰的通知,因为这会使通知与它的其余部分不匹配,进而导致通知在向通知区域应用了不同样式的不同设备上显示时,出现严重的布局兼容性问题。

如需支持低于Android4.1(API级别16)的Android版本,您还应调用setContent(),向其传递同一RemoteViews对象。

如需获取更多使用通知的示例代码,请参阅Android通知示例。

上一页 arrow_back 修改通知标志 ContentandcodesamplesonthispagearesubjecttothelicensesdescribedintheContentLicense.JavaandOpenJDKaretrademarksorregisteredtrademarksofOracleand/oritsaffiliates. Lastupdated2020-06-26UTC. [{ "type":"thumb-down", "id":"missingTheInformationINeed", "label":"没有我需要的信息" },{ "type":"thumb-down", "id":"tooComplicatedTooManySteps", "label":"太复杂/步骤太多" },{ "type":"thumb-down", "id":"outOfDate", "label":"内容需要更新" },{ "type":"thumb-down", "id":"translationIssue", "label":"翻译问题" },{ "type":"thumb-down", "id":"samplesCodeIssue", "label":"示例/代码问题" },{ "type":"thumb-down", "id":"otherDown", "label":"其他" }] [{ "type":"thumb-up", "id":"easyToUnderstand", "label":"易于理解" },{ "type":"thumb-up", "id":"solvedMyProblem", "label":"解决了我的问题" },{ "type":"thumb-up", "id":"otherUp", "label":"其他" }] Twitter 在Twitter上关注@AndroidDev YouTube 在YouTube上访问“AndroidDevelopers”频道 LinkedIn 在LinkedIn上与Android开发者社区交流沟通 关于Android Android 适用于企业的Android 安全 源代码 新闻 博客 播客 发现 游戏 机器学习 隐私权政策 5G Android设备 大屏幕 WearOS AndroidTV AndroidforCars AndroidThings Chrome操作系统设备 版本 Android11 Android10 Pie Oreo Nougat Marshmallow Lollipop KitKat 文档和下载 AndroidStudio指南 开发者指南 API参考 下载Studio AndroidNDK 支持 报告平台错误 报告文档错误 GooglePlaysupport 参加调查研究 Android Chrome Firebase GoogleCloudPlatform 所有产品 隐私权政策 许可 品牌指南 通过电子邮件接收资讯和提示 订阅 English BahasaIndonesia Español–AméricaLatina Português–Brasil 中文–简体 日本語 한국어



請為這篇文章評分?