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泛型
相关文章推荐
- Android获取已安装程序的信息
- 跟我学Android之一 概述
- 跟我学Android之一 概述
- Android5.0 之一 概述
- litepal建表报错
- [Android] TopSheetBehavior
- Android解决Fragment使用replace方法重叠问题
- Android自定义控件绘制流程与Paint, Canvas相关API
- Android之ActivityManage长用方法总结
- Android学习之Spinner
- 获取LayoutInflater的三种方式分析
- OSG for Android新手教程系列(四)——JNI与NDK的使用
- ubuntu中在Launcher上添加Android Studio的运行图标
- Ubuntu14.04环境编译vlc源码for安卓Android系统
- Android 模拟器获得Root权限
- Android拍照并保存在本地
- TextView属性的简单使用
- android TabHost导航切换实现方式
- Android APK反编译就这么简单 最新版本详解(附图)
- 深入理解Android 消息机制(一)——综述