Android Interpolator(插值器)的介绍和使用
来源:互联网 发布:matlab中矩阵归一化 编辑:程序博客网 时间:2024/05/13 21:06
一、Interpolator 时间插值类,定义动画变换的速度。能够实现alpha/scale/translate/rotate动画的加速、减速和重复等。Interpolator类其实是一个空接口,继承自TimeInterpolator,TimeInterpolator时间插值器允许动画进行非线性运动变换,如加速和限速等,该接口中只有接口中有一个方法float getInterpolation(float input)这个方法。传入的值是一个0.0~1.0的值,返回值可以小于0.0也可以大于1.0。
默认值:accelerate_decelerate_interpolator。
一共有九种:
1.AccelerateDecelerateInterpolator 在动画开始与介绍的地方速率改变比较慢,在中间的时候加速
2.AccelerateInterpolator 在动画开始的地方速率改变比较慢,然后开始加速
3.AnticipateInterpolator 开始的时候向后甩一点然后向前
4.AnticipateOvershootInterpolator 开始的时候向后甩一点然后向前超过设定值一点然后返回
5.BounceInterpolator 动画结束的时候弹起,类似小球落地
6.CycleInterpolator 动画循环播放特定的次数回到原点,速率改变沿着正弦曲线
7.DecelerateInterpolator 在动画开始的地方快然后慢
8.LinearInterpolator 以常量速率改变
9.OvershootInterpolator 向前超过设定值一点然后返回到原来位置
二、1.AccelerateDecelerateInterpolator 在动画开始与介绍的地方速率改变比较慢,在中间的时候加速
2.AccelerateInterpolator 在动画开始的地方速率改变比较慢,然后开始加速
3.AnticipateInterpolator 开始的时候向后甩一点然后向前
4.AnticipateOvershootInterpolator 开始的时候向后甩一点然后向前超过设定值一点然后返回
5.BounceInterpolator 动画结束的时候弹起,类似小球落地
6.CycleInterpolator 动画循环播放特定的次数回到原点,速率改变沿着正弦曲线
7.DecelerateInterpolator 在动画开始的地方快然后慢
8.LinearInterpolator 以常量速率改变
9.OvershootInterpolator 向前超过设定值一点然后返回到原来位置
三、
xml中使用:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.administrator.interpolatordemo.MainActivity"> <RelativeLayout android:layout_width="match_parent" android:layout_height="200dp"> <ImageView android:id="@+id/iv" android:layout_width="50dp" android:layout_height="50dp" android:layout_centerVertical="true" android:layout_marginLeft="50dp" android:background="@drawable/image" /> </RelativeLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="50dp" android:orientation="horizontal"> <Button android:id="@+id/btn1" android:layout_width="0dp" android:layout_height="50dp" android:layout_margin="4dp" android:layout_weight="1" android:gravity="center" android:padding="5dp" android:text="AccelerateDecelerate" /> <Button android:id="@+id/btn2" android:layout_width="0dp" android:layout_height="50dp" android:layout_margin="4dp" android:layout_weight="1" android:gravity="center" android:padding="5dp" android:text="Accelerate" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="50dp" android:orientation="horizontal"> <Button android:id="@+id/btn3" android:layout_width="0dp" android:layout_height="50dp" android:layout_margin="4dp" android:layout_weight="1" android:gravity="center" android:padding="5dp" android:text="Anticipate" /> <Button android:id="@+id/btn4" android:layout_width="0dp" android:layout_height="50dp" android:layout_margin="4dp" android:layout_weight="1" android:gravity="center" android:padding="5dp" android:text="AnticipateOvershoot" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="50dp" android:orientation="horizontal"> <Button android:id="@+id/btn5" android:layout_width="0dp" android:layout_height="50dp" android:layout_margin="4dp" android:layout_weight="1" android:gravity="center" android:padding="5dp" android:text="Bounce" /> <Button android:id="@+id/btn6" android:layout_width="0dp" android:layout_height="50dp" android:layout_margin="4dp" android:layout_weight="1" android:gravity="center" android:padding="5dp" android:text="Cycle" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="50dp" android:orientation="horizontal"> <Button android:id="@+id/btn7" android:layout_width="0dp" android:layout_height="50dp" android:layout_margin="4dp" android:layout_weight="1" android:gravity="center" android:padding="5dp" android:text="Decelerate" /> <Button android:id="@+id/btn8" android:layout_width="0dp" android:layout_height="50dp" android:layout_margin="4dp" android:layout_weight="1" android:gravity="center" android:padding="5dp" android:text="Linear" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="50dp" android:orientation="horizontal"> <Button android:id="@+id/btn9" android:layout_width="0dp" android:layout_height="50dp" android:layout_margin="4dp" android:layout_weight="1" android:gravity="center" android:padding="5dp" android:text="Overshoot" /> <TextView android:layout_width="0dp" android:layout_height="50dp" android:layout_margin="4dp" android:layout_weight="1" android:gravity="center" android:padding="5dp" /> </LinearLayout></LinearLayout>
MainActivity中:
public class MainActivity extends AppCompatActivity implements View.OnClickListener { private ImageView imageView; private Button btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageView = (ImageView) findViewById(R.id.iv); btn1 = (Button) findViewById(R.id.btn1); btn2 = (Button) findViewById(R.id.btn2); btn3 = (Button) findViewById(R.id.btn3); btn4 = (Button) findViewById(R.id.btn4); btn5 = (Button) findViewById(R.id.btn5); btn6 = (Button) findViewById(R.id.btn6); btn7 = (Button) findViewById(R.id.btn7); btn8 = (Button) findViewById(R.id.btn8); btn9 = (Button) findViewById(R.id.btn9); btn1.setOnClickListener(this); btn2.setOnClickListener(this); btn3.setOnClickListener(this); btn4.setOnClickListener(this); btn5.setOnClickListener(this); btn6.setOnClickListener(this); btn7.setOnClickListener(this); btn8.setOnClickListener(this); btn9.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn1: AccelerateDecelerateInterpolator accelerateDecelerateInterpolator = new AccelerateDecelerateInterpolator(); showTranslate(accelerateDecelerateInterpolator); break; case R.id.btn2: AccelerateInterpolator accelerateInterpolator = new AccelerateInterpolator(); showTranslate(accelerateInterpolator); break; case R.id.btn3: AnticipateInterpolator anticipateInterpolator = new AnticipateInterpolator(); showTranslate(anticipateInterpolator); break; case R.id.btn4: AnticipateOvershootInterpolator anticipateOvershootInterpolator = new AnticipateOvershootInterpolator(); showTranslate(anticipateOvershootInterpolator); break; case R.id.btn5: BounceInterpolator bounceInterpolator = new BounceInterpolator(); showTranslate(bounceInterpolator); break; case R.id.btn6: //参数:循环次数 CycleInterpolator cycleInterpolator = new CycleInterpolator(2); showTranslate(cycleInterpolator); break; case R.id.btn7: DecelerateInterpolator decelerateInterpolator = new DecelerateInterpolator(); showTranslate(decelerateInterpolator); break; case R.id.btn8: LinearInterpolator linearInterpolator = new LinearInterpolator(); showTranslate(linearInterpolator); break; case R.id.btn9: OvershootInterpolator overshootInterpolator = new OvershootInterpolator(); showTranslate(overshootInterpolator); break; } } private void showTranslate(Interpolator interpolator) { //创建平移动画对象 TranslateAnimation translateAnimation = new TranslateAnimation( //参数:Animation.RELATIVE_TO_SELF(先对自身) //Animation.RELATIVE_TO_PARENT(相对父容器) Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_PARENT, 0.5f, Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_PARENT, 0 ); //设置持续的时间 translateAnimation.setDuration(2000); //设置循环的次数 translateAnimation.setRepeatCount(0); //设置重复的模式,Animation.REVERSE:会进行一次倒序播放 translateAnimation.setFillAfter(true); //设置插值器 translateAnimation.setInterpolator(interpolator); //设置动画 imageView.startAnimation(translateAnimation); }}
demo地址:
http://download.csdn.net/detail/afanbaby/9877973
本人菜鸟一个,有什么不对的地方希望大家指出评论,大神勿喷,希望大家一起学习进步!
- Android Interpolator(插值器)的介绍和使用
- Android 插值器 Interpolator 介绍
- android 动画的Interpolator插值器
- android 动画的Interpolator插值器
- Android中补间动画4----Animation的插值器Interpolator的使用
- Android动画中Interpolator 加速器的使用
- ValueAnimator和自定义Interpolator的配合使用
- Android中使用Animation实现控件的动画效果以及Interpolator和AnimationListener的使用
- Android中使用Animation实现控件的动画效果以及Interpolator和AnimationListener的使用
- Android中使用Animation实现控件的动画效果以及Interpolator和AnimationListener的使用
- Android中使用Animation实现控件的动画效果以及Interpolator和AnimationListener的使用
- Android中使用Animation实现控件的动画效果以及Interpolator和AnimationListener的使用
- Android中使用Animation实现控件的动画效果以及Interpolator和AnimationListener的使用
- Android中使用Animation实现控件的动画效果以及Interpolator和AnimationListener的使用
- Android中使用Animation实现控件的动画效果以及Interpolator和AnimationListener的使用
- Android中使用Animation实现控件的动画效果以及Interpolator和AnimationListener的使用
- Android中使用Animation实现控件的动画效果以及Interpolator和AnimationListener的使用
- Android中使用Animation实现控件的动画效果以及Interpolator和AnimationListener的使用
- html轻松画出各种图形,附带解释
- python中的字符串
- WebApp基本画图
- 查询表内存大小
- 在js中变量的有效范围问题
- Android Interpolator(插值器)的介绍和使用
- Yarn 安装
- C++基础知识点
- 复习
- 方法:自定义Xcode模板样式
- osg自动生成法线的方法
- Unity shader学习笔记 (二)
- java中怎么调用sort方法
- Kotlin-Android世界的一股清流-Class类