腾讯开源Android动画库,腾讯开源的酷炫动画播放解决方案Vap初体验

8416053055378ccf93482a7ea9a474eb.png

同事在群里有提到Vap,播放炫酷动画的,可以让动画背景透明,就去了解了下。

也可以看下面的视频播放效果(不动点击播放):

原本以为是直接弄个视频就可以播放。

后来查看官方案例,为了让动画背景有半透明特质,元素素材不是视频,而是PNG图片序列。

自己就不赘述,我就已通俗易懂方式,站在初次使用者的角度讲讲这个项目。

一、大致的实现思路

如果是让普通MP4视频,以画布的形式播放,则其实2D canvas就可以,video.captureStream()方法可以返回当前播放的视频流,然后在canvas中绘制呈现。

但是,2D canvas的性能是堪忧的,在移动端,如果画面很炫酷,是带不动的。

此时可以使用WebGL进行播放,视频帧作为纹理贴上去,因为WebGL会启动GPU加速,性能可以的,会非常流畅。

Vap底层就是使用的WebGL技术,所以性能有保证。

然而,上面的方式只适用于图片完全不透明的情况。

如果希望炫酷动画希望是半透明,或者部分区域全透明,则上面这种策略就会捉襟见肘。

有什么办法可以解决半透明的问题呢?

以前我曾提过一个CSS解决方案,就是使用CSS mix-blend-mode中的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
io.github.tencent:vap 是一个基于 Java 的验证框架,它并不与动画播放有任何关系。因此,不能使用 io.github.tencent:vap 来实现动画播放。 如果您想要实现动画播放,可以考虑使用 Android 中的动画 API,例如属性动画、帧动画、转场动画等。这些 API 提供了丰富的动画效果和控制方式,可以满足不同场景下的需求。 例如,在使用属性动画时,可以使用 ObjectAnimator 类来实现属性变化的动画效果。例如,可以将一个 View 对象的 alpha 属性从 0 变化到 1,实现一个淡入效果: ``` ObjectAnimator animator = ObjectAnimator.ofFloat(view, "alpha", 0f, 1f); animator.setDuration(1000); animator.start(); ``` 在使用帧动画时,可以将一组连续的图片资源合成一张大图,并通过 XML 文件来指定播放顺序和播放速度。例如,可以创建一个名为 anim_fade.xml 的文件来实现一个淡入淡出的帧动画: ``` <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> <item android:drawable="@drawable/fade_in" android:duration="1000"/> <item android:drawable="@drawable/fade_out" android:duration="1000"/> </animation-list> ``` 然后在 Java 代码中使用 AnimationDrawable 类来加载和播放动画: ``` ImageView imageView = findViewById(R.id.image_view); AnimationDrawable animationDrawable = (AnimationDrawable) getResources().getDrawable(R.drawable.anim_fade); imageView.setImageDrawable(animationDrawable); animationDrawable.start(); ``` 总的来说,Android 中提供了多种动画 API,可以方便地实现各种动画效果。您可以根据具体需求选择合适的 API 来实现动画播放

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值