作者 / 开发者关系工程师 Marcel Pintó Biescas,@marxallski Android 12 改进 了一项被许多 Android 用户视为关键的功能 - App Widgets,改进后的...Glance 利用 Jetpack Compose 运行时 (Runtime),可以将 可组合项 转化为实际的 RemoteViews,并在 App Widgets 中显示。...Alpha 版介绍 此初始版本引入了主要的 API,不仅能够实现与现有 RemoteViews 之间的互操作性,还能帮助您构建 App Widgets。...通过 AndroidRemoteViews 可组合项实现与您现有 RemoteViews 之间的互操作。 我们还将推出更多功能,例如默认主题,更完善的 Android Studio 支持等等。...可以查看 在 Android 12 中构建新式 Android App Widgets 视频了解更多详细信息。 Glance 使用入门 您可以在 GitHub 上查看 示例,以便快速入门。
注意上面我在介绍补间动画的时候都有使用“对View进行操作”这样的描述,没错,补间动画是只能够作用在View上的。...说白了,之前的补间动画机制就是使用硬编码的方式来完成的,功能限定死就是这些,基本上没有任何扩展性可言。...比如说,现在屏幕的左上角有一个按钮,然后我们通过补间动画将它移动到了屏幕的右下角,现在你可以去尝试点击一下这个按钮,点击事件是绝对不会触发的,因为实际上这个按钮还是停留在屏幕的左上角,只不过补间动画将这个按钮绘制到了屏幕的右下角而已...新引入的属性动画机制已经不再是针对于View来设计的了,也不限定于只能实现移动、缩放、旋转和淡入淡出这几种动画操作,同时也不再只是一种视觉上的动画效果了。...它实际上是一种不断地对值进行操作的机制,并将值赋值到指定对象的指定属性上,可以是任意对象的任意属性。
在桌面上添加桌面控件,可以按以下步骤: 长按手机桌面,然后单击屏幕右下角的“WIDGETS”按钮,系统进入如下图所示的Widget列表界面。 ?...一般,开发桌面控件只需定义一个APPWidgetProvider的子类,并重写它的onUpdate()方法即可,重写该方法的步骤: 创建一个RemoteViews对象,创建该对象时可以指定加载指定的界面布局文件...如果需要改变上一步所加载的界面布局文件的内容,则可通过RemoteViews对象进行修改。 创建一个ComponentName对象。 调用APPWidgetManager更新桌面控件。...归纳起来,其核心代码就是使用APPWidgetManager通过RemoteViews来更新APPWidgetProvider的子类实例(需要将它包装成ComponentName对象)。...android:layout_width="30dp" android:layout_height="30dp" /> 最后,运行程序,在WIDGETS
也正是因为这样的问题,如果不是只在Android 12+的设备上使用,那么通常都是固定好Widget的大小,避免使用动态布局,这也是没办法的权衡之举。...remoteViews.setTextViewText(R.id.title, widgetData.xxx) 再比如点击后刷新Widget,实际上就是创建一个PendingIntent。...以及AppWidgetService进行通信,所以,RemoteViews实际上是运行在SystemServer中的,我们在修改RemoteViews时,就需要进行跨进程通信了,而RemoteViews...有必要这么卷吗,Widget里面还要加动画。...由于RemoteViews里面不能实现正常的View动画,所以,Widget里面的动画基本都是通过类似「帧动画」的方式来实现的,即将动画抽成一帧一帧的图,然后通过Animator来进行切换,从而实现动画效果
(new Fade()); 共享元素过渡动画:一个共享元素过渡动画决定两个Activity之间的过渡怎么共享它们的视图,包括了 changeBounds:改变目标视图的布局边界; changeClipBounds...方法可以创建一个RevealAnimator动画,代码如下,其中centerX/centerY表示动画开始的位置,startRadius和endRadius分别表示动画的起始半径和结束半径。...在Android 5.X中,可以使用动画来作为视图改变的效果,有两种方式来实现该动画:StateListAnimator和animated-selector。...来创建自定义的Notification视图 RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.notification...来创建自定义的Notification视图 RemoteViews expandedView = new RemoteViews(getPackageName(), R.layout.notification_expanded
X坐标上的伸缩尺寸 float toX :动画结束时 X坐标上的伸缩尺寸 float fromY :动画起始时Y坐标上的伸缩尺寸 float toY :动画结束时Y坐标上的伸缩尺寸 int pivotXType...: 动画在X轴相对于物件位置类型 float pivotXValue : 动画相对于物件的X坐标的开始位置 int pivotYType :动画在Y轴相对于物件位置类型 float pivotYValue...: 动画相对于物件的Y坐标的开始位置 知道了这几个参数的作用就简单了。...(ScaleAnimation),将动画配置给image这样图片的动画就设置好了。...当然我们肯定要设置图片动画的启动事件的,不然图片怎么变化呢。 对了,我们还可以设置动画的一些属性,这里我就讲一下动画的缩放时间。
ImageView上的图片在隐藏、旋转、缩放、平移通过动画的过程显示。...布局代码,设置图片要通过src设置 <Button android:text="透明动画" android:id="@+id/button2" android:layout_width...透明动画 //AlphaAnimation 透明动画 //第一个参数是开始的透明度,第二个参数是结束的透明度,1.0完全透明,0.0完全透明 AlphaAnimation alphaAnimation...旋转动画 //RotateAnimation 旋转动画 //第一个参数是开始的的角度,第二个参数是结束的角度 //第三个参数是旋转中心的X坐标类型,Animation.RELATIVE_TO_SELF...平移动画 //TranslateAnimation 平移动画 //前四个参数是表示X轴父级容器的-0.5平移到父级容器的0.5 //后四个参数是表示Y轴父级容器的-0.5平移到父级容器的0.5 TranslateAnimation
1.帧动画 Frame 一帧一帧的 2.补间动画 Tween 慢慢过渡,设置初值和末值,并用插值器来控制过渡 包括(alpha淡入淡出,scale缩放,translate平移和rotate旋转)...3.属性动画 ObjectAnimation ValueAnimation 控制属性来实现动画。...属性动画是3.0以后加入的动画。三种动画各有各的好处和缺点 特点: 1.帧动画 由于是一帧一帧的,所以需要图片多。...会增大apk的大小,但是这种动画可以实现一些比较难的效果 比如说等待的环形进度。。多用这个做。 2.补间动画 可以设置差值器和初末值来控制。相对也比较简单,页面切换的动画多用这个来做。...缺点,视觉上 上变化,并不是真正的位置上的变化。 3.属性动画 最为强大的动画,弥补了补间动画的缺点,实现位置+视觉的变化。并且可以自定义插值器,实现各种想要的效果。
其中帧动画使用AnimationDrawable来实现,在本质上是将多个图像以相同或不同的时间间隔进行切换来实现动画。...帧动画实际上是由若干个以一定的时间间隔进行切换的图像组成的。比如电影的原理就类似于帧动画,一般电影是每秒25帧。...在屏幕上提供一个ImageView和四个Button,当用户单击这些Button按钮时,依次实现“开始动画”、“停止动画”、“运行一次动画”、“代码中添加动画”的功能。...示例2.3: 实现一个可以跳动的心.跳动实际上就是不断地将心型的图像放大和缩小,因此本示例需要两个动画文件,一个表示放大后的状态,一个表示缩小后的状态。...pivotX和pivotY的取值有两种:float或百分数,分别是相对于物体左(上)边距的像素表示或相对于物体左(上)边距的百分数表示。
《Android开发艺术探索》读书笔记 (5) 第5章 理解RemoteViews 第5章 理解RemoteViews 5.1 RemoteViews的应用 (1)RemoteViews表示的是一个view...,它本质上是一个广播(BroadcastReceiver)。...> android="http://schemas.android.com/apk/res/android" android:initialLayout...,做自己的事情,比如小工具被点击了要干啥,这里是做一个动画效果 if (intent.getAction().equals(CLICK_ACTION)) { Toast.makeText...所以,布局文件实际上是两个Service加载的,运行在SystemServer进程中。
在Windows Mobile 6.5的TDK出来以后,对于应用开发人员来说,又多了一个有趣的应用,对了,那就是Widgets!...在参考了Windows Mobile Team Blog的文章《Getting started with widgets on Windows Mobile 6.5》之后,这里,我们就利用文本编辑器和文件压缩工具...,来制作一个最简单的Windows Mobile 6.5 Widgets应用。 ...首先,参考W3C ORG上对于Widgets标准的草案(草案最近更新日期为2009年5月28日),一个Widgets的zip压缩包可以包含多个文件,作为一个最简单的例子,这里就列出htm(Widgets...图7:widgets运行界面 同时,我们也可以在设备的Program Files\Widgets\User\2目录下,找到我们编辑的这三个文件,如下图8所示: ?
特性 补间动画 属性动画 view 动画 支持 支持 非view动画 不支持 支持 可扩展性和灵活性 差 好 view属性是否变化 无变化 发生变化 复杂动画能力 局限 良好 场景应用范围 一般 满足大部分应用场景
LayoutAnimation 指定 ViewGroup 的子元素出场动画,作用在每个子元素上的动画是补间动画。...android:animationOrder="normal" android:animation="@anim/item_anim" /> 其中 item_anim 是一个普通的补间动画...比如 item_anim 这个动画的 duration 是 300ms,那么对于 0.2 的 delay 来说,每个子元素在前一个出现的基础上延时 0.2*300=60ms,即按照 animationOrder...控制的顺序,第一个子元素得 60 ms 后出现,第二个子元素 120ms 后出现,第三个子元素 180ms 后出现...... android:animation 子元素所要执行的动画 然后对有子 View...:animateLayoutChanges="true",布局变化时会自动加上默认的动画。
——《微卡智享》 本文长度为2739字,预计阅读7分钟 Android组合动画 上篇文章我们介绍了《学习|Android属性动画的基础介绍》,里面只做了一个简单的动画例子,其实真正使用的时候一般我们都是通过动画的多样组合进行播放的...,本章就专门介绍一下Android中的动画组合之一AnimationSet的介绍。...动画组合的四种方式 AnimationSet和Animatorset 一般来说,Android实现动画组合有四种方式,分别是: AnimationSet AnimatorSet PropertyValuesHolder...支持背景色的修改 Animator 的子类 AnimationSet的使用 微卡智享 一般来我说我们在App中常用的都是一些视图动画:包括透明动画(AlphaAnimation)、旋转动画(RotateAnimation...Animaion的动画里面设置才行。
本文长度为2943字,预计阅读8分钟 AnimatorSet组合动画 上一篇中《学习|Android属性动画的组合动画之一--AnimationSet》我们已介绍了AnimationSet的组合动画,也简单说了一下...上一篇中我们就说到AnimationSet中所有的动画效果是一起播放的,而AnimatorSet中是可以实现顺序播放的。...,第一个类型后面...在Android中代表的可变长参数,比较灵活,所以第一个参数比较常后,第二个类型就是自己定义一个List的集合传入进去执行。...上图是通过playSequentially实现的效果,我们可以看到,两个动画是按顺序播放的,即播放完了X轴横向的动画再播放到Y轴纵向的动画。...上图是通过playTogether实现的效果,可以看出是同时播放的,和我们上一篇的AnimationSet是一样的效果。
应用每调用一次set方法,remoteViews就会添加一个对应的action,它的apply进行view的更新操作。...android:src 图片资源id android:antialias 抗锯齿 android:dither 抖动效果 开启这个选项,让高质量图片在低质量的屏幕上还能保持较好的显示效果 android...,默认的返回为内部宽高或 0; 动画深入浅析 android:interpolator:插值器,会影响动画速度。...android:shareInterpolator:集合中的动画是否和集合共享一个插值器 android:fillAfter:表示动画结束后,是否停留在结束为止,true表示停留 旋转动画放在位移动画之前...view的特殊使用场景: LayoutAnimation:作用于viewgroup,为viewgroup指定一个动画 属性: android:delay 设置动画时间延迟 android:animationOrder
Android 设置动画变化的速率 我们知道 Android 的动画有视图动画,属性动画,帧动画等等,对于视图动画我们是可以设置动画的变化速率的,有加速,减速,先加速再减速…等等各种变化速率的效果。...对于视图动画,创建动画有两种方式,一种是在 xml 文件中创建,另一种是在代码中创建,因此对应的设置动画变化速率也有两种方式。...一、xml 中设置动画的变化速率 1.设置动画为加速动画(动画播放中越来越快): android:interpolator="@android:anim/accelerate_interpolator"...2.设置动画为减速动画(动画播放中越来越慢) : android:interpolator="@android:anim/decelerate_interpolator" 3.设置动画为先加速在减速(...(相当于我们高空掉下一颗皮球,到地面是会跳动几下): android:interpolator="@android:anim/bounce_interpolator" 7.循环,动画循环一定次数,值的改变为一正弦函数
大家好,又见面了,我是你们的朋友全栈君。 上完课后,有些同学因为课上老师讲的太快,还是不会做路径动画。今天为大家介绍Flash制作沿着路径的动画介绍,操作很简单的,一起来学习吧!...将刚刚画的元件1的圆拖进图层中,这里为了理解方便,我修改了图层名字 5、我这里做了35帧,在铅笔图层中的第35帧,按下F5,即可增加帧到35帧, 在圆的第一帧处,将圆的中心放置铅笔的路径上,在第35帧...,按下F6,插入一个关键帧,同样,将圆的中心放置铅笔的路径上,如图所示。...(将圆的中心放到路径上,是为了圆能够和路径重合,这个时候工具栏左边的吸铁石工具一定要处于按下的状态 ) 6、选择铅笔路线的图层—右击—-选择引导层,然后这个图层的前面,会变成一个小蘑菇一个的东西,如图所示...选择元件1圆图层中的任意一帧—右击—创建传统补间,如图所示 7、将元件1圆图层向上拖一下,附属于铅笔路线图层,便可以实现路径动画了(轻轻向铅笔路线图层拖一下就行) 教程结束,以上就是Flash制作沿着路径的动画方法
---- 属性动画的教程网上已经特别多了,本篇也不打算再去各种详解知识点,主要就是记录题主学习属性动画时的碰到的一些困惑,以及后来自己的理解。如果有人也碰到相似的问题,正好可以一起讨论下。...这种折叠/展开,隐藏/显示的动画在很多地方都会有用到,如果再加上使用5.0后引进的Z属性,实现各种酷炫的立体动画就更吸引人了。所以,还是先掌握好这基础的属性动画吧。...我们来将代码稍微做些改动,先复制上面代码,然后把300.0f改成200.0f,然后把复制的这个动画绑定到其他按钮(如下图的FAB)上,这样当我们先点击FAB,再点击按钮本身,也就是先启动平移200f动画...,再启动平移300f的动画。...它的作用就是指定要实现的是哪个动画属性,说白点,属性动画就是通过不断修改属性值来达到效果的,这点在上面分析的第二点给出的代码上也可以很容易看出来。
OK,下面主要看实现步骤,你随便新建一个Activity就可以了,然后把需要的的一些样式准备好, ? ?...onClick(View v) { edSearch.setCursorVisible(true); } }); //开始动画...getResources().getDisplayMetrics().density; return (int) (pxValue / scale + 0.5f); } } 动画的实现主要是通过过渡动画...再转换成dp,然后减去40其实是左右20的边距,同时在展开的时候增加了左右的内边距,最后放入到beginDelayedTransition方法中,进行实例化,再设置动画时间,最后交给TransitionManager...进行处理就达到了以上的效果,至于关闭的业务就是和展开是相反的业务处理,并且多了输入法的关闭和输入框的清空。