0

imageView.SetRotation(theta)は、ピボットポイントの周りにビューを中央揃えし、このピボットの周りに画像をシータ度だけ回転させます。これは素晴らしいことですが、最初にこのピボットの周りに中央揃えせずに画像ビューを回転させるにはどうすればよいですか?

私の質問を明確にするために、ボードとその上の画像を想像してください。setRotationが行うことは、この画像の中央にピンを貼り付けて回転させることです。次に、ピボットを選択します。たとえば、画像の左下にピンを貼り付けて、次にそれを回転させます。

うまくいけば、私の質問は明確で、解決可能です!

ありがとう!

4

1 に答える 1

2

以下を使用して、新しいピボット ポイントを設定できます。

setPivotY(float pivotY);
setPivotX(float pivotX);

その後、上記の方法で設定された新しいピボット ポイントを使用して回転が行われます。

--編集済み--

ImageViewこのメソッドを使用して、レイアウトに を追加しました。

private ImageView addImageView(RelativeLayout mainLayout, int x, int y, int width, int height, OnClickListener onClickListener){
    ImageView imageView = new ImageView(this);
    imageView.setAdjustViewBounds(false);
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    params.height = height;
    params.width = width;
    imageView.setLayoutParams(params);
    imageView.setScaleType(ImageView.ScaleType.FIT_XY);
    imageView.setImageDrawable(getResources().getDrawable(R.drawable.marker_red));
    params.leftMargin = x - width/2;
    params.topMargin = y - height/2;
    imageView.setOnClickListener(onClickListener);
    mainLayout.addView(imageView);
    return imageView;
}

このパラメーターを使用してメソッドを呼び出しました。

    ImageView imageView;

    imageView = addImageView(mainLayout, 200, 300, 200, 200, new OnClickListener() {

        @Override
        public void onClick(View v) {
            imageView.setPivotX(200);
            imageView.setPivotY(200);
            imageView.setRotation(45);
        }
    });

最後に、画像をクリックするだけで、画像が 45 度回転します。

よろしく

于 2012-10-27T14:47:23.823 に答える