Android-桌面小组件RemoteViews播放动画
一、前言
前段时间什么比较火?当然是木鱼了,木鱼一敲,烦恼全消~在这个节奏越来越快的社会上,算是一个不错的解压利器!
我们也紧跟时事,推出了 我要敲木鱼(各大市场均可以下载哦~)
咳咳,扯远了,说回正题
我们在后台收到大量反馈,说是希望添加桌面组件敲木鱼功能。好嘛,用户的话就是圣旨,那必须要安排上,正好我也练练手。
老规矩,先来看下我实现的效果

这个功能看着很简单对吧,却也花了我一天半的时间。主要用来实现敲击动画了!!
二、代码实现
1、新建小组件

2、修改界面样式
主要会生成3个关键文件(文件名根据你设置的来)
①、APPWidget 类,继承于 AppWidgetProvider,本质是一个 BroadCastReceiver
②、layout/widget.xml ,小组件布局文件
③、xml/widget_info.xml ,小组件信息说明文件
同时会在 AndroidManifest中注册好
类似如下代码:
3、添加敲木鱼逻辑代码
通过 APPWidget 的模板代码我们知道,内部通过 RemoteViews 来进行更新View,而我们都知道 RemoteViews 是无法通过 findViewById 来转成对应的 view,更无法对其添加 Animator。那么我们该怎么办来给桌面木鱼组件添加一个 缩放动画呢?
给你三秒时间考虑下,这里我可花了一天时间来研究....
通过 layoutAnimation !!!
layoutAnimation 是在 ViewGroup 创建之后,显示时作用的,作用时间是:ViewGroup 的首次创建显示,之后再有改变就不行了。
虽然 RemoteViews 不能执行 findViewById,但它提供了两个关键方法: remoteViews.removeAllViews 和 remoteViews.addView 。如果我们在点击时,向组件布局中添加一个带有 layoutAnimation 的布局,不是就可以间接播放动画了么?
关键代码:
private fun doAnimation(context: Context?, remoteViews: RemoteViews?) {remoteViews?.removeAllViews(R.id.muyu_rl)val remoteViews2 = RemoteViews(context?.packageName, R.layout.anim_layout)remoteViews2.setImageViewResource(R.id.widget_muyu_iv, R.mipmap.ic_muyu)remoteViews?.addView(R.id.muyu_rl, remoteViews2)}
小组件布局:
添加替换的动画布局(anim_layout.xml),注意两边的木鱼ImgView 的 ID保持一致,因为要统一设置点击事件!!
动画文件:(muyu_anim.xml)
动画文件:(scale_anim.xml)
关键动画代码就是以上这些,如果有问题欢迎私信。希望大家在新的一年里,木鱼一敲,烦恼全消~
欢迎体验下我做的木鱼,记得搜 我要敲木鱼 哦~~
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
