Android小技巧:在通知RemoteViews中显示动画

这篇具有很好参考价值的文章主要介绍了Android小技巧:在通知RemoteViews中显示动画。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在Android Notification显示中,我们通常显示一些静态元素,即便使用自定义布局,也不例外,因为RemoteViews有着诸多限制,例如使用的控件只有那些个基本控件,更新界面也必须通过RemoteViews提供的各种set方法。但有时候,我们就是想要去显示动画,因为动画可以提供更好的视觉效果。那么本文提供两种较简单的方法。

(代码示例见:https://gitee.com/spectre1225/notification-anim-demo)

方法一:使用ViewFlipper来实现逐帧动画的效果

第一种方法是利用RemoteViews支持的ViewFlipper控件配合多个ImageView来循环显示,达到类似逐帧动画的效果。自定义通知布局中的对应内容是:

<ViewFlipper
    android:layout_width="40dp"
    android:layout_height="40dp"
    android:layout_gravity="end|center_vertical"
    android:autoStart="true"
    android:flipInterval="90">

    <ImageView
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:src="@drawable/stat_sys_battery_charge_anim0" />

    <ImageView
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:src="@drawable/stat_sys_battery_charge_anim15" />

    <ImageView
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:src="@drawable/stat_sys_battery_charge_anim28" />

    <ImageView
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:src="@drawable/stat_sys_battery_charge_anim43" />

    <ImageView
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:src="@drawable/stat_sys_battery_charge_anim57" />

    <ImageView
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:src="@drawable/stat_sys_battery_charge_anim71" />

    <ImageView
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:src="@drawable/stat_sys_battery_charge_anim85" />

    <ImageView
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:src="@drawable/stat_sys_battery_charge_anim100" />
</ViewFlipper>

Java代码中不需要额外设置。注意这里的ViewFlipper要设置android:autoStart="true",这样动画才会自动播放起来。

  • 优点:各版本系统兼容性好,都可以使用。
  • 缺点:ImageView过多,代码也多,修改替换麻烦。

方法二:使用AnimatedImageDrawable来显示GIF动画

Android 9.0 中引入了一个新的Drawable来显示GIF图片:AnimatedImageDrawable,对应的xml标签是<animated-image>,这样一来,我们可以直接将一个GIF图片ic_test_gif.gif放到drawable目录中,然后新建一个ic_anim_gif.xml来引用:

<?xml version="1.0" encoding="utf-8"?>
<animated-image xmlns:android="http://schemas.android.com/apk/res/android"
    android:autoStart="true"
    android:autoMirrored="true"
    android:src="@drawable/ic_test_gif" />

在自定义通知布局中直接编写:

<ImageView
    android:id="@+id/iv_logo"
    android:layout_width="40dp"
    android:layout_height="40dp"
    android:src="@drawable/ic_anim_gif" />

这里ImageViewsrc不直接引用gif图片是因为需要用到animated-imageautoStart属性,毕竟RemoteViews没法直接取出ImageView的drawable。

考虑到系统版本兼容,可以选择在代码中将动画资源设置给ImageView

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
    remoteViews.setImageViewResource(R.id.iv_logo, R.drawable.ic_anim_gif);
}

这种方法优缺点如下:文章来源地址https://www.toymoban.com/news/detail-534729.html

  • 优点:资源少,一个gif,只要一个animated-image的xml,且替换简单。
  • 缺点:只有Android 9.0 以上的系统可以用。

到了这里,关于Android小技巧:在通知RemoteViews中显示动画的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android 10.0 系统systemui状态栏下拉左滑显示通知栏右滑显示控制中心模块的流程分析

      在android10.0的系统rom定制化开发中,在系统原生systemui进行自定义下拉状态栏布局的定制的时候,需要在systemui下拉状态栏下滑的时候,根据下滑坐标来 判断当前是滑出通知栏还是滑出控制中心模块,所以就需要根据屏幕宽度,来区分x坐标值为多少是左滑出通知栏或者右滑

    2023年04月09日
    浏览(47)
  • Android T 远程动画显示流程其一——整体流程以及堆栈介绍

    本地动画和远程动画区别是什么? 本地动画:自给自足。对自身SurfaceControl矢量动画进行控制。 远程动画:拿来吧你!一个app A对另一个app B通过binder跨进程通信,控制app B的SurfaceControl矢量动画。 无论是本地动画还是远程动画,都仅仅只是对SurfaceControl动画图层控制,而无法控

    2024年04月11日
    浏览(73)
  • Android 10.0 SystemUI定制之通过系统属性控制锁屏页面通知栏显示与隐藏功能实现

    在10.0的系统产品开发中,在一些SystemUI的系统定制化开发中,在对锁屏页面的通知栏在某些情况下不需要显示通知栏,所以就需要 在systemui的通知栏布局页面中,通过属性来控制是否在锁屏页面的时候显示通知,具体就分析下systemui然后开发相关功能 在systemui系统中最主要的

    2024年02月04日
    浏览(35)
  • Android,ios,安卓app推送消息通知,java后台向手机推送app的通知教程

    个推是商用级的移动应用消息推送云服务供应商,客户端 SDK 支持 Android 和 iOS 两大平台,开发者集成 SDK 后,可以通过个推强大的 web 端及丰富的 API 开放接口,发送推送消息、统计分析推送效果。可有效提高 App 活跃度,增加用户留存率。 如果您还没有个推 账号,可在 个推

    2024年02月04日
    浏览(32)
  • Android Java判断密码强度 强度显示

    定风波 苏轼(宋) 三月七日,沙湖道中遇雨。雨具先去,同行皆狼狈,余独不觉。已而遂晴,故作此词。 莫听穿林打叶声,何妨吟啸且徐行。竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生。 料峭春风吹酒醒,微冷,山头斜照却相迎。回首向来萧瑟处,归去,也无风雨也无晴。

    2024年02月10日
    浏览(61)
  • Android - app内部通知通知栏通知Notification (Kotlin)

    一、简述 先把通知权限打开 为什么写,因为在学kotlin刚好顺手写一下,整块代码在最后 图示效果:(图片来源于网络) 1、首先需要一个NotificationManager对通知进行管理,可以通过调用Context的 getSystemService()方法获取。getSystemService()方法接收一个字符串参数用于确定 获取系统的

    2024年02月08日
    浏览(31)
  • Android 10.0 app授予通知权限 默认开启通知

    在app开发中 会需要发送通知,但在8.0以后增加了通知权限,必须先开启通知权限才能发送通知 像这样申请开启通知权限 打开通知开关 app中开启通知权限如下 1.判断是否有通知权限

    2023年04月08日
    浏览(34)
  • Android 通知

    通知是指 Android 在应用界面之外显示的消息,旨在向用户提供提醒、来自他人的通信或应用中的其他实时信息。用户可以点按通知以打开您的应用,或直接从通知中执行操作。 通知在状态栏中显示为图标,在抽屉式通知栏中显示更详细的条目,并在应用图标上显示一个标志。

    2024年01月20日
    浏览(24)
  • android 媒体通知栏适配

    做音乐播放器,必然要用到通知栏,由于通知栏很多版本都有改动,一些厂商也做了调整,适配起来比较麻烦,能用系统自带的就用。 这里分享一下系统媒体通知栏的适配。 需要考虑的问题如下: 1,通知栏适配,音乐播放需要常驻,所以要维护一个通知栏。 2,音控处理,

    2024年02月07日
    浏览(33)
  • android 12.0 屏蔽系统所有通知

    在12.0的产品开发中最近公司项目要求 屏蔽系统所有通知 不需要在下拉状态栏显示通知功能实现 要控制系统通知的开关功能,需要屏蔽系统通知,而系统通知都是由NoticationManagerServices.java来管理的, 这个NMS服务管理通知就需要在NotificationManagerService.java 来实现需求 在系统中,

    2024年02月06日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包