【Android开发小记--3】按钮视图动画几种效果

来源:互联网 发布:微团购软件哪个好 编辑:程序博客网 时间:2024/06/05 12:05
下面是几种按钮动画的效果实现,分别有代码实现和XML中编辑。


首先是效果图:


              



一、Button透明度变化


//=============================================================//             1------透明动画效果//=============================================================        findViewById(R.id.btnAlphaMe).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                //----1---代码编辑------------------------//                AlphaAnimation anim_alpha = new AlphaAnimation(0,1);//                anim_alpha.setDuration(1000);//动画时间//                v.startAnimation(anim_alpha);//启动动画                //----1----XML编辑---------------------------                v.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, R.anim.anim_alpha));            }        });


二、Button旋转效果


//==========================================================//              2------旋转动画效果//===========================================================        findViewById(R.id.btnRotateMe).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                //----2---代码编辑------------------------                //绕默认坐标旋转(控件的左上角)                RotateAnimation ra = new RotateAnimation(0,360);                //还可指明绕着某一点旋转,RotateAnimation(0,360,x坐标,y坐标)//                RotateAnimation ra = new RotateAnimation(0,360,200,500);                //使用相对坐标//                RotateAnimation ra = new RotateAnimation(0,360, Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);                ra.setDuration(1000);                v.startAnimation(ra);                //----2----XML编辑---------------------------//                v.startAnimation(AnimationUtils.loadAnimation(MainActivity.this,R.anim.anim_rotate));            }        });


三、Button移动效果


//==========================================================//              3------移动动画效果//===========================================================        findViewById(R.id.btnTranslateMe).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                //----3---代码编辑------------------------//                TranslateAnimation ta = new TranslateAnimation(0,200,0,200);//这里的200是相对位置//                ta.setDuration(1000);//                v.startAnimation(ta);                //----3----XML编辑---------------------------                v.startAnimation(AnimationUtils.loadAnimation(MainActivity.this,R.anim.anim_translate));            }        });


四、Button缩放效果


//==========================================================//              4------缩放动画效果//===========================================================        findViewById(R.id.btnScaleMe).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                //----4---代码编辑------------------------                //缩放中心为控件左上角//                ScaleAnimation sa = new ScaleAnimation(0,1,0,1);                //从某一点开始缩放//                ScaleAnimation sa = new ScaleAnimation(0,1,0,1,200,500);                //相对于自身的百分比                ScaleAnimation sa = new ScaleAnimation(0, 1, 0, 1, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);                sa.setDuration(1000);                v.startAnimation(sa);                //----4----XML编辑---------------------------//                v.startAnimation(AnimationUtils.loadAnimation(MainActivity.this,R.anim.anim_scale));            }        });


五、Button混合动画效果


//==========================================================//              5------动画效果混合//===========================================================        findViewById(R.id.btnAnimateMe).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                //----5---代码编辑------------------------                AnimationSet as = new AnimationSet(true);//是否共用动画补间(匀速、加速、减速)                as.setDuration(1000);                AlphaAnimation aa = new AlphaAnimation(0,1);                aa.setDuration(1000);                as.addAnimation(aa);                TranslateAnimation ta = new TranslateAnimation(200,0,200,0);                ta.setDuration(1000);                as.addAnimation(ta);                v.startAnimation(as);                //----5----XML编辑---------------------------//                v.startAnimation(AnimationUtils.loadAnimation(MainActivity.this,R.anim.anim));            }        });


六、Button动画监听


对动画进行监听,在动画结束时,出现一个Toast。


        findViewById(R.id.btnAnimateMe).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {//==========================================================//              6------动画效果监听//===========================================================                Animation a = AnimationUtils.loadAnimation(MainActivity.this,R.anim.anim);                a.setAnimationListener(new Animation.AnimationListener() {                    @Override                    public void onAnimationStart(Animation animation) {                    }                    @Override                    public void onAnimationEnd(Animation animation) {                        Toast.makeText(MainActivity.this, "Animation end", Toast.LENGTH_SHORT).show();                    }                    @Override                    public void onAnimationRepeat(Animation animation) {                    }                });                v.startAnimation(a);            }        });


七、自定义Button动画


对动画的效果实现自定义,实现一个button左右摇摆的效果。


//==========================================================//              7------自定义动画效果//===========================================================        findViewById(R.id.btnCustomAnim).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                CustomAnim ca = new CustomAnim();                ca.setDuration(1000);                v.startAnimation(ca);            }        });


自定义的动画 CustomAnim.java


public class CustomAnim extends Animation {    /*获取目标对象宽高*/    @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) { //(补间时间,变化对象)        //-----1------透明度变化效果//        t.setAlpha(interpolatedTime);        //----2-------这里是没有动画过渡的,是瞬间移动//        t.getMatrix().setTranslate(200,200);        //-----3------这里是一个过程//        t.getMatrix().setTranslate(200*interpolatedTime,200*interpolatedTime);        //------4-----左右摇摆效果        t.getMatrix().setTranslate((float)(Math.sin(interpolatedTime*20)*50),0);        super.applyTransformation(interpolatedTime, t);    }}



具体代码可点击







0 0
原创粉丝点击