android 动画
Posted gali
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 动画相关的知识,希望对你有一定的参考价值。
Alpha
1.alpha改变view的透明度的动画
2.基本属性:
duration="5000" 渐变时间
fromAlpha="1" 起始时的透明度 1为不透明
toAlpha="0" 结束时透明度 0为透明
3.java
AlphaAnimation anim=new AlphaAnimation(1, 0); anim.setDuration(5000); v.startAnimation(anim);
4.xml
<?xml version="1.0" encoding="utf-8"?> <alpha xmlns:android="http://schemas.android.com/apk/res/android" android:duration="5000" android:fromAlpha="1" android:toAlpha="0" > </alpha>
5.xml 启动
Animation anim = AnimationUtils.loadAnimation(this,R.anim.alpha_first); v.startAnimation(anim);
6.Activity 转场动画 /anim
alpha_in
<?xml version="1.0" encoding="utf-8"?> <alpha xmlns:android="http://schemas.android.com/apk/res/android" android:duration="1000" android:fromAlpha="0" android:toAlpha="1" > </alpha>
alpha_out
<?xml version="1.0" encoding="utf-8"?> <alpha xmlns:android="http://schemas.android.com/apk/res/android" android:duration="1000" android:fromAlpha="1" android:toAlpha="0" > </alpha>
java:
Intent it=new Intent(this,Alpha2Activity.class); startActivity(it); overridePendingTransition(R.anim.alpha_in, R.anim.alpha_out);
rotate
1.旋转动画
<?xml version="1.0" encoding="utf-8"?> <rotate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="5000" android:fromDegrees="1" android:pivotX="50%" android:pivotY="50%" android:toDegrees="180" > </rotate>
android:pivotX="50%"
android:pivotY="50%" 旋转中心点 view的中信
android:fromDegrees="1"起始时view的角度
android:toDegrees="180" 旋转结束后的角度
选择角度为正时是顺时针旋转,为负时则是逆时针旋转。
2.java:
RotateAnimation anim=new RotateAnimation(0, 90); anim.setDuration(5000); v.startAnimation(anim);
3.xml
Animation anim = AnimationUtils.loadAnimation(this, R.anim.rotate_frist); v.startAnimation(anim);
scale
1.缩放动画
<?xml version="1.0" encoding="utf-8"?> <scale xmlns:android="http://schemas.android.com/apk/res/android" android:duration="5000" android:fromXScale="1" android:fromYScale="1" android:repeatCount="infinite" android:repeatMode="reverse" android:toXScale="3" android:toYScale="1" > </scale>
2.java
//缩放动画 x--1变成0.3 y变成2 放大一倍 ScaleAnimation anim=new ScaleAnimation(1, 0.3f, 1, 2); //时长 anim.setDuration(5000); v.startAnimation(anim);
Translate
1.位置移动
<?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="5000" android:fromXDelta="1" android:fromYDelta="1" android:interpolator="@android:anim/bounce_interpolator" android:toXDelta="1" android:fillAfter="true" android:toYDelta="300" > </translate>
android:interpolator="@android:anim/bounce_interpolator" // 动画执行速率
android:fillAfter="true" 动画结束时,停留在最后位置
2.转场动画
translate_in
<?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="300" android:fromXDelta="1" android:fromYDelta="-100%" android:toXDelta="1" android:toYDelta="0" > </translate>
translate_out
<?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="300" android:fromXDelta="1" android:fromYDelta="1" android:toXDelta="1" android:toYDelta="100%" > </translate>
Intent it=new Intent(this,Alpha2Activity.class); startActivity(it); overridePendingTransition(R.anim.translate_in, R.anim.translate_out);
3.java
/* * 300:x方向移动的距离 */ TranslateAnimation anim=new TranslateAnimation(1, 300, 1, 1); anim.setDuration(5000); v.startAnimation(anim);
4.xml
//加载xml Animation anim = AnimationUtils.loadAnimation(this, R.anim.translate_first); v.startAnimation(anim);
set动画集
1.java
AlphaAnimation a=new AlphaAnimation(1, 0); RotateAnimation b=new RotateAnimation(0, -180); //动画集:旋转的同时淡出 AnimationSet set=new AnimationSet(true); set.addAnimation(a); set.addAnimation(b); set.setDuration(5000); v.startAnimation(set);
2.xml
Animation anim = AnimationUtils.loadAnimation(this, R.anim.set_first); v.startAnimation(anim);
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:duration="5000" > <scale android:fromXScale="1" android:fromYScale="1" android:toXScale="0" android:toYScale="0" > </scale> <translate android:fromXDelta="1" android:fromYDelta="1" android:toXDelta="200" android:toYDelta="300" > </translate> </set>
3.activity转场
set_in
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:duration="1000" > <scale android:fromXScale="0" android:fromYScale="0" android:pivotX="50%" android:pivotY="50%" android:toXScale="1" android:toYScale="1" /> <alpha android:fromAlpha="0" android:toAlpha="1" /> </set>
set_out
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:duration="1000" > <!-- 缩小淡出 --> <scale android:fromXScale="1" android:fromYScale="1" android:pivotX="50%" android:pivotY="50%" android:toXScale="0" android:toYScale="0" /> <alpha android:fromAlpha="1" android:toAlpha="0" /> </set>
Intent it=new Intent(this,Alpha2Activity.class); startActivity(it); overridePendingTransition(R.anim.set_in, R.anim.set_out);
frame
由多张图片循环播放形成的动画
1.drawable/文件 多张图片
<?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@drawable/loading_0" android:duration="100"/> <item android:drawable="@drawable/loading_1" android:duration="100"/> <item android:drawable="@drawable/loading_2" android:duration="100"/> <item android:drawable="@drawable/loading_3" android:duration="100"/> <item android:drawable="@drawable/loading_4" android:duration="100"/> <item android:drawable="@drawable/loading_5" android:duration="100"/> <item android:drawable="@drawable/loading_6" android:duration="100"/> <item android:drawable="@drawable/loading_7" android:duration="100"/> </animation-list>
2.image中利用
<ImageView android:id="@+id/imageView1" android:layout_width="67dp" android:layout_height="54dp" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:background="@drawable/frame_first" />
3.java
ImageView mv=(ImageView) findViewById(R.id.imageView1); AnimationDrawable drawable = (AnimationDrawable) mv.getBackground(); drawable.start();
property
1.补间动画(view动画)的变换只是假象,view的属性值没有发生任何变化,是android操作系统
通过重新绘制实现的
属性动画:
通过改变属性值完成的动画
2.translated对比
TranslateAnimation a=new TranslateAnimation(1, 300, 1, 1); a.setDuration(3000); a.setFillAfter(true); v.startAnimation(a);
ObjectAnimator.ofFloat(v, "TranslationY",200).setDuration(2000).start();
在X,Y方向移动,移动后translate无法点击,属性动画依然可以相应点击事件
3.监听
ObjectAnimator anim = ObjectAnimator.ofFloat(v, View.ROTATION_Y, 0,90,180); anim.setDuration(5000); anim.start(); //添加监听器 anim.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { super.onAnimationEnd(animation); } }); }
4.动画集
AnimatorSet s=new AnimatorSet(); ObjectAnimator a = ObjectAnimator.ofFloat(v, View.ALPHA, 1,0); ObjectAnimator b = ObjectAnimator.ofFloat(v, View.ROTATION, 1,-90,180,360); s.setDuration(5000); s.playTogether(a,b); s.start();
5.xml animator/文件
Animator anim = AnimatorInflater.loadAnimator(this,R.animator.property_first); //指定动画作用的对象 anim.setTarget(v); //启动 anim.start();
6.java
/* * v:动画作用的view对象 * View.TRANSLATION_X:被改变值的属性 * 第三个参数:属性取值的范围 */ ObjectAnimator anim = ObjectAnimator.ofFloat(v, View.TRANSLATION_X,1,20,1,-20,1); anim.setDuration(300); anim.start();
& myanims
http://pan.baidu.com/s/1mioO8ju
以上是关于android 动画的主要内容,如果未能解决你的问题,请参考以下文章
Android使用片段在viewpager中的页面滚动上放置动画
如何在Android中加载带有动画的cardview GridView?