首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android通知栏微技巧,那些你所没关注过的小细节

为此Android在appcompat-v7库中提供了一个NotificationCompat类来处理新老版本的兼容问题,我们在编写通知功能时都使用NotificationCompat这个类来实现,appcompat-v7...注意看一下我们给通知设置的图标,一个小图标、一个大图标,都是使用的R.mipmap.ic_launcher这张图。...其实很多app都使用的这种做法,即直接拿应用程序的icon来作为通知的图标,好像这样看上去也挺合理的。...实际上,Android从5.0系统开始,对于通知栏图标的设计进行了修改。现在Google要求,所有应用程序的通知栏图标,应该只使用alpha图层来进行绘制,而不应该包括RGB图层。...这里我们来仔细观察一下这个下拉后的大图,其实前面大家应该也已经注意到了,只不过一直没提,在大图标的右下角,还有一个比较小的圆圈,在这个圆圈中嵌套着我们设置的小图标。

1.9K80

Android通知Notification使用全解析,看这篇就够了

1、效果 image.png image.png 2、简介 通知是 Android 在您的应用 UI 之外显示的消息,用于向用户提供提醒、来自其他人的通信或来自您的应用的其他及时信息。...当发出通知时,它首先在状态栏中显示为一个图标。 2.2、操作 用户可以在状态栏上向下滑动以打开通知抽屉,他们可以在其中查看更多详细信息并根据通知执行操作。...用户可以向下拖动抽屉中的通知以显示展开的视图,该视图显示其他内容和操作按钮(如果提供)。 通知在通知抽屉中保持可见,直到被应用程序或用户关闭。...在Android10.0及以上,系统也会默认识别并添加一些操作,比如短信通知上的「复制验证码」。...6.1.2、锁屏通知 Android 5.0开始,支持锁屏通知,即锁屏时显示在锁屏桌面。

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

    Android RecyclerView八个必会的面试技巧

    引言 在Android开发领域,RecyclerView是一项强大的工具,用于处理大量数据的高效显示。熟练掌握RecyclerView的知识对于一名Android开发者来说至关重要。...实现动画逻辑:在自定义Animator中,通过animateAdd和animateRemove等方法实现Item的淡入淡出效果。...出发点: 面试官想要了解你对RecyclerView绘制过程的深入理解。 参考简答: 数据源变更: 当数据源发生变化时,通过Adapter进行相应的通知。...参考简答:ViewHolder模式通过在Adapter中创建一个ViewHolder类,用于缓存Item中的View对象。这样在滑动过程中,可以避免频繁地调用findViewById。...结语 RecyclerView作为Android开发的重要组件,其灵活性和性能优势使得它在实际项目中得到广泛应用。

    31520

    Lottie : 让动画如此简单

    作者:paulzeng 导语:Lottie是Airbnb开源的一个面向 iOS、Android、React Native 的动画库,可实现非常复杂的动画,使用也及其简单,极大释放人力,值得一试。...平台为例如何使用Lottie 1.下载Lottie 在项目的 build.gradle 文件添加依赖 dependencies { compile 'com.airbnb.android:.../* * Lottie内部有两个缓存map(强引用缓存,弱引用缓存),在动画文件加载完成后会根据设置的缓存策略缓存动画,方便下次使用。...除了内存抖动,mattes和mask中必要的bitmap.eraseColor()和canvas.drawBitmap()也会降低动画性能。对于简单的动画,在实际使用时性能不太明显。...实现时,根据当前时间,在canvas上歌词绘制出来,最终再和声音融合在一起生成一个MV视频,这里就导致动画不能特别复杂,并且有一定的规律。

    29.4K136

    虾扯蛋:Android View动画 Animation不完全解析

    作为结论,View动画只是针对View绘制的内容进行各种变换,但并不影响View对象本身的布局属性。...Animation、Scroller的这种设计思路在Android UI框架中很有用,实现了数据、逻辑、执行过程独立封装。 1....View绘制的频率 我们最终在屏幕看到的内容,并不是像现实中照片或者纸片那样——“连续可见”的,实际上屏幕是不断刷新的(平常所说的显示器的刷新频率60Hz这样的)。...在不借助Animation所提供的API时,我们可以定义一个当前时间开始的300ms的倒计时,然后调用invalidate通知onDraw的执行,之后在onDraw中根据是否过期来继续执行invalidate...通知viewParent重绘 要知道Animation动画是针对View执行的,但是它往往可以改变View对象的绘制内容产生边界的移动,也就是动画会使得View的内容超出原有区域,所以,重绘操作是在view

    1.6K90

    Carson带你学Android:手把手带你了解实用的Android Jetpack

    前言 在2018年 Google I/O 大会上发布了一系列辅助Android开发者开发的实用工具集合:Jetpack 今天,我将主要介绍Android Jetpack的相关内容,包括其作用、特点 &...特点 高效开发:包含的多个组件协同使用 消除模板代码:可管理繁琐的 Activity,如 后台任务、导航和生命周期管理 高质量:围绕现代化设计实践构建、具有向后兼容性,可有效减少崩溃 & 内存泄漏 3....包含的组件库: 4.2 架构 - Architecture 帮助开发者设计稳健、可测试且易维护的应用 Data Binding(数据绑定):属于支持库可使用声明式将布局中的界面组件绑定到应用中的数据源...4.4 界面 - UI 辅助绘制界面的View类 & 各种辅助组件,包括: 动画 - Animation & Transitions:提供各类内置动画,也可以自定义动画效果。...表情 - Emoji:使用户在未更新系统版本的情况下也可以使用表情符号。 布局 - Layout:xml书写的界面布局或者使用Compose完成的界面。

    1K10

    Android:手把手带你了解实用的Android Jetpack

    ---- 前言 在2018年 Google I/O 大会上发布了一系列辅助Android开发者开发的实用工具集合:Jetpack 今天,我将主要介绍Android Jetpack的相关内容,包括其作用、...特点 高效开发:包含的多个组件协同使用 消除模板代码:可管理繁琐的 Activity,如 后台任务、导航和生命周期管理 高质量:围绕现代化设计实践构建、具有向后兼容性,可有效减少崩溃 & 内存泄漏 --...包含的组件库: 4.2 架构 - Architecture 帮助开发者设计稳健、可测试且易维护的应用 Data Binding(数据绑定):属于支持库可使用声明式将布局中的界面组件绑定到应用中的数据源...4.4 界面 - UI 辅助绘制界面的View类 & 各种辅助组件,包括: 动画 - Animation & Transitions:提供各类内置动画,也可以自定义动画效果。...表情 - Emoji:使用户在未更新系统版本的情况下也可以使用表情符号。 布局 - Layout:xml书写的界面布局或者使用Compose完成的界面。

    1.2K00

    网易考拉 Android 通知栏适配全方案

    Android 7.X 修改记录 通知栏样式全面改版,小图标在左上角,大图标在右边,小图标、App应用名、副标题、数量和时间在第一行,第二行是主标题,第三行是内容。...,如果不在通知栏浏览,会在顶部状态栏出现一个向上翻滚动画的通知消息,这条通知消息左边是一个小图标。...解决方案 按照标准来,小图标大小为24dp,大图标为桌面icon图标大小96dp。具体可参考这里^14 部分机型不支持Style 具体机型见下图以及后面统计的表格。...因此这种方案只能作为参考,不能用于实际环境中。最后详细介绍一下第三种方式。 Android默认字体颜色获取 这种方案有一点投机取巧,是网上寻找代替方案时在简书上找到的,作者是hackware。...实际上,Android从5.0系统开始,对于通知栏图标的设计进行了修改。现在Google要求,所有应用程序的通知栏图标,应该只使用alpha图层来进行绘制,而不应该包括RGB图层。

    5.2K11

    Android中的通知和自定义通知布局

    Android中的通知(Notification)是Android中的重要一部分,应用程序通过通知来提醒用户或者向用户传达信息,下面让我们来看一下怎么在我们的程序中使用通知和自定义通知的布局。...由于各个版本的Android在通知方面都有一些改动,所以很难找到一个标准的创建及使用通知的方法,但是程序设计出来总归是给用户使用的,那么我们可以采用兼容性最好的那个API来创建通知:我们可以使用NotificationCompat...)) // 创建通知的大图标 /* * 首先,无论你是使用自定义视图还是系统提供的视图,上面4的属性一定要设置,不然这个通知显示不出来 */...)) // 创建通知的大图标 /* * 是使用自定义视图还是系统提供的视图,上面4的属性一定要设置,不然这个通知显示不出来 */ .setDefaults...言归正传,这个广播干什么用的呢:在自定义通知布局中我们要对两个按钮进行事件处理,在自定义通知布局中,我们必须使用RemoteViews的对象来对布局文件中的两个按钮进行事件处理,而 RemoteViews

    3.6K20

    Android 12 适配攻略

    行为变更 应用启动画面 从Android 12开始,所有的App在每次启动时(特指冷启动与温启动),系统都会为我们加上一个默认的启动画面。...启动画面主要由4个元素组成 应用图标:可以是静态或动画形式。默认情况下,使用Launcher图标。 图标背景:可选,在图标与窗口背景之间需要更高的对比度时很有用。... 启动画面在初始化数据加载完关闭场景 val content: View = findViewById(android.R.id.content) //绘制监听 content.viewTreeObserver.addOnPreDrawListener...为用户提供可看到且熟悉的通知展开功能,使所有通知保持外观一致且易于浏览。 所有通知都是可展开的。...通知的丰富图片支持 以Android 12为目标平台的App,可以通过在 MessagingStyle()和 BigPictureStyle()通知中提供动画图片来丰富应用的通知体验。

    3.2K20

    Android之startForeground使用

    startForegroundService 在系统创建服务后,应用有五秒的时间来调用该服务的 startForeground() 方法以显示新服务的用户可见通知。...针对Android 9(API级别28)或更高级别并使用前台服务的应用程序必须请求 FOREGROUND_SERVICE permission 。...所以现在我们需要在清单文件中添加 Foreground服务权限 允许常规应用程序使用 Service.startForeground android:name="android.permission.FOREGROUND_SERVICE...(大图标)     .setContentTitle("下拉列表中的Title") // 设置下拉列表里的标题     .setSmallIcon(R.mipmap.ic_launcher) // 设置状态栏内的小图标...Notification通知消息的构建后,在Service的onStartCommand中可以使用startForeground方法来让Android服务运行在前台: // 参数一:唯一的通知标识;参数二

    3.2K10

    开发者选项详解

    借助启用演示模式,可以使用 adb 演示模式命令更改状态栏的外观。或者,您也可以使用显示演示模式隐藏通知和显示预设状态栏。...其他绘制选项包括: 强制使用从右到左的布局方向:强制屏幕布局方向为从右到左 (RTL) 或从左到右(默认设置)。 窗口动画缩放:设置窗口动画播放速度,以便您查看不同速度下的性能。缩放越小,速度越快。...强制进行 GPU 渲染:如果应用编写时在默认情况下不进行 GPU 渲染,强制应用使用 GPU 绘制 2D 图形。 显示 GPU 视图更新:显示使用 GPU 绘制的任何屏幕上的元素。...调试 GPU 过度绘制:显示设备上的颜色编码,以便您可视化相同像素在同一帧中绘制的次数。可视化会显示您的应用可能在哪里进行了不必要的渲染。...下图是选择条形图后的显示情况: 每列数据显示了渲染每一帧需要的时间,每一条线意味着一帧被绘制出来,而每条线中的不同颜色又代表着在绘制过程中的不同阶段: Draw (蓝色) 代表着

    8.3K10

    View 动画 Animation 运行原理解析

    基本用法 我们要使用一个 View 动画时,一般都是先 new 一个动画,然后配置各种参数,最后调用动画要作用到的那个 View 的 startAnimation(), 将动画实例作为参数传进去,接下去就可以看到动画运行的效果了...动画真正执行的地方 那么,到这里,我们可以猜测,动画其实真正执行的地方应该是在 ViewRootImpl 发起的遍历 View 树的这个过程中。...getAnimation.png 所以当时传进来的 Animation ,现在拿出来用了,那么动画真正执行的地方应该也就是在 applyLegacyAnimation() 方法里了(该方法在 android...因为我们清楚, applyTransformation() 最终是在绘制流程中的 draw() 过程中执行到的,那么显然在每一帧的屏幕刷新信号来的时候,遍历 View 树是为了重新计算屏幕数据,也就是所谓的...有一点需要注意,动画是在每一帧的绘制流程里被执行,所以动画并不是单独执行的,也就是说,如果这一帧里有一些 View 需要重绘,那么这些工作同样是在这一帧里的这次遍历 View 树的过程中完成的。

    1.5K50

    Android 各版本特性

    系统还将实现与图标的自动交互,并在启动器、快捷方式、设置、共享对话框以及概览屏幕中使用它们。 在以前的 Android 版本中,图标大小定义为 48 x 48 dp。...Pinning shortcuts 在桌面上可呈现不同的图标显示。 首先使用 isRequestPinShortcutSupported() 方法校验手机是否支持启动这种快捷方式。...Android P还增加了许多对通知的支持,在P当中,又新增了下述功能: 支持图像:Android P现在在手机上的消息通知中显示图像。您可以在消息上使用setData()来显示图像。...Android P通过以下更改简化了通知渠道设置: 阻止渠道:用户现在可以在应用的通知设置中阻止整组渠道。您可以使用isBlocked()方法来确定某个组何时被阻止,不对被阻止的组发送消息。...Android P引入了一个新的AnimatedImageDrawable类来绘制和显示GIF和WebP动画图像。

    1.4K10

    Android 12 快速适配要点

    image 它大概由如下 4 个部分组成,这里需要注意: 1 最好是矢量的可绘制对象,当然它可以是静态或动画形式。 2 是可选的,也就是图标的背景。 与自适应图标一样,前景的三分之一被遮盖 (3)。...三、其他 1、通知中心又又又变了 Android 12 更改了可以完全自定义通知外观和行为,以前自定义通知能够使用整个通知区域并提供自己的布局和样式,现在它行为变了。...此模板可确保自定义通知在所有状态下都与其他通知长得一模一样,例如在收起状态下的通知图标和展开功能,以及在展开状态下的通知图标、应用名称和收起功能,与 Notification.DecoratedCustomViewStyle...如果你的 App 是依靠 Android App Links 验证在应用中打开网页链接,那么在为 Android App Links 验证添加 intent 过滤器时,请确保使用正确的格式,尤其需要注意的是确保这些...4、应用休眠 Android 12 在 Android 11(API 级别 30)中引入的自动重置权限行为 的基础上进行了扩展。

    1.1K30

    Android中的各种Drawable类详解

    通过这个类可以减少我们的绘制工作和使用成本,同时系统也提供了众多的Drawable的派生类比如单色、图形、位图、裁剪、动画等等来完成一些常见的绘制需求。Drawable是一个抽象的可绘制类。...Drawable在绘制调用draw函数之前必须要先指定绘制的区域,这个区域也是Canvas中要绘制的区域。...在下面的StateListDrawable类中可以设置某些状态下的可绘制对象,而你通过设置状态时就会显示在特定状态下的可绘制对象: //设置状态列表 public boolean setState(final...(Shader.TileMode mode) 为了绘制更加优质以及性能的优化,在绘制位图会使用到画笔Paint类进行一些属性设置。...状态stateSet可以使用:**android.R.attr.state_XXX ** 中列出的值。

    1.6K20

    Android Notification使用

    正文   通知的使用的内容还是比较多的,此篇文章将会尽可能详细的介绍Notification的内容。 一、Android中通知的变化 1....还支持以按钮的形式向通知添加其他操作。 允许用户在设置中按应用关闭通知。 2. Android 4.4,API 19 和 20 向 API 中添加了通知监听器服务。...使用与 Android 5.0(API 级别 21)中推出的 Android Wear(现已更名为 Wear OS)通知堆栈相同的 API。...用户可以使用内嵌回复功能直接在通知内进行回复(他们输入的文本将转发到通知的父应用)。 5. Android 8.0,API 26 必须将各个通知放入特定渠道中。...例如,在搭载 Android 8.0 及更高版本的设备中,使用 NotificationChannel.setImportance(),而非 NotificationCompat.Builder.setPriority

    2.8K20

    Android 开发艺术探索笔记一

    Draw过程 绘制背景 绘制自己 绘制childern 绘制装饰 自定义view须知 让view支持wrap_content,必须对wrap_content做特殊处理,否则使用wrap_content就相当于使用...中使用handler,使用post替代 view中有线程与动画需要及时停止,在onDetachFromWindow中,不及时处理,可能会造成内存泄漏 view带有嵌套,需要处理好滑动冲突。...在Android中主要用来:通知栏与桌面小部件 它无法直接访问里面的view,必须通过所提供的方法来更新view,比如textview的setTextView方法。两个参数要设置的ID与提供的文本。...android:shareInterpolator:集合中的动画是否和集合共享一个插值器 android:fillAfter:表示动画结束后,是否停留在结束为止,true表示停留 旋转动画放在位移动画之前...view的特殊使用场景: LayoutAnimation:作用于viewgroup,为viewgroup指定一个动画 属性: android:delay 设置动画时间延迟 android:animationOrder

    94410

    Android面试常问基础知识点(附详细解答)

    一个应用Context的数量=Activity数量+Service数量+1(Application数量) 26、Android属性动画特性 属性动画(Property Animation)是在 Android...View做在做动画的时候,它并没有真正的移动它的位置,而是根据动画时间的插值,计算出一个Matrix,然后不停的invalidate,在onDraw中的Canvas上使用这个计算出来的Matrix去draw...我们平时见到的android数据库操作一般都是在程序开始时创建一个空的数据库,然后再进行相关操作。如果我们需要使用一个已有数据的数据库怎么办呢?...绘制的时候,在surfaceCreated()方法中开启子线程进行绘制,而子线程使用一个while(mIsDrawing)的循环来不停的进行绘制,在绘制的逻辑中通过lockCanvas()方法获取Canvas...33、Android中数据存储方式 1、使用SharedPreferences存储数据 2、文件存储数据 3、SQLite数据库存储数据 4、使用ContentProvider存储数据 5、网络存储数据

    2.7K31
    领券