魔乐科技安卓开发教程----李兴华----10动画
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动画相关推荐
- 魔乐科技安卓开发教程----李兴华----08APPWidget
1.认识Widget 通过桌面的一些软件窗口实现对程序得控制,需要使用的类 RemotView 2.创建一个Widget 1.创建一个类,继承自AppWidgetProvider public cla ...
- 魔乐科技安卓开发教程----李兴华----01文件存储
1.查看模拟器data文件夹 到-sdk\platform-tools文件夹下Shift+鼠标右键打开命令窗口(win7),输入adb root回车然后输入adb remount回车, 出现remou ...
- 魔乐科技安卓开发教程----李兴华----06PendingIntent
1.intent和PendingIntent的区别 intent表示执行某种意图 pendingIntent表示暂缓执行某种意图,直到遇到特殊条件才执行 2.发送通知:Notification 参考文 ...
- 魔乐科技安卓开发教程----李兴华----13视频录制
1.录制视频 1.添加各种权限及横屏属性 //传感器决定 参考: Activity的screenOrientation属性详解 <uses-permission android:name=&qu ...
- 魔乐科技安卓开发教程----李兴华----07BroadCast广播
1.认识广播 1.建立广播接收器(类)MyBroadcastReceiver并继承BroadcastReceiver public class MyBroadcastReceiver extends ...
- 魔乐科技安卓开发教程----李兴华----05Service
1.开启.终止服务 1.布局文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&quo ...
- 魔乐科技安卓开发教程----李兴华----12音频录制
1.MediaRecorder 2.MediaRecorder类的生命周期 2.一个录音的案例 点击下载本例代码 1.定义列表的布局 创建布局文件recode_files.xml <TableL ...
- 魔乐科技安卓开发教程----李兴华----19 传感器
1.传感器常用方法及常量 android中支持的传感器 2.移动小球(方位传感器) 1.创建一个自定义的View类,Ballview public class BallView extends Vie ...
- 魔乐科技安卓开发教程----李兴华----03菜单
1.ActivityGroup+GridView方式的基本菜单 1.创建用于显示icon的activity:MyActivity及其布局文件mylayout.xml mylayout <Line ...
最新文章
- 从零点五开始用Unity做半个2D战棋小游戏(九)
- #我要上首页# 新版博客首页来了,做明星博主还会远吗?
- http 文件服务器 性能测试,Http File Server
- vs生成qt moc文件
- JPBC库只使用椭圆曲线群,不使用双线性性质。找单位元,逆元等
- 时间戳timestamp
- DEDE获得顶级栏目名称
- 个人知识体系思维导图_“知识体系”打得好,学霸孩子跑不了,巧用“思维导图”来帮忙...
- 剑指Offer之寻找链表倒数第k个节点
- 插件 微信 自动 抢红包
- H5网站接入微信支付(H5支付+JSAPI支付)
- wifi信道12为啥没人用_关于WIFI信道的问题?
- Kafka 过期数据清理 详解
- matlab找最大值_matlab求函数最大值
- HTML标签与CSS样式
- “PHP语言,是全世界最好用的编程语言!“
- 集线器、中继器、网桥、交换机、网关、路由器——今天必把你们区分开
- Set集合的概述及特点
- java -Linux 配置
- 苏黎世联邦理工学院 计算机视觉,瑞士苏黎世联邦理工学院计算机视觉实验室进行合作...