动画的学习与总结"/>
android动画的学习与总结
目录
- 一、什么是android动画?
- 二、动画的分类
- 三、android中动画的两种实现方式
一、动画是什么?
动画有下面两种情况:
- 同一个图片通过视图在界面上进行透明度,缩放,旋转,平移的变化(View动画)。
- 在界面的同一位置上不断切换显示不同的图片(Drawable动画)
二、动画的分类
- View Animation
- 单一动画
- 缩放动画(ScaleAnimation)
- 透明度动画(AlphaAnimation)
- 旋转动画(RotateAnimation)
- 平移动画(TranslateAnimation)
2. 复合动画(AnimationSet)
由多个单一动画组合在一起的动画
3.Animation 的公用功能
setDuration:设置持续时间。(单位:ms)
setStartOffset:设置开始的延时的时间(单位:ms)
setFillBefore:设置最终是否固定在起始状态。
setFillAfter:设置最终是否固定在最后的状态。
setAnimationListener(AnimationListener listener):设置动画监听。
本人在项目中需要做一个平移+旋转的按键特效,本以为是信手拈来的事.
XML代码如下(示例):
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android=""><rotateandroid:fromDegrees="0"android:toDegrees="360"android:pivotX="50%"android:pivotY="50%"android:startOffset="2000"android:duration="2000"></rotate><translateandroid:duration="2000"android:fromXDelta="0"android:fromYDelta="0"android:toXDelta="-400"android:toYDelta="2000"/></set>
JAVA代码如下:
public void onActivityCreated(@Nullable Bundle savedInstanceState) {super.onActivityCreated(savedInstanceState);final ImageView imageView1=getView().findViewById(R.id.imageView20);imageView1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(final View view) {Animation animation= AnimationUtils.loadAnimation(getContext(),R.anim.rotate);//装载动画Animation animation1=AnimationUtils.loadAnimation(getContext(),R.anim.translate);imageView1.startAnimation(animation);//开始动画//imageView1.startAnimation(animation1);//动画监听animation.setAnimationListener(new Animation.AnimationListener() {@Overridepublic void onAnimationStart(Animation animation) {}@Overridepublic void onAnimationEnd(Animation animation) {NavController navController= Navigation.findNavController(view);navController.navigate(R.id.action_gamestart_to_page3);Navigation.findNavController(view).navigate(R.id.action_gamestart_to_page3);}@Overridepublic void onAnimationRepeat(Animation animation) {}});}});}
然后结果便是,动画先平移,然后绕自身旋转。为解决这个疑问,我便上网搜索,最后便是没找到这个XML配置的两种动画同时进行的解决方案。然后便是尝试单纯用java代码的方式来 解决(即第二种实现方式)。
2.纯编码方式
代码如下(示例):
public void onActivityCreated(@Nullable Bundle savedInstanceState) {super.onActivityCreated(savedInstanceState);// final ImageView imageView1=getView().findViewById(R.id.imageView20);final TextView textView=getView().findViewById(R.id.textView10);RotateAnimation animation=new RotateAnimation(0,360,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);//创建旋转动画对象animation.setDuration(5000);TranslateAnimation animation1=new TranslateAnimation(Animation.ABSOLUTE,0,Animation.RELATIVE_TO_SELF,-2.5f,Animation.ABSOLUTE,0,Animation.RELATIVE_TO_SELF,0.7f);//创建平移动画对象animation1.setDuration(5000);final AnimationSet set=new AnimationSet(true);//动画set对象set.addAnimation(animation);//加入动画set.addAnimation(animation1);textView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(final View view) {textView.startAnimation(set);//开始动画set.setAnimationListener(new Animation.AnimationListener() {@Overridepublic void onAnimationStart(Animation animation) {}@Overridepublic void onAnimationEnd(Animation animation) {NavController navController= Navigation.findNavController(view);navController.navigate(R.id.action_gamestart_to_page3);// Navigation.findNavController(view).navigate(R.id.action_gamestart_to_page3);}@Overridepublic void onAnimationRepeat(Animation animation) {}});}});}
最后成功实现动画的旋转平移同时进行的效果,这里我已经将ImageView点击事件 换为了TextView点击事件。难点便是 TranslateAnimation()当中的参数选取的问题。
参考博文:Animation动画平移和旋转的结合使用_chengjia0847的博客-CSDN博客
android动画平移淡出,Android旋转动画和平移动画混合效果_weixin_39578197的博客-CSDN博客
关于TranslateAnimation()的参数问题_flyiiiiiii的博客-CSDN博客_translateanimation参数
总结
阅读(1h):《社会心理学》
英语(1h):50个单词,10道选择题,一篇阅读题。
编程(5h):android开发
运动:早上起来散了一下步,晚上玩了1.5小时的滑板。
更多推荐
android动画的学习与总结
发布评论