Android中组件的动画效果之平移动画

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_39056803/article/details/79375667

用到的方法是Animation translateAnimation = new TranslateAnimation(float begin_X, float end_X, float begin_Y,float end_Y);参数分别代表开始时X的坐标,结束时X的坐标,开始时Y的坐标,结束时Y的坐标。

我们可以通过

 DisplayMetrics metric = new DisplayMetrics();
 getWindowManager().getDefaultDisplay().getMetrics(metric);
 int screen_x = metric.widthPixels;     // 屏幕宽度(像素)
 int screen_y = metric.heightPixels;   // 屏幕高度(像素)

来获取屏幕的像素,从而计算更加合理的动画效果开始及结束的位置。

首先必须获取组件的id从而给组件添加动画

imageView = (ImageView) findViewById(R.id.imageview);//获取logo的id

然后创建动画对象,并设置效果

        Animation translateAnimation = new TranslateAnimation(0,100,0,100);//平移动画  从0,0,平移到100,100
        translateAnimation.setDuration(1500);//动画持续的时间为1.5s
        imageView.setAnimation(translateAnimation_left_up);//给imageView添加的动画效果
        translateAnimation.setFillEnabled(true);//使其可以填充效果从而不回到原地
        translateAnimation.setFillAfter(true);//不回到起始位置
        //如果不添加setFillEnabled和setFillAfter则动画执行结束后会自动回到远点
        translateAnimation.startNow();//动画开始执行 放在最后即可

另外,如果在动画结束后、开始时、进行时添加其他效果可以给translateAnimation对象设置监听器

translateAnimation.setAnimationListener(
                new Animation.AnimationListener() {
                    @Override
                    public void onAnimationStart(Animation animation) {//开始时

                    }

                    @Override
                    public void onAnimationEnd(Animation animation) {//结束时

                    }

                    @Override
                    public void onAnimationRepeat(Animation animation) {//进行时

                    }
                });

展开阅读全文

没有更多推荐了,返回首页