Android 动态创建的ImageView未旋转

Android 动态创建的ImageView未旋转,android,matrix,imageview,android-imageview,Android,Matrix,Imageview,Android Imageview,但是,当我从xml加载ImageView并旋转时,它会按预期工作 在类中创建ImageView时,未按预期工作 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.test_main); layout = (LinearLayout) findViewById(R.id.layout);

但是,当我从xml加载
ImageView
并旋转时,它会按预期工作 在类中创建
ImageView
时,未按预期工作

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.test_main);
    layout = (LinearLayout) findViewById(R.id.layout);
    //iv = ((ImageView)findViewById(R.id.image));

    iv = new ImageView(this);
    iv.setBackgroundResource(R.drawable.ic_launcher);
    layout.addView(iv);
    iv.setBackgroundResource(R.drawable.ic_launcher);
    iv.setAdjustViewBounds(true);
    iv.setImageMatrix(mMatrix);
    iv.setScaleType(ScaleType.MATRIX);
    rotateXform();
}

private void rotateXform() {
    if (isRotationOriginalValue) {
        mMatrix.postRotate((float) 180, centerX, centerY);
    } else {
        mMatrix.postRotate((float) -180, centerX, centerY);
    }
    isRotationOriginalValue = !isRotationOriginalValue;
    iv.setImageMatrix(mMatrix);
    iv.invalidate();
}

您不是在设置图像,而是在设置其背景

与任何其他视图一样,
ImageView
可以具有独立于图像本身的背景。通常背景隐藏在图像后面,但如果设置了填充或使用半透明图像,则会同时看到这两种情况

那就换一个吧

iv.setBackgroundResource(R.drawable.ic_launcher);


你会看到它被旋转。

我已经编辑了我的代码,它被部分复制了代码,并且丢失了,即使使用setImageResource()它显示为未旋转的ImageView假设你初始化
mMatrix=new Matrix()
在其他地方,我看不到你的代码有什么问题。它应该旋转!
iv.setImageResource(R.drawable.ic_launcher);