android动画之补间动画
程序员文章站
2022-06-15 12:37:45
...
所谓的补间动画,就是补全两个不同图片中缺失的过程.
比说一个图片的尺寸是100100 ,另一个是200200. 那么100到200这个放大的过程就可以用补间动画来实现.
xml的创建动画
准备
首先在res文件夹下创建anim动画文件夹
在anim文件夹创建使用的动画文件
旋转动画
1, 动画xml文件
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="2000"
android:fromDegrees="0"
android:toDegrees="90"
android:fillAfter="true"
android:interpolator="@android:anim/linear_interpolator">
>
<!--通用属性说明
duration 动画持续时间
fromDegrees 角度 (从左上角开始)
fillAfter 用于确定是否保持动画结束时的值,如果设置为true,控件动画结束时,将保持动画
interpolator 设定插值器,其实就是指定的动作效果,比如弹跳效果等。
-->
</rotate>
2,代码
btn0.setOnClickListener((v) -> {
//loadAnimation 的两个参数,1是上下文,2是动画xml文件
RotateAnimation rotateAnimation = (RotateAnimation) AnimationUtils.loadAnimation(this, R.anim.rotate_img);
//可以给任意控件加入动画,此处img是ImageView.
img.startAnimation(rotateAnimation);
});
平移动画
1, xml文件
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="2000"
android:fromYDelta="0"
android:toYDelta="200%"
android:fillAfter="true"
android:interpolator="@android:anim/linear_interpolator">
<!--
fromYDelta Y轴的移动方向
% 代表自己的大小的倍数
-->
</translate>
2, 代码
TranslateAnimation translateAnimation = (TranslateAnimation) AnimationUtils.loadAnimation(this, R.anim.translate_img);
img.startAnimation(translateAnimation);
透明度(渐变)
1, xml文件
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="2000"
android:fromAlpha="0.1"
android:toAlpha="1"
android:fillAfter="true">
<!--
fromAlpha 透明度变化 1是完全不透明
-->
</alpha>
2, 代码
AlphaAnimation alphaAnimation = (AlphaAnimation) AnimationUtils.loadAnimation(this, R.anim.alpha_img);
img.startAnimation(alphaAnimation);
缩放
1, xml文件
<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="2000"
android:fillAfter="true"
android:fromXScale="1"
android:toXScale="2"
android:pivotX="0"
android:pivotY="0"
android:fromYScale="1"
android:toYScale="2"
>
<!-- 相同属性省略
pivotX 缩放起点 x 轴
fromXScale x轴上的缩放
toXScale 结束后x轴上的缩放
-->
</scale>
2, 代码
btn3.setOnClickListener((v) -> {
ScaleAnimation scaleAnimation = (ScaleAnimation) AnimationUtils.loadAnimation(this, R.anim.scale_img);
img.startAnimation(scaleAnimation);
});
java代码中创建动画
在java中创建动画的意思就是直接new 动画的对象,根据构造填上需要的参数即可.
大多属性都相同,一个能用.另外一个也能用.比如:耗时,重复次数等.
旋转动画
//
RotateAnimation rotateAnimation = new RotateAnimation(0, 90, 0, 0);
rotateAnimation.setDuration(1000);
translateAnimation.setRepeatCount(1);//重复次数
rotateAnimation.setFillAfter(true);
rotateAnimation.setAnimationListener(new Animation.AnimationListener() {
//开始
@Override
public void onAnimationStart(Animation animation) {
}
//结束
@Override
public void onAnimationEnd(Animation animation) {
}
//重复
@Override
public void onAnimationRepeat(Animation animation) {
}
});
img.startAnimation(rotateAnimation);
平移动画
TranslateAnimation translateAnimation = new TranslateAnimation(0, img.getMaxWidth(), 0, img.getMaxHeight());
translateAnimation.setDuration(1000);
translateAnimation.setFillAfter(true);
translateAnimation.setRepeatCount(1);//重复次数
translateAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
img.startAnimation(translateAnimation);
透明度
AlphaAnimation alphaAnimation = new AlphaAnimation(0.1f, 1f);
alphaAnimation.setDuration(1000);
alphaAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
img.startAnimation(alphaAnimation);
缩放
ScaleAnimation scaleAnimation = new ScaleAnimation(1, 2, 1, 2);
scaleAnimation.setDuration(2000);
scaleAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
img.startAnimation(scaleAnimation);
上一篇: Android-APP启动优化
下一篇: 阿里云配置nginx服务器上线vue项目