众所周知 在开发的过程当中 会有很多的细节问题。
当然这些小小的细节问题就可能导致整个项目当中的一部分达不到预期想要的效果
比如:我下面要讲的就是动画集当中的补件动画细节问题;
介绍一下补间动画:
Android动画当中的补间(Tweens)
补间动画的定义的:只需要指定图片的开始帧和结束帧 中间部分有系统自动补全。
四种补间动画特点:
透明度动画(AlphaAnimation):使指定控件按照给定的透明度完成由透明到不透明或者由不透明到透明
位移动画(TranslateAnimation):使指定控件按照给定的X轴数值和Y轴数值完成位移过程
旋转动画(RotateAnimation):使指定控件围绕给定的中心点做旋转的过程
缩放动画(ScaleAnimation):使指定控件按照给定的中心点做放大或者缩小的过程
进入正题:
layout_xml文件中写入图片
<ImageView
android:id="@+id/img_view"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@mipmap/ic_launcher" />
创建动画集xml
自定义名称,重点是Resource type选择Animation
创建Activity:
//初始化控件
img_view = findViewById(R.id.img_view);
//进入页面,执行动画
Animation anim = AnimationUtils.loadAnimation(MainActivity.this, R.anim.my_set);
//设置动画持续时间
anim.setDuration(3000);
//开启动画
img_view.startAnimation(anim);
那么重点来了:
在我们创建完Animation时写入后运行如下:
<alpha
android:fromAlpha="1"
android:toAlpha="0" />
<translate
android:fromXDelta="0%p"
android:fromYDelta="0%p"
android:toXDelta="100%p"
android:toYDelta="100%p" />
还能正常的展示出预想的效果由上到下慢慢由不透明到透明
但是继续在下列的写法顺序中使用旋转(rotate)运行如下:
<alpha
android:fromAlpha="1"
android:toAlpha="0" />
<translate
android:fromXDelta="0%p"
android:fromYDelta="0%p"
android:toXDelta="100%p"
android:toYDelta="100%p" />
<rotate
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="360" />
它会旋转着由不透明到透明回到开始的位置并没有实现平移效果
所以如果给他们位置写入顺序变化一下的话运行如下:
<alpha
android:fromAlpha="1"
android:toAlpha="0" />
<rotate
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="360" />
<translate
android:fromXDelta="0%p"
android:fromYDelta="0%p"
android:toXDelta="100%p"
android:toYDelta="100%p" />
它会达到我们预想的效果由起点到终点从不透明到透明一直旋转着直到初始化到起点
其实这才是我们一直期望的效果,说明位置还是有影响的所以这样举例是为了大家更明了的看出效果,主要的还是旋转(rotate)位置要写在平移(translate)位置的上面这样才能达到我们想要的效果,在官网发布中,说没有影响。
谢谢您的观看,也请多多注意 谢谢您。