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

どんな助けでも本当に感謝します!!

4

2 に答える 2

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;
    }
于 2015-05-26T07:43:26.093 に答える
0

x^2 + y^2 = r^2

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

選択した r (円の半径) の値の方程式を満たすすべての (x,y) の周りでオブジェクトの中心をアニメートする必要があります。

私はグラフィックスの専門家ではないので、回答が簡潔であることをお許しください。

于 2013-01-20T10:53:42.730 に答える