0

imageView.SetRotation(theta) 使视图围绕枢轴点居中,并将图像围绕该枢轴旋转 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 回答