imageView.SetRotation(theta) 使视图围绕枢轴点居中,并将图像围绕该枢轴旋转 theta 度,这很好,但是如何在不首先将其围绕该枢轴居中的情况下旋转图像视图?
为了澄清我的问题,想象一个板和一个图像,setRotation 所做的是将一个大头针粘在这个图像的中间然后旋转它,我想要的是选择一个枢轴 - 比如说图像的左下角粘一个大头针然后然后旋转它。
希望我的问题很清楚,并且可以解决!
谢谢!
imageView.SetRotation(theta) 使视图围绕枢轴点居中,并将图像围绕该枢轴旋转 theta 度,这很好,但是如何在不首先将其围绕该枢轴居中的情况下旋转图像视图?
为了澄清我的问题,想象一个板和一个图像,setRotation 所做的是将一个大头针粘在这个图像的中间然后旋转它,我想要的是选择一个枢轴 - 比如说图像的左下角粘一个大头针然后然后旋转它。
希望我的问题很清楚,并且可以解决!
谢谢!
您可以使用以下方法设置新的枢轴点:
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 度。
问候