200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 【Android 】Android studior中res下创建anim和animator动画 理解如何使用不同的文件夹

【Android 】Android studior中res下创建anim和animator动画 理解如何使用不同的文件夹

时间:2023-10-20 12:42:00

相关推荐

【Android 】Android studior中res下创建anim和animator动画 理解如何使用不同的文件夹

在 Android Studio 中,animanimator文件夹都用于存放动画相关的资源文件,但它们的用途和使用方式略有不同。

以下是每个文件夹下提供3个对应的案例:

anim文件夹案例 补间动画:创建一个渐变动画,改变 View 的透明度,用于实现淡入淡出等效果。

anim文件夹中创建一个 XML 文件,例如fade.xml,用于定义渐变动画的属性值和持续时间。示例代码如下:

<alpha xmlns:android="/apk/res/android"android:fromAlpha="0.0"android:toAlpha="1.0"android:duration="1000" />

其中,android:fromAlphaandroid:toAlpha表示透明度的起始值和结束值,android:duration表示动画持续时间。

在代码中加载并播放动画,示例代码如下:

ImageView imageView = findViewById(R.id.image_view);Animation anim = AnimationUtils.loadAnimation(this, R.anim.fade);imageView.startAnimation(anim);

其中,imageView是一个ImageView控件,通过AnimationUtils.loadAnimation()方法加载动画资源文件,然后调用startAnimation()方法开始播放动画。

逐帧动画:创建一个逐帧动画,将多张图片合成一张动画,用于实现一些简单的动态效果,例如图标的闪烁、动物的奔跑等。

anim文件夹中创建一个 XML 文件,例如frame.xml,用于定义逐帧动画的帧序列和持续时间。示例代码如下:

<animation-list xmlns:android="/apk/res/android"android:oneshot="false"><item android:drawable="@drawable/frame1" android:duration="200" /><item android:drawable="@drawable/frame2" android:duration="200" /><item android:drawable="@drawable/frame3" android:duration="200" /><item android:drawable="@drawable/frame4" android:duration="200" /></animation-list>

其中,android:oneshot="false"表示循环播放动画,<item>标签表示每一帧的图片和持续时间。

在代码中加载并播放动画,示例代码如下:

ImageView imageView = findViewById(R.id.image_view);imageView.setBackgroundResource(R.anim.frame);AnimationDrawable anim = (AnimationDrawable)imageView.getBackground();anim.start();

其中,imageView是一个ImageView控件,通过setBackgroundResource()方法将动画资源文件设置为其背景,然后通过getBackground()方法获取背景,并转换为AnimationDrawable对象,最后调用start()方法播放动画。

缩放动画:创建一个缩放动画,改变 View 的大小,用于实现放大缩小等效果。

anim文件夹中创建一个 XML 文件,例如scale.xml,用于定义缩放动画的属性值和持续时间。示例代码如下:

<scale xmlns:android="/apk/res/android"android:fromXScale="1.0"android:toXScale="1.5"android:fromYScale="1.0"android:toYScale="1.5"android:pivotX="50%"android:pivotY="50%"android:duration="1000" />

其中,android:fromXScaleandroid:toXScale表示水平方向上的缩放比例的起始值和结束值,android:fromYScaleandroid:toYScale表示垂直方向上的缩放比例的起始值和结束值,android:pivotXandroid:pivotY表示缩放的中心点,android:duration表示动画持续时间。

在代码中加载并播放动画,示例代码如下:

ImageView imageView = findViewById(R.id.image_view);Animation anim = AnimationUtils.loadAnimation(this, R.anim.scale);imageView.startAnimation(anim);

其中,imageView是一个ImageView控件,通过AnimationUtils.loadAnimation()方法加载动画资源文件,然后调用startAnimation()方法开始播放动画。

animator文件夹案例 值动画:使用值动画改变 View 的属性值,例如透明度、旋转角度、平移距离等,实现更为复杂的动画效果,例如物体的移动、缩放、旋转等。

animator文件夹中创建一个 XML 文件,例如rotate.xml,用于定义旋转动画的属性值和持续时间。示例代码如下:

<rotate xmlns:android="/apk/res/android"android:propertyName="rotation"android:valueFrom="0"android:valueTo="360"android:pivotX="50%"android:pivotY="50%"android:duration="1000"android:repeatCount="infinite"android:repeatMode="restart" />

其中,android:propertyName表示要改变的属性名称,android:valueFromandroid:valueTo表示属性的起始值和结束值,android:pivotXandroid:pivotY表示旋转的中心点,android:duration表示动画持续时间,android:repeatCountandroid:repeatMode表示动画循环播放的次数和模式。

在代码中加载并播放动画,示例代码如下:

ImageView imageView = findViewById(R.id.image_view);ObjectAnimator anim = ObjectAnimator.ofFloat(imageView, "rotation", 0, 360);anim.setDuration(1000);anim.setRepeatCount(ValueAnimator.INFINITE);anim.setRepeatMode(ValueAnimator.RESTART);anim.start();

其中,imageView是一个ImageView控件,通过ObjectAnimator.ofFloat()方法创建一个值动画对象,其中第一个参数表示要改变的对象,第二个参数表示要改变的属性名称,第三个参数表示属性的起始值和结束值,然后通过setDuration()setRepeatCount()setRepeatMode()方法设置动画的持续时间、循环播放的次数和模式,最后调用start()方法开始播放动画。

多值动画:使用多值动画改变 View 的属性值,例如同时改变透明度和大小,实现更为复杂的动画效果,例如物体的闪烁、缩放等。

animator文件夹中创建一个 XML 文件,例如scale_alpha.xml,用于定义多值动画的属性值和持续时间。示例代码如下:

<set xmlns:android="/apk/res/android"><objectAnimatorandroid:propertyName="alpha"android:valueFrom="0.0"android:valueTo="1.0"android:duration="1000" /><objectAnimatorandroid:propertyName="scaleX"android:valueFrom="1.0"android:valueTo="1.5"android:duration="1000" /><objectAnimatorandroid:propertyName="scaleY"android:valueFrom="1.0"android:valueTo="1.5"android:duration="1000" /></set>

其中,<objectAnimator>标签表示要改变的属性名称、起始值、结束值和持续时间。

在代码中加载并播放动画,示例代码如下:

ImageView imageView = findViewById(R.id.image_view);AnimatorSet anim = (AnimatorSet) AnimatorInflater.loadAnimator(this, R.animator.scale_alpha);anim.setTarget(imageView);anim.start();

其中,imageView是一个ImageView控件,通过AnimatorInflater.loadAnimator()方法加载动画资源文件,然后设置动画的目标对象为imageView,最后调用start()方法开始播放动画。

自定义动画:使用自定义动画改变 View 的属性值,例如自定义路径动画,实现更为复杂的动画效果,例如物体的飞行等。

animator文件夹中创建一个 XML 文件,例如path.xml,用于定义自定义动画的属性值和持续时间。示例代码如下:

<objectAnimator xmlns:android="/apk/res/android"android:duration="1000"android:propertyName="x"android:valueFrom="0"android:valueTo="200"android:valueType="floatType"><pathInterpolatorandroid:controlX1="0.4"android:controlY1="0.0"android:controlX2="1.0"android:controlY2="1.0" /></objectAnimator>

其中,android:propertyName表示要改变的属性名称,android:valueFromandroid:valueTo表示属性的起始值和结束值,android:valueType表示属性值的类型,<pathInterpolator>标签表示使用路径插值器定义动画的路径。

在代码中加载并播放动画,示例代码如下:

ImageView imageView = findViewById(R.id.image_view);ObjectAnimator anim = (ObjectAnimator) AnimatorInflater.loadAnimator(this, R.animator.path);anim.setTarget(imageView);anim.start();

其中,imageView是一个ImageView控件,通过AnimatorInflater.loadAnimator()方法加载动画资源文件,然后设置动画的目标对象为imageView,最后调用start()方法开始播放动画。

总结

在 Android Studio 中,anim 和 animator 文件夹都用于存放动画相关的资源文件,但它们的用途和使用方式略有不同。在 anim 文件夹中存放的是逐帧动画和补间动画的资源文件,例如 AnimationDrawable 和 TweenAnimation 等,用于实现一些简单的动态效果。而在 animator 文件夹中存放的是属性动画的资源文件,例如 ValueAnimator 和 ObjectAnimator 等,用于实现更为复杂的动画效果。同时,animator 文件夹还可以用于存放多值动画的资源文件,用于同时改变多个属性值,例如同时改变透明度和大小。

综上所述,anim 文件夹主要用于存放逐帧动画和补间动画的资源文件,animator 文件夹则主要用于存放属性动画和多值动画的资源文件。在实际开发中,可以根据需要选择合适的动画类型和资源文件来实现所需的动画效果。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。