您的位置:首页 > 移动开发 > Android开发

Android动画

2016-06-26 09:45 519 查看
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">一、动画基本四中</span>




Tween Animation 变换动画













从布局 设置

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

<alpha
android:duration="1000"
android:fromAlpha="0.1"
android:toAlpha="1.0" >
</alpha>

</set>
loadAnimation = AnimationUtils.loadAnimation(this, R.anim.alpha);
image.startAnimation(loadAnimation);


缩放动画



从布局加载

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

<scale
android:duration="2000"
android:fillAfter="false"是否显示为最终态
android:fromXScale="0.0"从无到有
android:fromYScale="0.0"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"加速
android:pivotX="50%"图片缩放点
android:pivotY="50%"图片缩放点
android:toXScale="1.0"从无到有
android:toYScale="1.0" />

</set>
代码调用

loadAnimation = AnimationUtils.loadAnimation(this, R.anim.scale);
image.startAnimation(loadAnimation);


位移动画



配置文件

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

<translate
android:duration="1000"
android:fromXDelta="10"
android:fromYDelta="10"
android:toXDelta="100"
android:toYDelta="100" />

</set>
代码实现、

loadAnimation = AnimationUtils
.loadAnimation(this, R.anim.translate);
image.startAnimation(loadAnimation);


旋转动画



布局文件

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

<rotate
android:duration="1000"
android:fromDegrees="0"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="+360" />

</set>


代码实现

loadAnimation = AnimationUtils.loadAnimation(this, R.anim.rotate);
image.startAnimation(loadAnimation);


组合动画



布局

两个布局分别加载后串联在一起

代码实现

loadAnimation = AnimationUtils
.loadAnimation(this, R.anim.translate);
image.startAnimation(loadAnimation);
final Animation loadAnimation2 = AnimationUtils.loadAnimation(this,
R.anim.rotate);
//设置动画监听器
loadAnimation.setAnimationListener(new AnimationListener() {

@Override
public void onAnimationStart(Animation arg0) {
// TODO Auto-generated method stub

}

@Override
public void onAnimationRepeat(Animation arg0) {
// TODO Auto-generated method stub

}

@Override
public void onAnimationEnd(Animation arg
ac37
0) {
// TODO Auto-generated method stub
image.startAnimation(loadAnimation2);
}
});


组合动画二



配置文件配在一起

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

<alpha
android:duration="3000"
android:fromAlpha="0.2"
android:toAlpha="1.0" />
<alpha
android:duration="3000"
android:fromAlpha="1.0"
android:startOffset="3000"
android:toAlpha="0.2" />

</set>


代码实现

loadAnimation = AnimationUtils.loadAnimation(this,
R.anim.continue_anim);
image.startAnimation(loadAnimation);


组合动画三



不用配置文件,用代码实现效果

AlphaAnimation alphaAnimation = new AlphaAnimation(0.1f, 1.0f);
alphaAnimation.setDuration(100);
alphaAnimation.setRepeatCount(10);
//倒叙重复REVERSE  正序重复RESTART
alphaAnimation.setRepeatMode(Animation.REVERSE);
image.startAnimation(alphaAnimation);


组合动画四



zoomin.xml布局文件和zoomout.xml布局文件

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator" >

<scale
android:duration="1000"
android:fromXScale="0.1"
android:fromYScale="0.1"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="1.0"
android:toYScale="1.0" />
<alpha
android:duration="1000"
android:fromAlpha="0"
android:toAlpha="1.0" />
</set>

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator"
android:zAdjustment="top" >

<scale
android:duration="@android:integer/config_mediumAnimTime"
android:fromXScale="1.0"
android:fromYScale="1.0"
android:pivotX="50%p"
android:pivotY="50%p"
android:toXScale="0.1"
android:toYScale="0.1" />

<alpha
android:duration="@android:integer/config_mediumAnimTime"
android:fromAlpha="1.0"
android:toAlpha="0" />

</set>


代码实现

Intent intent=new Intent(MainActivity.this,MainActivity2.class);
startActivity(intent);
overridePendingTransition(R.anim.zoom_in,R.anim.zoom_out);

布局动画



案例,listview条目随机显示动画

布局文件

用的上面的

代码实现

listView.setAdapter(adapter);
//	    布局动画控制器
LayoutAnimationController lac=new LayoutAnimationController(AnimationUtils.loadAnimation(this, R.anim.zoom_in));
//	    设置顺序
lac.setOrder(LayoutAnimationController.ORDER_NORMAL);
listView.setLayoutAnimation(lac);
listView.startLayoutAnimation();

帧动画

布局文件,是放在drable文件夹下

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" >

<item
android:drawable="@drawable/one"
android:duration="500"/>
<item
android:drawable="@drawable/two"
android:duration="500"/>
<item
android:drawable="@drawable/three"
android:duration="500"/>
<item
android:drawable="@drawable/four"
android:duration="500"/>
<item
android:drawable="@drawable/five"
android:duration="500"/>
<item
android:drawable="@drawable/six"
android:duration="500"/>

</animation-list>代码实现
image.setImageResource(R.drawable.anim_list);


属性动画

ObjectAnimator用法

传动动画是系统不断调用ondraw方法去重绘动画很耗资源。传统的animation动画的监听事件还在原来的位置。而属性动画则是getset方法等实现

ObjectAnimator.offLoat(imageview控件对象,“translationX方向偏移量”,0F起始位置,200F终止位置).setDuration(1000).start()

ObjectAnimator.offLoat(imageview控件对象,“rotation旋转”,0F起始位置,360F终止位置).setDuration(1000).start()

上面连个是同时进行的

PropertyValuesHolder p1=PropertyValuesHolder .offLoat(“rotation旋转”,0F起始位置,360F终止位置)

PropertyValuesHolder p2=PropertyValuesHolder .offLoat(“translationX”,0F起始位置,200F终止位置)

ObjectAnimator.ofPropertyValuesHolder(imageview,p1,p2).setDuration(1000).start()

和上面的效果是一样的,但内部做了优化效率更高

使用动画集来控制



效果和上面的一样,可以调用playSequentially方法是按顺序播放,也可以set.play(animator2).with(animator3);set.play(animator1).with(animator2)先移动后旋转

动画添加事件



也可以添加单个事件





Valueanimator动画







实例



自定义数值

PointF泛型

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: