View的四种动画,

来源:互联网 发布:淘宝代金券怎么领 编辑:程序博客网 时间:2024/05/16 07:33

代码动画注释,后补xml的布局动画在res目录下一文件夹anim下的aa.xml布局

public class MainActivity extends ActionBarActivity {    private Button alphaBtn;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        alphaBtn = (Button) findViewById(R.id.btn_alpha);        alphaBtn.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {//                AlphaAnimation animation = new AlphaAnimation(0, 1);//                animation.setDuration(1000);//                v.startAnimation(animation);                v.startAnimation(AnimationUtils.loadAnimation(MainActivity.this,R.anim.aa));            }        });    }}

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


   private Button btnRotate;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        btnRotate = (Button) findViewById(R.id.btn_rotate);        btnRotate.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {//                RotateAnimation rotateAnimation = new RotateAnimation(0, 360, RotateAnimation.RELATIVE_TO_SELF, 0.5f, RotateAnimation.RELATIVE_TO_SELF, 0.5f);//                rotateAnimation.setDuration(1000);//                v.startAnimation(rotateAnimation);                v.startAnimation(AnimationUtils.loadAnimation(MainActivity.this,R.anim.anim));            }        });    }}

<rotate xmlns:android="http://schemas.android.com/apk/res/android"    android:toDegrees="360"    android:duration="1000"    android:pivotX="50%"    android:pivotY="50%"    android:fromDegrees="0"></rotate>

translate的xml

<translate xmlns:android="http://schemas.android.com/apk/res/android"    android:fromXDelta="0"    android:toXDelta="200"    android:fromYDelta="0"    android:toYDelta="200"    android:duration="1000"></translate>

scale的xml

<scale xmlns:android="http://schemas.android.com/apk/res/android"    android:fromXScale="0"    android:toXScale="1"    android:fromYScale="0"    android:toYScale="1"    android:duration="1000"    android:pivotY="50%"    android:pivotX="50%"    ></scale>

动画混合的  AnimationSet

public class MainActivity extends ActionBarActivity {    private AnimationSet set;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        set = new AnimationSet(true);        set.setDuration(1000);        final AlphaAnimation aa = new AlphaAnimation(0, 1);        aa.setDuration(1000);        set.addAnimation(aa);        TranslateAnimation ta = new TranslateAnimation(0, 200, 0, 200);        ta.setDuration(1000);        set.addAnimation(ta);        findViewById(R.id.btn_set).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {//                v.startAnimation(set);                v.startAnimation(AnimationUtils.loadAnimation(MainActivity.this,R.anim.anim));            }        });    }
混合动画的xml

<set xmlns:android="http://schemas.android.com/apk/res/android"    android:duration="1000"    android:shareInterpolator="true">    <alpha        android:fromAlpha="0"        android:toAlpha="1" />    <translate        android:fromXDelta="0"        android:toXDelta="300"        android:fromYDelta="0"        android:toYDelta="300" /></set>


自定义动画 例如 按钮摇头

public class CustomAnim  extends Animation{    //先于applyTransformation执行,得到控件长宽    @Override    public void initialize(int width, int height, int parentWidth, int parentHeight) {        super.initialize(width, height, parentWidth, parentHeight);    }    @Override    protected void applyTransformation(float interpolatedTime, Transformation t) {//        t.setAlpha(interpolatedTime); //interpolatedTime 值为0-1//        t.getMatrix().setTranslate(130 * interpolatedTime, 130 * interpolatedTime);        t.getMatrix().setTranslate((float) (Math.sin(interpolatedTime*15)*10),0);//控件摇头动画        super.applyTransformation(interpolatedTime, t);    }}

public class MainActivity extends ActionBarActivity {    private CustomAnim ca;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ca=new CustomAnim();        ca.setDuration(3000);        findViewById(R.id.btn_custom).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                v.startAnimation(ca);            }        });    }}

0 0