Android动画之属性动画(Property Animation)(二)
2015-11-16 14:06
615 查看
紧接着上一篇文章Android动画之属性动画(Property Animation)(一),这一篇讲继续讲解Android的属性动画。
简单的使用view.animate().alpha(0).y(300).setDuration(300).start()就能实现动画~~不过需要SDK11,此后在SDK12,SDK16又分别添加了withStartAction和withEndAction用于在动画前,和动画后执行一些操作。当然也可以.setListener(listener)等操作。
我们将上一篇中的动画代码中加入插值器,看一下效果两张图的效果差别:
主要是加入代码:
这里就简单点贴上一个弹出的效果代码了:
关于插值器一共有下面这几种:
1、AccelerateDecelerateInterpolator开始与结束的地方速率改变比较慢,在中间的时候加速
2、AccelerateInterpolator开始的地方速率改变比较慢,然后开始加速
3、AnticipateInterpolator开始的时候向后然后向前甩
4、AnticipateOvershootInterpolator开始的时候向后然后向前甩一定值后返回最后的值
5、BounceInterpolator动画结束的时候弹起
6、CycleInterpolator循环播放特定的次数,速率改变沿着正弦曲线
7、DecelerateInterpolator在开始的地方快然后慢
8、LinearInterpolator以常量速率改变
9、OvershootInterpolator向前甩一定值后再回到原来位置
下一篇将讲解android的布局动画
6、在XML中使用属性动画
属性动画同视图动画一样,也可以直接写在XML中,代码如下:<?xml version="1.0" encoding="utf-8"?> <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android" android:duration="1000" android:propertyName="scaleX" android:valueFrom="1.0" android:valueTo="2.0" android:valueType="floatType" > </objectAnimator>
public void scaleX(View view) { // 加载动画 Animator anim = AnimatorInflater.loadAnimator(this, R.animator.scalex); anim.setTarget(mMv); anim.start(); }
7、View的animate方法
在Android 3.0之后,Google给View增加了animate方法来直接驱动属性动画,代码如下:// need API12 view.animate()// .alpha(0)// .y(300) .setDuration(300) // need API 12 .withStartAction(new Runnable() { @Override public void run() { Log.e(TAG, "START"); } // need API 16 }).withEndAction(new Runnable() { @Override public void run() { Log.e(TAG, "END"); runOnUiThread(new Runnable() { @Override public void run() { } }); } }).start();
简单的使用view.animate().alpha(0).y(300).setDuration(300).start()就能实现动画~~不过需要SDK11,此后在SDK12,SDK16又分别添加了withStartAction和withEndAction用于在动画前,和动画后执行一些操作。当然也可以.setListener(listener)等操作。
8、Interpolates(插值器)
通过插值器,可以定义动画的变换速率,这一点非常类似物理中的加速度,其作用主要是通过控制目标变量的变化值进行对应的变化。同样的一个动画变换起始值,在不同的插值器作用下,每个单位时间内所能达到的变化值也是不一样的。我们将上一篇中的动画代码中加入插值器,看一下效果两张图的效果差别:
主要是加入代码:
set.setInterpolator(new BounceInterpolator());
这里就简单点贴上一个弹出的效果代码了:
private void startAnim() { ObjectAnimator animator0 = ObjectAnimator.ofFloat( mImageViews.get(0), "alpha", 1F, 0.5F); ObjectAnimator animator1 = ObjectAnimator.ofFloat( mImageViews.get(1), "translationY", 200F); ObjectAnimator animator2 = ObjectAnimator.ofFloat( mImageViews.get(2), "translationX", 200F); ObjectAnimator animator3 = ObjectAnimator.ofFloat( mImageViews.get(3), "translationY", -200F); ObjectAnimator animator4 = ObjectAnimator.ofFloat( mImageViews.get(4), "translationX", -200F); AnimatorSet set = new AnimatorSet(); set.setDuration(500); //添加插值器 set.setInterpolator(new BounceInterpolator()); set.playTogether( animator0, animator1, animator2, animator3, animator4); set.start(); mFlag = false; }
关于插值器一共有下面这几种:
1、AccelerateDecelerateInterpolator开始与结束的地方速率改变比较慢,在中间的时候加速
2、AccelerateInterpolator开始的地方速率改变比较慢,然后开始加速
3、AnticipateInterpolator开始的时候向后然后向前甩
4、AnticipateOvershootInterpolator开始的时候向后然后向前甩一定值后返回最后的值
5、BounceInterpolator动画结束的时候弹起
6、CycleInterpolator循环播放特定的次数,速率改变沿着正弦曲线
7、DecelerateInterpolator在开始的地方快然后慢
8、LinearInterpolator以常量速率改变
9、OvershootInterpolator向前甩一定值后再回到原来位置
下一篇将讲解android的布局动画
相关文章推荐
- ADB环境
- 自学android 碰到的知识点总结 (第二版)
- android layout_weight的使用注意点
- Android资源文件-drawable整理
- android线性布局
- Android开源github
- Android Dimming the System Bars 隐藏虚拟按键
- android 获取uri的正确文件路径的办法
- 如何让TabHost选项卡显示图片
- Android 购物车
- android每隔5s显示时间
- Android中Context相关知识整理
- 关于透明状态栏的使用以及与软键盘冲突的解决办法
- Android动画之属性动画(Property Animation)(一)
- android listview优化
- Android K线图试水
- android 自定义菜单 使用PopupWindow实现菜单的各种效果
- Android meta-data 参数的获取
- Android多线程下实例
- android四大组件之BroadcastReceiver开机启动