android动画的学习与总结

编程入门 行业动态 更新时间:2024-10-27 14:21:11

android<a href=https://www.elefans.com/category/jswz/34/1769013.html style=动画的学习与总结"/>

android动画的学习与总结

目录

  • 一、什么是android动画?
  • 二、动画的分类
  • 三、android中动画的两种实现方式

 

 

一、动画是什么?

动画有下面两种情况:

  • 同一个图片通过视图在界面上进行透明度,缩放,旋转,平移的变化(View动画)。
  • 在界面的同一位置上不断切换显示不同的图片(Drawable动画)

二、动画的分类

  • View Animation
  1. 单一动画
  • 缩放动画(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动画的学习与总结

本文发布于:2024-03-09 08:44:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1724506.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:动画   android

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!