android 逐帧动画和补间动画
程序员文章站
2022-03-25 14:56:43
...
逐帧动画
逐帧动画就是快速播放单张图片因为视觉暂停的原因看起看就是动画效果。
- 准备好所需要的图片资源,在drawable目录下创建一个xml文件,利用animation-list配置好动画图片。
fairy.xml
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- duration: 60ms播放一张-->
<item android:drawable="@drawable/pic1" android:duration="60"/>
<item android:drawable="@drawable/pic2" android:duration="60"/>
<item android:drawable="@drawable/pic3" android:duration="60"/>
</animation-list>
- 将fairy.xml设置为某一个布局的背景
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/fairy"
android:orientation="vertical"
android:id="@+id/linearlayout">
</LinearLayout>
- 获取该动画对象,调用它的start,stop方法来控制它的播放与暂停
// 获取动画资源所在的布局对象
LinearLayout layout=findViewById(R.id.linearlayout);
// 强制类型转换为动画对象
AnimationDrawable anim= (AnimationDrawable) layout.getBackground();
// 设置点击事件
layout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (click){
anim.start();
click=false;
}else {
anim.stop();
click=true;
}
}
});
补间动画
- 透明度渐变动画
- 在anim文件夹下配置好动画效果,主要是动画的持续时间,起始和结束透明度。
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 指定起始透明度和结束透明度,动画持续时间-->
<alpha android:fromAlpha="0" android:toAlpha="1" android:duration="4000"/>
</set>
- 准备好一张图片
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/imageview"
android:scaleType="centerInside"
android:src="@drawable/meihua13"/>
- 加载动画资源并播放
ImageView imageView=findViewById(R.id.imageview);
// 利用动画加载工具加载动画资源
Animation alpha= AnimationUtils.loadAnimation(MainActivity.this, R.anim.alpha);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
imageView.startAnimation(alpha);
}
});
- 旋转动画
旋转动画的配置有几个重要属性如下
<rotate
android:fromDegrees="0"
android:toDegrees="720"
android:duration="4000"
android:pivotX="50%"
android:pivotY="50%" />
fromDegrees开始角度,toDegrees结束角度,duration持续时间,pivotx,pivoty旋转的x和y轴,这里50%是指图片的一半。
其他的加载和播放方式和渐变动画相同。
- 缩放动画
<scale android:fromXScale="1"
android:fromYScale="1"
android:toXScale="2"
android:toYScale="2"
android:pivotX="20%"
android:pivotY="30%"
android:duration="3000"/>
fromXScale: x原始比例,1表示不缩放,原始大小
fromYScale: y原始比例,1表示不缩放,原始大小
toXScale: x结束比例,2表示放大为原始2倍大小
toYScale: y结束比例,2表示放大为原始2倍大小
pivotX,pivotY,指定缩放中心。
- 平移动画
<translate android:fromXDelta="0"
android:fromYDelta="0"
android:toXDelta="0"
android:toYDelta="200"
android:duration="3000"/>
fromXDelta,fromYDelta 起始点的坐标
toXDelta,toYDelta结束点的坐标
四种动画的加载和播放方式都是相同的。
上一篇: Android动画解析(一)-----逐帧动画和补间动画
下一篇: python中3D图像的绘制
推荐阅读
-
Android 动画之补间动画实战(飞机起飞)
-
Android使用补间动画做一个朴实无华的启动页
-
Android 动画 属性动画 视图动画 补间动画 帧动画 详解 使用
-
flash油漆桶和补间动画制作小球的旋转动画
-
flash中制作遮罩层和传统补间动画有什么区别?
-
Android中四种补间动画的使用示例(附代码下载)
-
Android中实现一个简单的逐帧动画(附代码下载)
-
黑马Android76期学习笔记01基础--day07--广播,有、无序广播、特殊广播接受者、样式和主题,this与context的区别、普通对话框,进度条对话框、帧动画
-
Android动画之补间动画
-
Android开发触摸touch事件(补间动画和自定义view使用方法)