您现在的位置是:主页 > news > 为什么做电影网站没有流量/网络游戏推广怎么做
为什么做电影网站没有流量/网络游戏推广怎么做
admin2025/5/22 17:23:35【news】
简介为什么做电影网站没有流量,网络游戏推广怎么做,网站建设 交单流程,合肥网站关键词优化谈一谈为何写 OpenAnim 项目地址:https://gitee.com/kumei/OpenAnim OpenAnim 是一个动画库,基于 Android 的属性动画的封装。 因为项目中遇到一些痛点,所有萌生了写这个库的想法: 1. 代码中经常使用同一个差值器 interpolate或…
谈一谈为何写 OpenAnim
项目地址:https://gitee.com/kumei/OpenAnim
OpenAnim 是一个动画库,基于 Android 的属性动画的封装。
因为项目中遇到一些痛点,所有萌生了写这个库的想法:
1. 代码中经常使用同一个差值器 interpolate或者typeEvaluator,多个项目重复使用.
插值器(Interpolator)和估值器(TypeEvaluator)是实现 复杂动画效果的关键
interpolate 是什么:插值器,动画的变化速率,时快,时慢,是有节奏的。
系统内置的插值器有几个(可以自定义):
AccelerateInterpolator:动画从开始到结束,变化率是一个加速的过程。
DecelerateInterpolator:动画从开始到结束,变化率是一个减速的过程。
CycleInterpolator:动画从开始到结束,变化率是循环给定次数的正弦曲线。
AccelerateDecelerateInterpolator:动画从开始到结束,变化率是先加速后减速的过程。
LinearInterpolator:动画从开始到结束,变化率是线性变化。
… …
typeEvaluator 又是什么:估值器,决定 值 的变化规律(匀速、加速blabla),即决定的是变化趋势;
系统内置的估值器有3个(可以自定义):
IntEvaluator:以整型的形式从初始值 - 结束值 进行过渡
FloatEvaluator:以浮点型的形式从初始值 - 结束值 进行过渡
ArgbEvaluator:以Argb类型的形式从初始值 - 结束值 进行过渡
// 以前的代码,需要自己去简单封装一下的,感觉不是很解耦。
// OpenAnim 参考了类似 Glide 的 公共配置模块,去全局配置 插值器,估值器 等等参数.
public class TestAnimModule implements AnimModule {@Overridepublic void applyOptions(@NonNull Context context, @NonNull AnimConfigBuilder builder) {// builder.interpolate(new DecelerateInterpolator())builder// .duration(1000)// .typeEvaluator(new BounceEaseOut(500)).interpolate(new LinearInterpolator()); // 设置好插值器后,全局都会使用这个插值器. }}// AndroidManifest.xml 中配置使用
<meta-dataandroid:name="AnimModule"android:value="com.open.tvwidget.TestAnimModule" />
2. Activity, fragment, View 的生命周期如何绑定,使用了动画后每次都要自己释放,很烦
// 这里使用了 Lifecycle 来支持 生命周期监听.
// 使用者只需要传入 Context 就可,对于使用者是无感的.
OpenAnim.with(this/*Activity,Context等来自Context的类*/).into(mTestBtn).start();
3. 在使用了AnimatorSet后,动画循环次数,设置的很麻烦.
// 因为只有 继承了ValueAnimator,setRepeatCount 才方便设置,比如使用了 AnimatorSet 就不是很方便了。
OpenAnim.with(this).together(new TranslationXAnimator(500),new TranslationYAnimator(100)).duration(3000).repeatCount(3) // 循环次数 : 1 ~ ValueAnimator.INFINITE(无限循环).start();
4. 经常使用ObjectAnimator,ValueAnimator…,每次都要写
// OpenAnim 将放大,移动 等等都封装起来了.
// MoveXAnimator,RotationAnimator,ScaleXAnimator,AlphaAnimator
OpenAnim.with(this).together(new TranslationXAnimator(500),new TranslationYAnimator(100)).start();
4. 复杂的酷炫动画支持.
比如像下面这幅GIF显示的这种效果
还有这种效果
5. 支持XML动画