2013-01-20 66 views
1

我是新来的,所以不要责怪我。我正在尝试开发一个可以制作音乐的Android应用程序。我正在试图制作一个旋转过一堆以圆形显示的按钮,以及何时播放每个按钮所代表的声音的栏。但是到目前为止,我设法通过设置代表圆心的x和y坐标来使图像在屏幕中间旋转,但是当我尝试将公式(x + radius * sin(angle)),(y + radius * cos(angle)),它只是移动我想要旋转的图像。所以基本上我试图旋转一个图像周围的按钮或坐标定义的圆周,而不是一个实际的圆形图像。所以我需要将图像或imageView围绕一个圆圈旋转,而不仅仅是一个点。如何在圆周上旋转图像?

我已经添加了代码屁股,所以你可以看看我做错了什么。

ImageView bara = (ImageView) findViewById(R.id.floating_image);

layoutParams[9] = new RelativeLayout.LayoutParams

(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);

 toop = Math.round(size.x/2);  // + 90*Math.sin(ANGLE)); 
     lefft = Math.round(size.y/2); // + 90*Math.cos(ANGLE)); 
     top = (int) toop; 
     left = (int) lefft; 
     layoutParams[9].setMargins(top, left, 0, 0); 
     bara.setLayoutParams(layoutParams[9]); 
     RotateAnimation rAnim = new RotateAnimation(0.0f, 360.0f, Animation.RELATIVE_TO_SELF, 0 , Animation.RELATIVE_TO_SELF, 0); 
     rAnim.setRepeatCount(Animation.INFINITE); 
     rAnim.setInterpolator(new LinearInterpolator()); 
     rAnim.setDuration(8000); 
     bara.startAnimation(rAnim); 

任何帮助将非常感激!

回答

0

代码如下:

private float mCalcX;//x-coord of object 
    private float mCalcY;//y-coord of object 
    private double mCenterX;//x-coord of center of circle 
    private double mCenterY;//y-coord of center of circle 
    private double mRadius;//circle radius 
    private double mAngleRadians;//angle of your object to draw in RADs 

    // whenever you draw the object, calculate the new X and Y coords 
    mCalcX = (float) (mCenterX+(mRadius*Math.cos(mAngleRadians))); 
    mCalcY = (float) (mCenterY+(mRadius*Math.sin(mAngleRadians))); 

    public void setRadius(double r) 
    { 
     mRadius = r; 
    } 

    public void setStartingAngle(double radians) 
    { 
     mAngleRadians = radians; 
    } 

    public void setRotationSpeed(double radians) 
    { 
     mRotationSpeed = radians; 
    } 

    public void increaseRotationAngle() 
    { 
     mAngleRadians += mRotationSpeed; 
    } 

    public void decreaseRotationAngle() 
    { 
     mAngleRadians -= mRotationSpeed; 
    } 
0

的x^2 + Y^2 = R^2

参考:http://www.mathwarehouse.com/geometry/circle/equation-of-a-circle.php

你应该动画周围所有的(X,Y)的对象的中心满足该方程对于你所选择的值r(圆的半径)。

我不是一个图形家伙,所以请原谅我的回答简洁。

+0

我真的不认为我知道该怎么做。我试图使一个循环,使图像转动1度,并在每个循环改变的移动位置( 360),但没有奏效 –