1.渐变动画TweenAnimation



2.创建透明度变化

1、主布局文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><ImageViewandroid:id="@+id/imgshow"android:src="@drawable/logo"android:layout_width="wrap_content"android:layout_height="wrap_content"/></LinearLayout>

2、activity文件

public class MainActivity extends AppCompatActivity {private ImageView imgshow=null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);imgshow=findViewById(R.id.imgshow);imgshow.setOnClickListener(new OnclickListenerImpl());}private class OnclickListenerImpl implements View.OnClickListener {@Overridepublic void onClick(View v) {AnimationSet set=new AnimationSet(true);AlphaAnimation alphaAnimation=new AlphaAnimation(1,0);//从完全显示到完全透明alphaAnimation.setDuration(2000);//2秒内完成set.addAnimation(alphaAnimation);MainActivity.this.imgshow.startAnimation(set);}}
}

结果:完成透明过度

3.创建缩放变化

以上例为基础,修改onClick事件代码

AnimationSet set=new AnimationSet(true);ScaleAnimation scaleAnimation=new ScaleAnimation(1,0.0f,1,0.0f,AnimationSet.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);scaleAnimation.setDuration(2000);//2秒内完成set.addAnimation(scaleAnimation);MainActivity.this.imgshow.startAnimation(set);

结果:
完成缩放

4.平移的变化

以上例为基础,修改onClick事件代码


```java
private class OnclickListenerImpl implements View.OnClickListener {@Overridepublic void onClick(View v) {AnimationSet set=new AnimationSet(true);TranslateAnimation translateAnimation=new TranslateAnimation(Animation.RELATIVE_TO_SELF,0.0f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.0f,Animation.RELATIVE_TO_SELF,1.5f);translateAnimation.setDuration(2000);//2秒内完成set.addAnimation(translateAnimation);imgshow.startAnimation(set);}}

结果:
完成移动

4.旋转的变化
private class OnclickListenerImpl implements View.OnClickListener {@Overridepublic void onClick(View v) {AnimationSet set=new AnimationSet(true);RotateAnimation translateAnimation=new RotateAnimation(0,360,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.0f);translateAnimation.setDuration(2000);//2秒内完成set.addAnimation(translateAnimation);imgshow.startAnimation(set);}}

结果:
完成旋转

5.旋转加缩放的变化
 private class OnclickListenerImpl implements View.OnClickListener {@Overridepublic void onClick(View v) {AnimationSet set=new AnimationSet(true);RotateAnimation translateAnimation=new RotateAnimation(0,360,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.0f);ScaleAnimation scaleAnimation=new ScaleAnimation(1,0.0f,1,0.0f,AnimationSet.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);set.setDuration(2000);//2秒内完成set.addAnimation(translateAnimation);set.setRepeatCount(3);//重复三次set.addAnimation(scaleAnimation);imgshow.startAnimation(set);}}

结果:
完成旋转和缩放的叠加,但重复未实现

6.interpolator定义动画速率

其实就是加减速的问题,只需要在设置动画集合的时候设置即可

7.interpolator设置加速度
private class OnclickListenerImpl implements View.OnClickListener {@Overridepublic void onClick(View v) {AnimationSet set=new AnimationSet(true);RotateAnimation translateAnimation=new RotateAnimation(0,360,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.0f);ScaleAnimation scaleAnimation=new ScaleAnimation(1,0.0f,1,0.0f,AnimationSet.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);set.setRepeatCount(3);//重复三次set.setDuration(5000);//5秒内完成set.addAnimation(translateAnimation);//增加动画set.addAnimation(scaleAnimation);set.setInterpolator(new AccelerateInterpolator());//设置动画速率为加速度imgshow.startAnimation(set);}}

结果:
完成旋转和缩放的加速度先慢后快

8.动画监听器:AnimationListener


1、布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/group"android:layout_width="match_parent"android:layout_height="match_parent"><ImageViewandroid:id="@+id/imgshow"android:src="@drawable/logo"android:layout_width="wrap_content"android:layout_height="wrap_content"/></LinearLayout>

2、activity文件

public class MainActivity extends AppCompatActivity {private ImageView imgshow=null;private ViewGroup group=null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);imgshow=findViewById(R.id.imgshow);group=findViewById(R.id.group);AnimationSet set=new AnimationSet(true);RotateAnimation translateAnimation=new RotateAnimation(0,360,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.0f);set.setDuration(3000);//3秒内完成set.addAnimation(translateAnimation);//增加动画set.setAnimationListener(new AnimationListenrImpl());//这个是在set动画对象上调用的而不是在图像统建上调用imgshow.startAnimation(set);}private class AnimationListenrImpl implements Animation.AnimationListener {//实现的事动画监听接口@Overridepublic void onAnimationStart(Animation animation) {if (animation instanceof AnimationSet){AnimationSet set= (AnimationSet) animation;AlphaAnimation alphaAnimation=new AlphaAnimation(1,0);alphaAnimation.setDuration(3000);set.addAnimation(alphaAnimation);}}@Overridepublic void onAnimationEnd(Animation animation) {group.removeView(imgshow);}@Overridepublic void onAnimationRepeat(Animation animation) {}}
}

结果是:实现动画,并在动画结束后移除动画

9.通过XML设置动画(必然是首选)


10.通过XML设置alpha动画

1、在xml中配置动画各种属性
创建alpha.xml

<set xmlns:android="http://schemas.android.com/apk/res/android"><alphaandroid:fromAlpha="1.0"android:toAlpha="0.0"android:duration="3000"/>
</set>

2、创建布局文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/group"android:layout_width="match_parent"android:layout_height="match_parent"><ImageViewandroid:id="@+id/imgshow"android:src="@drawable/logo"android:layout_width="wrap_content"android:layout_height="wrap_content"/></LinearLayout>

3、使用AnimationUtil类读取动画配置

public class MainActivity extends AppCompatActivity {private ImageView imgshow=null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);imgshow=findViewById(R.id.imgshow);imgshow.setOnClickListener(new OnclickListenerImpl());}private class OnclickListenerImpl implements View.OnClickListener {@Overridepublic void onClick(View v) {Animation animation= AnimationUtils.loadAnimation(MainActivity.this,R.anim.alpha);imgshow.startAnimation(animation);}}
}

结果:实现动画效果

11.通过XML设置scale动画

1、创建scale.xml

<set xmlns:android="http://schemas.android.com/apk/res/android"><scaleandroid:fromXScale="1.0"android:toXScale="0.0"android:fromYScale="1.0"android:toYScale="0"android:pivotX="50%"android:pivotY="50%"android:startOffset="100"android:repeatCount="3"android:duration="3000"/>
</set>

2、activity文件

public class MainActivity extends AppCompatActivity {private ImageView imgshow=null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);imgshow=findViewById(R.id.imgshow);imgshow.setOnClickListener(new OnclickListenerImpl());}private class OnclickListenerImpl implements View.OnClickListener {@Overridepublic void onClick(View v) {Animation animation= AnimationUtils.loadAnimation(MainActivity.this,R.anim.scale);imgshow.startAnimation(animation);}}
}
12.通过XML设置tanslate动画

1、创建translate.xml

<set xmlns:android="http://schemas.android.com/apk/res/android">
<translateandroid:fromXDelta="0.0"android:toXDelta="50%"android:fromYDelta="0.0"android:toYDelta="150%"android:duration="3000"/>
</set>

2、activity文件

public class MainActivity extends AppCompatActivity {private ImageView imgshow=null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);imgshow=findViewById(R.id.imgshow);imgshow.setOnClickListener(new OnclickListenerImpl());}private class OnclickListenerImpl implements View.OnClickListener {@Overridepublic void onClick(View v) {Animation animation= AnimationUtils.loadAnimation(MainActivity.this,R.anim.scale);imgshow.startAnimation(animation);}}
}

结果:
实现动画效果

13.通过XML设置rotate动画

1、创建rotate.xml

<set xmlns:android="http://schemas.android.com/apk/res/android">
<translateandroid:fromXDelta="0.0"android:toXDelta="50%"android:fromYDelta="0.0"android:toYDelta="150%"android:duration="3000"/>
</set>

2、activity文件

public class MainActivity extends AppCompatActivity {private ImageView imgshow=null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);imgshow=findViewById(R.id.imgshow);imgshow.setOnClickListener(new OnclickListenerImpl());}private class OnclickListenerImpl implements View.OnClickListener {@Overridepublic void onClick(View v) {Animation animation= AnimationUtils.loadAnimation(MainActivity.this,R.anim.rotate);imgshow.startAnimation(animation);}}
}

结果:
实现动画效果

13.通过XML设置动画叠加(旋转加位移)

实际上就是在set节点上添加多个动画效果

1、创建all.xml

<set xmlns:android="http://schemas.android.com/apk/res/android"><rotateandroid:fromDegrees="0.0"android:toDegrees="360"android:pivotX="50%p"android:pivotY="0"android:duration="3000"/><translateandroid:fromXDelta="0.0"android:toXDelta="50%"android:fromYDelta="0.0"android:toYDelta="150%"android:duration="3000"/>
</set>

2、activity文件

public class MainActivity extends AppCompatActivity {private ImageView imgshow=null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);imgshow=findViewById(R.id.imgshow);imgshow.setOnClickListener(new OnclickListenerImpl());}private class OnclickListenerImpl implements View.OnClickListener {@Overridepublic void onClick(View v) {Animation animation= AnimationUtils.loadAnimation(MainActivity.this,R.anim.all);imgshow.startAnimation(animation);}}
}

结果:
实现动画效果

14.通过XML设置动画速率(针对全部动画)

1、创建all.xml

<set xmlns:android="http://schemas.android.com/apk/res/android"android:interpolator="acclerate_interprolator"android:shareInterpolator="true" ><rotateandroid:fromDegrees="0.0"android:toDegrees="360"android:pivotX="50%p"android:pivotY="0"android:duration="3000"/><translateandroid:fromXDelta="0.0"android:toXDelta="50%"android:fromYDelta="0.0"android:toYDelta="150%"android:duration="3000"/>
</set>

2、activity文件

public class MainActivity extends AppCompatActivity {private ImageView imgshow=null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);imgshow=findViewById(R.id.imgshow);imgshow.setOnClickListener(new OnclickListenerImpl());}private class OnclickListenerImpl implements View.OnClickListener {@Overridepublic void onClick(View v) {Animation animation= AnimationUtils.loadAnimation(MainActivity.this,R.anim.all);imgshow.startAnimation(animation);}}
}

结果:
实现动画效果

15.FrameAnimation帧动画

1、定义动画的配置文件,放在drawable文件夹下,里面有15张图片

<animation-list xmlns:android="http://schemas.android.com/apk/res/android"android:oneshot="true"><item android:drawable="@drawable/banana01" android:duration="100"/><item android:drawable="@drawable/banana02" android:duration="100"/><item android:drawable="@drawable/banana03" android:duration="100"/><item android:drawable="@drawable/banana04" android:duration="100"/><item android:drawable="@drawable/banana05" android:duration="100"/><item android:drawable="@drawable/banana06" android:duration="100"/><item android:drawable="@drawable/banana07" android:duration="100"/><item android:drawable="@drawable/banana08" android:duration="100"/><item android:drawable="@drawable/banana09" android:duration="100"/><item android:drawable="@drawable/banana10" android:duration="100"/><item android:drawable="@drawable/banana11" android:duration="100"/><item android:drawable="@drawable/banana12" android:duration="100"/><item android:drawable="@drawable/banana13" android:duration="100"/><item android:drawable="@drawable/banana14" android:duration="100"/><item android:drawable="@drawable/banana15" android:duration="100"/>
</animation-list>

2、定义布局文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/group"android:layout_width="match_parent"android:layout_height="match_parent"><ImageViewandroid:id="@+id/face"android:layout_width="wrap_content"android:layout_height="wrap_content"/><Buttonandroid:id="@+id/start"android:text="start animation"android:layout_width="match_parent"android:layout_height="wrap_content"/>
</LinearLayout>

3、activity文件

public class MainActivity extends AppCompatActivity {private ImageView face=null;private Button startAnimation=null;private AnimationDrawable animationDrawable = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);face=findViewById(R.id.face);startAnimation=findViewById(R.id.start);startAnimation.setOnClickListener(new OnclickListenerImpl());}private class OnclickListenerImpl implements View.OnClickListener {@Overridepublic void onClick(View v) {face.setBackgroundResource(R.drawable.allface);animationDrawable= (AnimationDrawable) face.getBackground();animationDrawable.setOneShot(false);//是否只播1次animationDrawable.start();}}
}

结果:
实现15张图依次播放效果

16.组件上使用动画(LayoutAnimationController组件)


不看了

魔乐科技安卓开发教程----李兴华----10动画相关推荐

  1. 魔乐科技安卓开发教程----李兴华----08APPWidget

    1.认识Widget 通过桌面的一些软件窗口实现对程序得控制,需要使用的类 RemotView 2.创建一个Widget 1.创建一个类,继承自AppWidgetProvider public cla ...

  2. 魔乐科技安卓开发教程----李兴华----01文件存储

    1.查看模拟器data文件夹 到-sdk\platform-tools文件夹下Shift+鼠标右键打开命令窗口(win7),输入adb root回车然后输入adb remount回车, 出现remou ...

  3. 魔乐科技安卓开发教程----李兴华----06PendingIntent

    1.intent和PendingIntent的区别 intent表示执行某种意图 pendingIntent表示暂缓执行某种意图,直到遇到特殊条件才执行 2.发送通知:Notification 参考文 ...

  4. 魔乐科技安卓开发教程----李兴华----13视频录制

    1.录制视频 1.添加各种权限及横屏属性 //传感器决定 参考: Activity的screenOrientation属性详解 <uses-permission android:name=&qu ...

  5. 魔乐科技安卓开发教程----李兴华----07BroadCast广播

    1.认识广播 1.建立广播接收器(类)MyBroadcastReceiver并继承BroadcastReceiver public class MyBroadcastReceiver extends ...

  6. 魔乐科技安卓开发教程----李兴华----05Service

    1.开启.终止服务 1.布局文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&quo ...

  7. 魔乐科技安卓开发教程----李兴华----12音频录制

    1.MediaRecorder 2.MediaRecorder类的生命周期 2.一个录音的案例 点击下载本例代码 1.定义列表的布局 创建布局文件recode_files.xml <TableL ...

  8. 魔乐科技安卓开发教程----李兴华----19 传感器

    1.传感器常用方法及常量 android中支持的传感器 2.移动小球(方位传感器) 1.创建一个自定义的View类,Ballview public class BallView extends Vie ...

  9. 魔乐科技安卓开发教程----李兴华----03菜单

    1.ActivityGroup+GridView方式的基本菜单 1.创建用于显示icon的activity:MyActivity及其布局文件mylayout.xml mylayout <Line ...

最新文章

  1. 从零点五开始用Unity做半个2D战棋小游戏(九)
  2. #我要上首页# 新版博客首页来了,做明星博主还会远吗?
  3. http 文件服务器 性能测试,Http File Server
  4. vs生成qt moc文件
  5. JPBC库只使用椭圆曲线群,不使用双线性性质。找单位元,逆元等
  6. 时间戳timestamp
  7. DEDE获得顶级栏目名称
  8. 个人知识体系思维导图_“知识体系”打得好,学霸孩子跑不了,巧用“思维导图”来帮忙...
  9. 剑指Offer之寻找链表倒数第k个节点
  10. 插件 微信 自动 抢红包
  11. H5网站接入微信支付(H5支付+JSAPI支付)
  12. wifi信道12为啥没人用_关于WIFI信道的问题?
  13. Kafka 过期数据清理 详解
  14. matlab找最大值_matlab求函数最大值
  15. HTML标签与CSS样式
  16. “PHP语言,是全世界最好用的编程语言!“
  17. 集线器、中继器、网桥、交换机、网关、路由器——今天必把你们区分开
  18. Set集合的概述及特点
  19. java -Linux 配置
  20. 苏黎世联邦理工学院 计算机视觉,瑞士苏黎世联邦理工学院计算机视觉实验室进行合作...

热门文章

  1. CMMI3-5级如何高效落地?——CMMI落地4大工具
  2. 毕业设计ppt模板内容应该写什么
  3. 自研工业级机器视觉通用平台VisionBank
  4. kafka消费者Rebalance机制
  5. 机械臂速成小指南(三):机械臂的机械结构
  6. HFSS双频单极子印刷天线
  7. Linux中的source
  8. 会计跨考计算机考研,考研最累的10大专业,会计排第几?
  9. 【零基础学STM32】CubeMX+HAL玩转电机控制
  10. 股指期货高频数据机器学习预测