25补间动画

来源:互联网 发布:yum安装命令 编辑:程序博客网 时间:2024/05/21 09:01
  • 补间动画 只需告诉系统开始形状和坐标和终点位置和形状 期间动画由系统自行补画过渡 和Flash中概念一样
  • 注意补间动画哪怕移动了 其属性还是原来 比如图片A从X移动Y 那么其坐标的真实属性还是在X 也就是说只有点击X才能触发A图的点击事件
  • 在res中创建一个文件anim新建对应的文件即可

xml创建属性动画

这里写图片描述
android:fillAfter=”true”在xml中设置好像不起作用
anim_alpha.xml

<?xml version="1.0" encoding="utf-8"?><alpha xmlns:android="http://schemas.android.com/apk/res/android"    android:fromAlpha="1.0"    android:toAlpha="0.0"    android:duration="3000"    android:fillAfter="true"    android:repeatCount="3"    android:repeatMode="reverse"    android:interpolator="@android:anim/accelerate_decelerate_interpolator"    ><!--  取值范围  0.0-1.0   android:fromAlpha="1.0"   开始的透明度    android:toAlpha="0.0"    结束的透明度    android:duration="3000"   展示的时间    android:fillAfter="true"  是否保持最后的状态    android:repeatCount="3"  重复次数    android:repeatMode="restart"  执行方法    restart:正方向    reverse:反方向     android:interpolator="@android:anim/accelerate_decelerate_interpolator" 插值器     动画执行的速率     先加速后加速    --></alpha>

anim_rotate.xml

<?xml version="1.0" encoding="utf-8"?><rotate xmlns:android="http://schemas.android.com/apk/res/android"    android:fromDegrees="0"    android:toDegrees="360"    android:pivotX="50%p"    android:pivotY="50%p"    android:duration="3000"    android:interpolator="@android:anim/accelerate_decelerate_interpolator"    android:fillAfter="true"    android:repeatCount="3"    android:repeatMode="restart"    >    <!--      android:fromDegrees="0"从哪个角度开始旋转    android:toDegrees="360"  到那个角度    android:pivotX="50%p"   以谁为圆心   x    带p以父布局为参考物    不带p以自身参考物   android:pivotY="50%p"                 y    android:duration="3000"--></rotate>

anim_scale.xml

<?xml version="1.0" encoding="utf-8"?><scale xmlns:android="http://schemas.android.com/apk/res/android"    android:fromXScale="1"    android:fromYScale="1"    android:toXScale="2"    android:toYScale="2"    android:pivotX="50%"    android:pivotY="25%p"    android:duration="3000"    >    <!--      android:fromXScale="1"  x轴缩放的起始比例    android:fromYScale="1"    y轴缩放的起始比例    android:toXScale="2"      x轴缩放的结束比例    android:toYScale="2"      y轴缩放的结束比例    android:pivotX="50%"       x轴的缩放中心    android:pivotY="50%"     y轴的缩放中心    --></scale>

anim_set.xml

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android">    <rotate        android:fromDegrees="0"        android:toDegrees="720"        android:pivotX="50%"        android:pivotY="50%"        android:duration="3000"        ></rotate>    <translate        android:fromXDelta="0"        android:fromYDelta="0"        android:toXDelta="200"        android:toYDelta="500"        android:duration="3000"        ></translate>    <alpha        android:fromAlpha="1.0"        android:toAlpha="0.0"        android:duration="3000"        ></alpha></set>

anim_translate.xml

<?xml version="1.0" encoding="utf-8"?><translate xmlns:android="http://schemas.android.com/apk/res/android"    android:fromXDelta="0"    android:fromYDelta="0"    android:toXDelta="200"    android:toYDelta="200"    android:duration="3000"    >    <!--    android:fromXDelta="0"    android:fromYDelta="0"    android:toXDelta="200"    android:toYDelta="200"    android:duration="3000"    起始位置  到  结束位置    --></translate>

布局文件activity_main.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.qf.sxy.tweenanimation.MainActivity">    <LinearLayout        android:id="@+id/ll"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="horizontal">            <Button                android:id="@+id/btn_alpha"                android:layout_width="0dp"                android:layout_height="wrap_content"                android:layout_weight="1"                android:onClick="MyClick"                android:text="透明"/>            <Button                android:id="@+id/btn_rotate"                android:layout_width="0dp"                android:layout_height="wrap_content"                android:layout_weight="1"                android:onClick="MyClick"                android:text="旋转"/>            <Button                android:id="@+id/btn_scale"                android:layout_width="0dp"                android:layout_height="wrap_content"                android:layout_weight="1"                android:onClick="MyClick"                android:text="缩放"/>            <Button                android:id="@+id/btn_translate"                android:layout_width="0dp"                android:layout_height="wrap_content"                android:layout_weight="1"                android:onClick="MyClick"                android:text="位移"/>            <Button                android:id="@+id/btn_set"                android:layout_width="0dp"                android:layout_height="wrap_content"                android:layout_weight="1"                android:onClick="MyClick"                android:text="集合"/>    </LinearLayout>    <ImageView        android:id="@+id/iv"        android:src="@mipmap/cyddz"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_below="@id/ll" /></RelativeLayout>

MainActivity.java

package com.qf.sxy.tweenanimation;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.view.animation.AnimationUtils;import android.widget.ImageView;public class MainActivity extends AppCompatActivity {    private ImageView iv;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        iv = ((ImageView) findViewById(R.id.iv));    }    public void MyClick(View view) {        switch (view.getId()){            case R.id.btn_alpha://透明度动画                iv.startAnimation(AnimationUtils.loadAnimation(MainActivity.this,R.anim.anim_alpha));                break;            case R.id.btn_rotate://旋转动画                iv.startAnimation(AnimationUtils.loadAnimation(MainActivity.this,R.anim.anim_rotate));                break;            case R.id.btn_scale://缩放动画                iv.startAnimation(AnimationUtils.loadAnimation(MainActivity.this,R.anim.anim_scale));                break;            case R.id.btn_translate://位移动画                iv.startAnimation(AnimationUtils.loadAnimation(MainActivity.this,R.anim.anim_translate));                break;            case R.id.btn_set://集合动画                iv.startAnimation(AnimationUtils.loadAnimation(MainActivity.this,R.anim.anim_set));                break;        }    }}

java代码创建属性动画

这里写图片描述

布局文件activity_main.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.qf.sxy.tweenanimation.MainActivity">    <LinearLayout        android:id="@+id/ll"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="horizontal">        <Button            android:id="@+id/btn_alpha"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:onClick="MyClick"            android:text="透明"/>        <Button            android:id="@+id/btn_rotate"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:onClick="MyClick"            android:text="旋转"/>        <Button            android:id="@+id/btn_scale"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:onClick="MyClick"            android:text="缩放"/>        <Button            android:id="@+id/btn_translate"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:onClick="MyClick"            android:text="位移"/>        <Button            android:id="@+id/btn_set"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:onClick="MyClick"            android:text="集合"/>    </LinearLayout>    <ImageView        android:id="@+id/iv"        android:src="@mipmap/cyddz"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_below="@id/ll" /></RelativeLayout>

MainActivity.java

package com.qf.sxy.tweenanimation2;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.view.animation.AccelerateInterpolator;import android.view.animation.AlphaAnimation;import android.view.animation.Animation;import android.view.animation.AnimationSet;import android.view.animation.RotateAnimation;import android.view.animation.ScaleAnimation;import android.view.animation.TranslateAnimation;import android.widget.ImageView;public class MainActivity extends AppCompatActivity {    private ImageView iv;    private Animation animation;//声明动画对象    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        iv = ((ImageView) findViewById(R.id.iv));    }    public void MyClick(View view) {        switch (view.getId()){            case  R.id.btn_alpha:                //获取动画 参数1:开始的透明度   参数2;结束的透明度                animation = new AlphaAnimation(1.0f,0.0f);                animation.setDuration(3000);                animation.setFillAfter(true);                break;            case  R.id.btn_rotate:                /**                 * 旋转动画                 * 参数1:从哪个角度                 * 参数2:到那个角度                 * 参数3:x参照物的类型 自身   还是 父布局                 * 参数4:当前x坐标的值                 * 参数5:y参照物的类型 自身   还是 父布局                 * 参数6:当前y坐标的值                 */                animation = new RotateAnimation(0,                        720,                        Animation.RELATIVE_TO_PARENT,0.5f,                        Animation.RELATIVE_TO_PARENT,0.5f);                animation.setDuration(5000);                animation.setFillAfter(true);                break;            case  R.id.btn_scale:                animation = new ScaleAnimation(0.1f,3f,0.1f,3f,                        Animation.RELATIVE_TO_SELF,0.5f,                        Animation.RELATIVE_TO_SELF,0.5f                        );                animation.setDuration(3000);                animation.setFillAfter(true);                break;            case  R.id.btn_translate:                animation = new TranslateAnimation(0,200,0,200);                animation.setDuration(5000);                animation.setFillAfter(true);                animation.setInterpolator(new AccelerateInterpolator());//插值器    一直加速                break;            case  R.id.btn_set:                animationSet();                break;        }        //启动动画       // iv.startAnimation(animation);    }    //集合动画    private void animationSet() {        Animation rotate = new RotateAnimation(0,720,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);        Animation alpha = new AlphaAnimation(1.0f,0.0f);        //  true  使用的是set默认的插值器        //  false 使用自身动画的插值器        AnimationSet animationSet = new AnimationSet(false);        //添加动画到集合        animationSet.addAnimation(rotate);        animationSet.addAnimation(alpha);        //设置动画时间        animationSet.setDuration(3000);        //启动动画        iv.startAnimation(animationSet);    }}
0 0
原创粉丝点击