安卓动画学习
Animation 补间动画
分两类,帧动画和补间动画
补间动画也叫做Tween动画,其动画方式分为4种:
淡入淡出(alpha)
平移(translate)
缩放(scale)
03 缩放(scale)
04 旋转(rotate)
05 set动画集
left_to_right.xml
right_out_left.xml
right_to_left.xml
分两类,帧动画和补间动画
补间动画也叫做Tween动画,其动画方式分为4种:
淡入淡出(alpha)
平移(translate)
缩放(scale)
旋转(rotate)
01 alpha动画
public void doAlpha(View v){
Animation animation;
animation = new AlphaAnimationUtils.loadAnimation(this,R.anim.alpha);
(方法一:
alpha.xml:
<alpha
android:fromAlpha="0"
android:toAlpha="1"
android:duration ="5000"
xmlns:android = "http://schemas.android.com/apk/res/android">
)
//方法二:
animation = new AlphaAnimation(0f,1f);
animation.setDuration(5000);(设置时间,以毫秒为单位)
imageview.startAnimation(animation);
}
02 平移(translate)
<translate
android:duration="2000"
android:fromXDelta="0"
android:fromYDelta="0"
android:toXDelta="100%"
android:toYDelta="100%"
android:fillAfter="true"(保持动画结束状态)
android:repeatCount="1"(重复的次数,不包括第一次)
android:repeaMode="reverse"(返回)
android:repeaMode="restart"(重新开始)
android:fillBefore
></translate>
public void doTranslate(View v){
Animation animation;
animation = new AlphaAnimationUtils.loadAnimation(this,R.anim.translate);
imageview.startAnimation(animation);
}
03 缩放(scale)
<scale
android:fromXScale="0"
android:fromYScale="0"
android:toScale="100%"
android:toScale="100%"
<--设置中心点位置-->
android:pivotX="0"
android:pivotY="0"
></scale>
public void doScale(View v){
Animation animation;
animation = new AlphaAnimationUtils.loadAnimation(this,R.anim.scale);
imageview.startAnimation(animation);
}
04 旋转(rotate)
<rotate
android:fromDegrees="0"
android:toDegrees="360"(可以设置旋转圈数)
android:duration="2000"
android:interpolator(用来设置加速方式)
android:repeatCount="2"(也可以设置旋转圈数)
android:pivotX="50%"
android:pivotY="50%"></rotate>
public void doScale(View v){
Animation animation;
animation = new AlphaAnimationUtils.loadAnimation(this,R.anim.rotate);
imageview.startAnimation(animation);
}
05 set动画集
<set
<alpha
android:duration="3000"
android:fromAlpha="0"
android:toAlpha="1"></alpha>
<scale
android:fromXScale="0"
android:fromYScale="0"
android:toXScale="100%"
android:toYScale="100%"
android:pivotX="50%"
android:pivotY="50%"
android:duration="3000">
</scale>
<rotate
android:duration="3000"
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:startOffset=""(设置开始时间,可以设置动画集相互播放的时间)
android:toDegrees="720"/>
</rotate>
></set>
public void AnimationSet(View v){
Animation animation;
animation = new AlphaAnimationUtils.loadAnimation(this,R.anim.set);
imageview.startAnimation(animation);
}
使用动画实现的图库:
主要代码:left_out_right.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="-100%"
android:toXDelta="0"
android:duration="1500"
/>
<alpha
android:fromAlpha="0.75"
android:toAlpha="1"
android:duration="1500"
/>
</set>
left_to_right.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="0"
android:toXDelta="100%"
android:duration="1500"
/>
<alpha
android:fromAlpha="0.5"
android:toAlpha="1"
android:duration="1500"
/>
</set>
right_out_left.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="0"
android:toXDelta="-100%"
android:duration="1500"
/>
<alpha
android:fromAlpha="0.5"
android:toAlpha="1"
android:duration="1500"
/>
</set>
right_to_left.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="0"
android:toXDelta="100%"
android:duration="1500"
/>
<alpha
android:fromAlpha="0.5"
android:toAlpha="1"
android:duration="1500"
/>
</set>
imageswitcher.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.right_to_left));
imageswitcher.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.right_out_left));
imageswitcher.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.left_to_right));
imageswitcher.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.left_out_right));
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理