zoukankan      html  css  js  c++  java
  • 通过xml文件来设置动画

    @android:anim/accelerate_interpolator: 越来越快

    @android:anim/decelerate_interpolator:越来越慢

    @android:anim/accelerate_decelerate_interpolator:先快后慢

    @android:anim/anticipate_interpolator: 先后退一小步然后向前加速

    @android:anim/overshoot_interpolator:快速到达终点超出一小步然后回到终点

    @android:anim/anticipate_overshoot_interpolator:到达终点超出一小步然后回到终点

    @android:anim/bounce_interpolator:到达终点产生弹球效果,弹几下回到终点

    @android:anim/linear_interpolator:均匀速度。

      ——AccelerateInterpolator:动画从开始到结束,变化率是一个加速的过程。
        ——DecelerateInterpolator:动画从开始到结束,变化率是一个减速的过程。
        ——CycleInterpolator:动画从开始到结束,变化率是循环给定次数的正弦曲线。
        ——AccelerateDecelerateInterpolator:动画从开始到结束,变化率是先加速后减速的过程。
        ——LinearInterpolator:动画从开始到结束,变化率是线性变化。

    设定动画延迟时间:android:startOffset="50"

    <?xml version="1.0" encoding="utf-8"?>  
    <set xmlns:android="http://schemas.android.com/apk/res/android"
        android:interpolator="@android:anim/accelerate_interpolator"
        android:shareInterpolator="true"
        android:startOffset="50">  
    
        <alpha
            android:duration="200"
            android:fromAlpha="1.0"
            android:toAlpha="0.0" />
        
    </set> 

    alpha.xml

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
        <alpha 
            android:fromAlpha="1.0"
            android:toAlpha="0"
            android:startOffset="200"
            android:duration="1000"/>
    
    </set>

    rotate.xml

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
        <rotate 
            android:fromDegrees="0"
            android:toDegrees="-360"
            android:pivotX="50%p"
            android:pivotY="50%"
            android:duration="1000"/>
    
    </set>

    scale.xml

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
        <scale
            android:fromXScale="1.0"
            android:toXScale="0"
            android:fromYScale="1.0"
            android:toYScale="0"
            android:pivotX="50%"
            android:pivotY="50%"
            android:duration="1000"/>
    
    </set>

    translate.xml

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
        <translate 
            android:fromXDelta="50%"
            android:toXDelta="100%"
            android:fromYDelta="50%"
            android:toYDelta="200%"
            android:duration="2000"/>
    
    </set>

    MainActivity.java

    package com.kale.anim;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.animation.AlphaAnimation;
    import android.view.animation.Animation;
    import android.view.animation.AnimationSet;
    import android.view.animation.AnimationUtils;
    import android.view.animation.RotateAnimation;
    import android.view.animation.ScaleAnimation;
    import android.view.animation.TranslateAnimation;
    import android.widget.ImageView;
    
    public class MainActivity extends Activity {
    
        ImageView iV;
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            iV = (ImageView)findViewById(R.id.imageView);
        }
        
    
        
    
        public void buttonListener(View v) {
            Animation anim = null;
            switch (v.getId()) {
            case R.id.alpha_button:
                anim = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.alpha);
                break;
            case R.id.rotate_button:
                anim = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.rotate);
                break;
            case R.id.scale_button:
                anim = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.scale);
                break;
            case R.id.translate_button:
                anim = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.translate);
                break;
            default:
                break;
            }
        
            //设置开始动画
            iV.startAnimation(anim);
        }
    }

    通过工具类就能加载xml文件,这样就能使用xml文件了。最后贴上xml的界面文件。

    <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"
        tools:context="${relativePackage}.${activityClass}" >
    
        <LinearLayout
            android:id="@+id/linearLayout1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="28dp"
            android:orientation="vertical" >
    
            <Button
                android:id="@+id/alpha_button"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:onClick="buttonListener"
                android:text="透明度改变" />
    
            <Button
                android:id="@+id/rotate_button"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:onClick="buttonListener"
                android:text="旋转动画" />
    
            <Button
                android:id="@+id/scale_button"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:onClick="buttonListener"
                android:text="缩放动画" />
    
            <Button
                android:id="@+id/translate_button"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:onClick="buttonListener"
                android:text="移动动画" />
        </LinearLayout>
    
        <ImageView
            android:id="@+id/imageView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/linearLayout1"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="56dp"
            android:src="@drawable/ic_launcher" />
    
    </RelativeLayout>

    关于动画速率设置。

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:shareInterpolator="true">

    ……
    </set>

    example:

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android"
        android:interpolator="@android:anim/accelerate_interpolator"
        android:shareInterpolator="true">
        <alpha 
            android:fromAlpha="1.0"
            android:toAlpha="0"
            android:startOffset="200"
            android:duration="1000"/>
    
    </set>

    代码中可以这样设置:

            AnimationSet set = new AnimationSet(true);
            set.setInterpolator(new DecelerateInterpolator());
  • 相关阅读:
    爬虫防止浏览器防止debug处理
    php
    代码日记
    Linux定时任务
    Linux 三剑客(Awk、Sed、Grep)
    golang中使用ETCD
    golang中使用mysql数据库
    golang中使用Redis
    Linux进阶知识和命令
    Linux核心命令使用方法
  • 原文地址:https://www.cnblogs.com/tianzhijiexian/p/3983616.html
Copyright © 2011-2022 走看看