自定义旋转图像视图

时间:2012-10-27 11:12:36

标签: android user-interface

imageView.SetRotation(theta)将视图围绕枢轴点居中,并将图像围绕此枢轴旋转θ度,这很好,但是如何旋转图像视图而不首先将其围绕此枢轴居中?

要清除我的问题,想象一下它上面的一块板和一个图像,setRotation做的是在这个图像的中间粘一个别针然后旋转它,我想要的是选择一个转轴 - 说图像的左下角是一个在那里钉,然后旋转它。

希望我的问题很明确,并且可以解决!

谢谢!

1 个答案:

答案 0 :(得分: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度。

问候