Android UI 编程-动画 | 青训营笔记

101 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的的第5天

一、前言

今天学习到的是Android的UI编程动画交互部分,其中动画部分我加入自己的一个项目为例,加深对本节课知识点的掌握。

今日份的边学边练中,交互这里我以自己之前做的天气APP项目为例: 在这个天气APP中,我在开场的闪屏界面中加入了一个Lottie动画(太阳云朵)如图所示:

截屏2022-07-27 12.46.03.png

截屏2022-07-27 12.40.36.png

核心代码与注释在文章中会有说明;

二、本节课知识点大纲:

1. Android UI动画

三、Android UI动画-帧动画:

在Android中,帧动画的本质是把一组预准备好的图片循环切换播放,造成一种动画效果

帧动画

image.png

帧动画实现

实现帧动画有两种方式,即xmljava

XML法

以课件中为例:其原理是将动画素材导入到drawable文件夹中,创建xml中导入素材

xml

截屏2022-07-27 12.29.24.png

java 截屏2022-07-27 12.28.51.png

image.png

补间动画

image.png

差值器示例

image.png

属性动画

image.png

动画总结

image.png

两类动画的根本区别在于:是否改变动画本身的属性

  • 视图动画:不改变动画的属性,在动画过程中仅对图像进行变换来达到动画效果。无论动画结果在哪,该View的位置和响应区域都是在原地,不会根据结果而移动;
  • 属性动画:改变了动画属性 因属性动画在动画过程中对动态改变了对象属性,从而达到了动画效果

Lottie动画

截屏2022-07-27 12.46.03.png

这里我以自己项目为例: 在这个天气APP中,我在开场的闪屏界面中加入了一个Lottie动画(太阳云朵):如图所示

截屏2022-07-27 12.40.36.png

在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,它是绝对不会响应点击事件的,因此其作用区域依然还在左上角。只不过是补间动画将其绘制在右下角而已,而属性动画则不会。

五、引用参考:

感谢以上作者的文章,今天的学习收获满满!!Thanks and HappyCoding!