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);