如何使用枢轴作为图像底部中心(下面给出的图像链接)为模拟时钟的秒针设置动画。
我正在使用的代码如下所示
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = (ImageView) findViewById(R.id.image);
final Handler handler = new Handler();
calendar = Calendar.getInstance();
seconds = calendar.get(Calendar.SECOND);
seconds++;
handler.postDelayed(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
Log.i("Canvas", "second is " + seconds);
// imageView.animate()
// .setDuration(1000)
// .rotation(6f * seconds);
RotateAnimation rotateAnimation = new RotateAnimation(
(seconds - 1) * 6, seconds * 6,
Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF, 0.5f);
rotateAnimation.setInterpolator(new LinearInterpolator());
rotateAnimation.setDuration(1000);
rotateAnimation.setFillAfter(true);
imageView.startAnimation(rotateAnimation);
handler.postDelayed(this, 1000);
seconds++;
}
}, 1000);
}
答案 0 :(得分:0)
秒针的长度约等于圆的半径或圆的直径的一半。您的第二只手的旋转原点需要成为该圆的中心。将圆的中心放在零x y原点。将秒针的底部放在零原点上。旋转相对于圆的中心。
答案 1 :(得分:0)
当我使用0.5f和1.0f作为旋转轴时,它起作用了。所需的更改是ImageView的高度和宽度应该是固定的。之前它被设置为WRAP_CONTENT。这导致图像在旋转前移动。
RotateAnimation rotateAnimation = new RotateAnimation(
(seconds - 1) * 6, seconds * 6,
Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF, 1f);