这是我参与「第四届青训营 」笔记创作活动的的第5天
一、前言
今天学习到的是Android的UI编程动画交互部分,其中动画部分我加入自己的一个项目为例,加深对本节课知识点的掌握。
今日份的边学边练中,交互这里我以自己之前做的天气APP项目为例: 在这个天气APP中,我在开场的闪屏界面中加入了一个Lottie动画(太阳云朵)如图所示:
核心代码与注释在文章中会有说明;
二、本节课知识点大纲:
1. Android UI动画
三、Android UI动画-帧动画:
在Android中,帧动画的本质是把一组预准备好的图片循环切换播放,造成一种动画效果
帧动画
帧动画实现
实现帧动画有两种方式,即xml和java
XML法
以课件中为例:其原理是将动画素材导入到drawable文件夹中,创建xml中导入素材
xml
java
补间动画
差值器示例
属性动画
动画总结
两类动画的根本区别在于:是否改变动画本身的属性
- 视图动画:不改变动画的属性,在动画过程中仅对图像进行变换来达到动画效果。无论动画结果在哪,该View的位置和响应区域都是在原地,不会根据结果而移动;
- 属性动画:改变了动画属性 因属性动画在动画过程中对动态改变了对象属性,从而达到了动画效果
Lottie动画
这里我以自己项目为例: 在这个天气APP中,我在开场的闪屏界面中加入了一个Lottie动画(太阳云朵):如图所示
在Xml中设置好Lottie的前端样式,并在.class对其进行调用
代码如下:
.XML
<!-- 启动动画布局 -->
<com.airbnb.lottie.LottieAnimationView
android:id="@+id/lottie_logo"
android:layout_width="wrap_content"
android:layout_height="259dp"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:layout_marginStart="77dp"
android:layout_marginTop="543dp"
android:layout_marginEnd="84dp"
android:layout_marginBottom="44dp"
app:lottie_autoPlay="true"
app:lottie_rawRes="@raw/weather_cloudy" />
.class
/*Lottie动画*/
LottieAnimationView lottieAnimationView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_wellcome);
//全屏
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
init();//初始化
lottieAnimationView = findViewById(R.id.lottie_logo);
/*设置欢迎界面各个元素向上下移动*距离,运行*s,延迟*s*/
lottieAnimationView.animate().translationY(1600).setDuration(1000).setStartDelay(4000);
四、课外补充:
Android动画种类
Frame Animation 帧动画
通过顺序播放一系列图像从而产生动画效果。图片过多时容易造成OOM(Out Of Memory内存用完)异常。
Tween Animation 补间动画
是通过对场景里的对象不断做图像变换(透明度、缩放、平移、旋转)从而产生动画效果,是一种渐进式动画,并且View动画支持自定义。
Accribute Animation 属性动画
这也是在android3.0之后引进的动画,在手机的版本上是android4.0就可以使用这个动 画,通过动态的改变对象的属性从而达到动画效果。
补间动画和属性动画的区别
补间动画只是改变了View的显示效果而已,并不会真正的改变View的属性。而属性动画可以改变View的显示效果和属性。举个例子:例如屏幕左上角有一个Button按钮,使用补间动画将其移动到右下角,此刻你去点击右下角的Button,它是绝对不会响应点击事件的,因此其作用区域依然还在左上角。只不过是补间动画将其绘制在右下角而已,而属性动画则不会。
五、引用参考:
- 课外补充引用: Android 动画之帧动画用法详解
- 文章学习来源: 【Android 客户端专场 学习资料一】第四届字节跳动青训营(第三节:常规 & 高级 UI 编程——动画)
感谢以上作者的文章,今天的学习收获满满!!Thanks and HappyCoding!