Android视图动画

	int mScreenWidth = getResources().getDisplayMetrics().widthPixels;//屏幕宽
    int mScreenHeight = getResources().getDisplayMetrics().heightPixels;//屏幕高

TranslateAnimation(平移动画)

ABSOLUTE

          int w1 = v.getWidth();//Button控件的宽度
          int h1 = v.getHeight();//Button控件的高度
          /**
	       *这里使用ABSOLUTE,说明位移是绝对的变化;
	       *控件View在x方向从0变化到w1;在y方向从0变化到h1,构造方法参数值如下所示
	       *起始点坐标(0,0)
	       *结束点坐标(w1,h1)
	       *正好移动了v的长度和宽度
           */
          TranslateAnimation t1 = new TranslateAnimation(
                 Animation.ABSOLUTE, 0, Animation.ABSOLUTE, w1,
                 Animation.ABSOLUTE, 0, Animation.ABSOLUTE, h1);
          t1.setDuration(1000);
          v.startAnimation(t1);

RELATIVE_TO_PARENT

   int w2 = v.getWidth();//Button控件的宽度
   int h2 = v.getHeight();//Button控件的高度
   float xRatio = w2 * 1.0f / mScreenWidth;//计算控件的宽度占父控件的宽度的比率
   float yRatio = h2 * 1.0f / mScreenHeight;//计算控件的高度度占父控件的宽度的比率
        /**
	     *这里使用RELATIVE_TO_PARENT,说明位移是相对于父控件的变化;
	     *控件View在x方向从0变化到xRatio;在y方向从0变化到yRatio,构造方法参数值如下所示
	     *起始点坐标 (mScreenWidth*0,mScreenHeight*0)
	     *结束点坐标 (mScreenWidth*xRatio,mScreenHeight*yRatio)
	     *看看这样一算是不是恰好移动了v的长度和宽度
         */
   TranslateAnimation t2 = new TranslateAnimation(
   Animation.RELATIVE_TO_PARENT, 0, Animation.RELATIVE_TO_PARENT, xRatio,
   Animation.RELATIVE_TO_PARENT, 0, Animation.RELATIVE_TO_PARENT, yRatio);
   t2.setDuration(1000);
   v.startAnimation(t2);

RELATIVE_TO_SELF

	    /**
	     *这里使用RELATIVE_TO_SELF,说明位移是相对于View自身的变化;
	     *控件View在x方向从0变化到1;在y方向从0变化到1,构造方法参数值如下所示
	     *起始点坐标(v.getWidth()*0,v.getHeight()*0)
	     *结束点坐标(v.getWidth()*1,v.getHeight()*1)
	     *计算出v的长度和宽度之后,得出v偏移也是自身的宽高
         */
   TranslateAnimation t3 = new TranslateAnimation(
   Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 1,
   Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 1);
   t3.setDuration(1000);
   v.startAnimation(t3);

RotateAnimation(旋转动画)

ABSOLUTE

          int w4 = v.getWidth();//Button控件的宽度
          int h4 = v.getHeight();//Button控件的高度
          /**
	       *这里使用ABSOLUTE,说明旋转的中心点是绝对的位置距离;
	       *控件View在x方向的中心点距离是w1;在y方向的中心点距离是h4,构造方法参数值如下所示
	       *旋转中心点的坐标(w4,h4)
	       *正好是v的长度和宽度
           */
          RotateAnimation r1 = new RotateAnimation(0, 360,
                            Animation.ABSOLUTE, w4,
                            Animation.ABSOLUTE, h4);
          r1.setDuration(1000);
          v.startAnimation(r1);

RELATIVE_TO_PARENT

	    int w5 = v.getWidth();//Button控件的宽度
        int h5 = v.getHeight();//Button控件的高度
        float xPivot = w5 * 1.0f / mScreenWidth;//计算控件的宽度占父控件的宽度的比率
        float yPivot = h5 * 1.0f / mScreenHeight;//计算控件的高度度占父控件的宽度的比率
        /**
	     *这里使用RELATIVE_TO_PARENT,说明旋转中心点的位置是相对于父控件来确定;
	     *控件View旋转的中心点在x方向是(mScreenWidth*xPivot)
	     *在y方向是(mScreenHeight*yPivot),构造方法参数值如下所示
	     *最后确定中心点的坐标(w5,h5),
	     *看看这样一计算恰好落在了v的左下角上面
         */       
        RotateAnimation r2 = new RotateAnimation(0, 360,
                            Animation.RELATIVE_TO_PARENT, xPivot,
                            Animation.RELATIVE_TO_PARENT, yPivot);
        r2.setDuration(1000);
        v.startAnimation(r2);

RELATIVE_TO_SELF

	    /**
	     *这里使用RELATIVE_TO_SELF,说明v旋转的中心点是是相对于View自身来确定;
	     *控件View中心点在x方向是(v.getWidth()*1),在y方向是(v.getHeight()*1),构造方法参数值如下所示
	     *中心点坐标正好了落在了v的左下角
         */
       RotateAnimation r3 = new RotateAnimation(0, 360,
                            Animation.RELATIVE_TO_SELF, 1,
                            Animation.RELATIVE_TO_SELF, 1);
       r3.setDuration(1000);
       v.startAnimation(r3);

ScaleAnimation(缩放动画)

ABSOLUTE

          int w6 = v.getWidth();//Button控件的宽度
          int h6 = v.getHeight();//Button控件的高度
          /**
	       *这里使用ABSOLUTE,说明缩放的中心点是绝对的位置距离;
	       *下面构造方法中前面四个参数确定变化的范围是从0~1
	       *控件View在x方向的缩放中心点位置是w6/2;在y方向的中心点距离是h6/2,构造方法参数值如下所示
	       *旋转中心点的坐标(w6/2,h6/2)
	       *正好是v的长度和宽度各一半
           */
           ScaleAnimation s1 = new ScaleAnimation(0, 1, 0, 1,
                            Animation.ABSOLUTE, w6 / 2,
                            Animation.ABSOLUTE, h6 / 2);
           s1.setDuration(1000);
           v.startAnimation(s1);

RELATIVE_TO_PARENT

	    /**
	     *这里使用RELATIVE_TO_SELF,说明v缩放的中心点是是相对于View自身来确定;
	     *控件View中心点在x方向是(v.getWidth()*0,5),在y方向是(v.getHeight()*0.5),构造方法参数值如下所示
	     *中心点坐标正好了落在了v的中心点
         */
      ScaleAnimation s3 = new ScaleAnimation(0, 1, 0, 1,
                            Animation.RELATIVE_TO_SELF, 0.5f,
                            Animation.RELATIVE_TO_SELF, 0.5f);
      s3.setDuration(1000);
      v.startAnimation(s3);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值