3

下のリンクから、ヘロップでダイヤルを中心に回転させました。

http://mobile.tutsplus.com/tutorials/android/android-sdk-creating-a-rotating-dialer/

これで、ダイヤラの横にアイコンが表示され、ダイヤラと一緒に円形のパスでダイヤラを中心に回転させる必要があります。

    private void rotateLogo(float degrees){
                 Matrix nMatrix = new Matrix();
                 Bitmap peopleOrg = BitmapFactory.decodeResource(getResources(), R.drawable.peoplelogo);
                 float translateX = dialerWidth / 2 - dialerWidth / 2;
                 float translateY = dialerHeight / 2 - dialerWidth / 2;
                 nMatrix.preTranslate(-turntable.getWidth()/2, -turntable.getHeight()/2);
                 nMatrix.postRotate(degrees, translateX, translateY);
                 nMatrix.postTranslate(turntable.getWidth()/2, turntable.getHeight()/2); 
                 Bitmap peopleScale = Bitmap.createBitmap(peopleOrg, 0, 0, peopleOrg.getWidth(), peopleOrg.getHeight(), nMatrix, true);
                 peopleLogo.setImageBitmap(peopleScale);        
                 peopleLogo.setImageMatrix(nMatrix);                  
    }

これにより、画像はダイヤラの中心点を中心にではなく、それ自体の中心を中心に回転します。私はどこが間違っているのかわかりません:(

更新

  1. 基本的に、ロゴが円形のパスを移動してクリック可能なビューになるようにする必要があります。
  2. rotateAnimを使用してみましたが、ビューがアニメーション化されず、onclickイベントを取得できません。
  3. 行列を使用して同じものを回転できるヘルプが必要です
4

1 に答える 1

2

peopleOrg幅と高さだけを回転させてみてください。

nMatrix.postRotate(degrees, peopleOrg.getWidth()/2, peopleOrg.getHeight()/2);

アップデート :

ロゴはクリック可能なビューにする必要があるとのことでしたが、ロゴ画像をダイヤラーとマージすることはできません。ダイヤラーの中心を中心にロゴ ビューを回転するには、ロゴ ビューを回転させるだけでなく、ロゴ ビューの (上、左) ポイントを実際に計算して移動する必要があります。

sineおよび関数を使用cosineして、ロゴ ビューを描画するための仮想円の円周上の点を取得します。

この投稿は計算に役立ちます :円周上の点を計算するにはどうすればよいですか?

于 2012-06-19T12:02:56.087 に答える