我已经使用 ObjectAnimator 将 Rotate 动画应用于按钮,而旋转似乎可以工作;枢轴点仍然是按钮的左上角。
主要活动
Button bt1;
float pivotX=0f;
float pivotY=0f;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt1 = (Button) findViewById(R.id.button1);
pivotX = bt1.getX() + (float)bt1.getWidth();// 500;// bt1.getHeight() ;
pivotY = bt1.getY() + (float)bt1.getHeight();// 500;// bt1.getWidth();
bt1.setPivotX(pivotX);
bt1.setPivotY(pivotY);
bt1.setOnClickListener(this);
}
private void rotate()
{
ObjectAnimator rotate = ObjectAnimator.ofFloat(bt1, View.ROTATION_X,360);
rotate.setDuration(2000);
AnimatorSet aSet = new AnimatorSet();
aSet.play(rotate);
aSet.start();
}
@Override
public void onClick(View v)
{
switch(v.getId())
{
case R.id.button1:
rotate();
break;
}
}
编辑:bt1.getX 和 bt1.getY 返回 0。一旦我知道为什么会更新。
编辑:这似乎也不起作用。
@Override
public void onWindowFocusChanged(boolean hasFocus)
{
// TODO Auto-generated method stub
super.onWindowFocusChanged(hasFocus);
//Here you can get the size!
width = bt1.getWidth();
height = bt1.getHeight();
}