Android 动画复习
来源:互联网 发布:数据库能干什么 编辑:程序博客网 时间:2024/06/11 12:53
Android常用动画有frame(帧动画)动画,tween(补间动画)动画,属性动画。
1.frame动画
作为帧动画,frame动画根据快速切换图片而达到动画效果。通常用xml定义动画会更好。在res/drawable目录下新建xml文件。
<?xml version = "1.0" encoding = "utf - 8"?><animation-list xmlns:android="http://schemas.android.com/apk/res/android"android:oneshot="true"> //表示动画执行一次 <item android:duration="500" android:drawable="@drawable/" <item android:duration="500" android:drawable="@drawable/" <item android:duration="500" android:drawable="@drawable/`</animationt-list> 启动动画效果ImageView myView = (ImageView) findViewbyId(R.)((AnimationDrawable)myView.getBackgroud()).start()
2.tween动画 ,在res/anim目录下建xml文件
<?xml version = "1.0" encoding = "utf-8"?><set xmlns:android="http://schema.android.com/apk/res/android" //可以自定义interpolator(接口) android:interpolator="@android:anim/accelerate_interpolator" android:shareInterpolator="true"><alpha android:fromAlpha='float' android:toAlpha="float"/><translate android:fromX="float" android:toX="float"/>.......</set>
set是动画容器,interpolator为插值器,set里面可以嵌套roate translate scale alpha。也可以不共享插值器,每个item单独设置。不间动画只用于View.并且效果有限。用法为 Animation anim = AnimationUtils.loadAnimation(this,R.);View.startAnimation(anim);
3.属性动画
ValueAnimator是属性动画的核心类,用于实现值得过渡。ObjectAnimator是其子类。可以对任意属性进行操作。
ValueAnimator anim = ValueAnimator.ofFloat(0.0f,1.0f)anim.setDuration(1000)anim.addUpdateListener(listener)anim.start()ValueAnimation.AnimatorUpdateListener listener = new ValueAnimation.AnimatorUpdateListener (){@Override public void onAnimationUpdate(ValueAnimator animation){ float newvalue = animation.getAnimatedValue() View.setAlpha(newValue)}}
ObjectAnimator animation = ObjectAnimator.ofFloat(View,”alpha”,1.0f,0.3f,0.6f)
animation.setDuration(500)
animation.setInterpolator(new AccelerateInterpolator())
animation.start()
实际上属性动画是每个一段时间不断获得属性值,这个值如何确定呢?通过TypeEvaluator的唯一evaluate()获得。如果要控制速度,还要用到Interpolator.
public class myEvaluator implements TypeEvaluator{
@Override
public Integer evaluate(float fraction.Integer startValue ,Integer endValue){
int newValue = startValue + (int) (fraction*(endValue - startValue))
return newValue
}
}
参数float fraction为已经执行时间占总的时间比
插值器Interpolator
myInterpolator implements Timeinterpolator{
@Override
public float getInterpolator(float input){
return input*input
}
}
input 即为TypeEvaluator中的fraction,通过修改fraction。
变占比。100毫秒0.01,200 0.2*02.=0.04,300 0.09,差值为1,为加速
ObjectAnimator animator = ObejectAnimator.ofObject(mView,"x",new myEvaluator(),0,200)animator.setDuration(300)animator.start()
AnimatorSet 属性动画集的方法
play()/with()/before()/after(Animator)/after(long)/playTogether(…)
- Android 动画复习
- Android-Animation动画基础复习
- 复习android三大动画
- android复习-逐帧动画
- android复习路之tween动画篇
- Android动画复习(包括缩放动画、平移动画、旋转动画、透明度动画)
- Android的帧动画补间动画,新手复习
- 复习iOS动画-layer
- 复习iOS动画-Transaction
- 复习iOS动画-Easing
- Android复习
- Android复习
- Android复习
- Android复习
- 前端复习--动画设置原理
- 复习iOS动画-layer-2
- 复习iOS动画-layer-3
- 复习iOS动画-layer-4
- 数据库的类型与SQL语句的分类
- 通常git操作流程(仅供参考)
- Qt-QML-Charts-ChartView-编译错误-ASSERT: "!"No style available without QApplication!
- Max Sum 最大连续和的子序列
- bnu52509-LCA
- Android 动画复习
- iOS之UISCrollView--原理
- Android 图片压缩之多种压缩方式结合使用
- POJ
- 通过ssh tunnel从外网访问内网kali
- C++ 类的构造函数constructor
- 利用C语言绘制正弦函数
- Java编程思想-09接口
- ObjectAnimator之PropertyValuesHolder与Keyframe----实现电话响铃震动和小球自由抛体效果